快速了解!許理對(duì)區(qū)塊鏈技術(shù)瓶頸的幾點(diǎn)分析及應(yīng)對(duì)策略
5月13日,巴比特學(xué)院2期導(dǎo)師、HPB芯鏈聯(lián)合創(chuàng)始人&CTO許理講授了《區(qū)塊鏈技術(shù)瓶頸分析與解決方案探討》。許理從底層技術(shù)出發(fā),分析了目前區(qū)塊鏈存在的性能瓶頸問(wèn)題并提出相應(yīng)解決方案。
許理首先展示了一組數(shù)據(jù),描述當(dāng)前區(qū)塊鏈行業(yè)TPS現(xiàn)狀。信用卡每秒鐘可處理的交易數(shù)量是4.4萬(wàn)筆,天貓?jiān)?017年雙十一的交易量峰值32.5萬(wàn)次/秒。對(duì)比之下,比特幣和以太坊的處理速度顯得極低,這也是為什么基于區(qū)塊鏈的某些應(yīng)用目前很難跑起來(lái)的重要原因。
接下來(lái)許理以以太坊為研究對(duì)象,通過(guò)大量數(shù)據(jù),為我們揭示了當(dāng)前區(qū)塊鏈存在的瓶頸的主要原因。
第一部分:區(qū)塊鏈網(wǎng)絡(luò)交易流程
以太坊的交易分為交易發(fā)生、交易確認(rèn)與出塊兩部分。流程大致如圖所示:
交易發(fā)生
交易確認(rèn)與出塊
第二部分:性能瓶頸分析
網(wǎng)絡(luò)性能、計(jì)算與處理性能分析 網(wǎng)絡(luò)性能分析包括交易廣播、區(qū)塊同步廣播、總數(shù)據(jù)同步、存儲(chǔ)容量4部分。
第一,從交易廣播看,以太坊中任意一個(gè)節(jié)點(diǎn)任意一筆交易需廣播給臨近的25個(gè)節(jié)點(diǎn)。以TPS10萬(wàn)次計(jì)算,任意一個(gè)節(jié)點(diǎn)需要廣播的數(shù)據(jù)量為:144Byte*25個(gè)節(jié)點(diǎn)*100000筆/秒=360,000,000Bps=2.88Gbps。以上行速率4Mbps計(jì)算,10萬(wàn)次突發(fā)交易數(shù)據(jù),需要12分鐘才能全部廣播完成。
第二,從區(qū)塊同步廣播看,以TPS10萬(wàn)次/秒計(jì)算(峰值),每筆交易入塊數(shù)據(jù)144Byte,同步到臨近25個(gè)設(shè)備,每秒同步區(qū)塊數(shù)據(jù)量約為:360,000,000Byte,這要求每個(gè)節(jié)點(diǎn)理論上行帶寬必須達(dá)到2.88Gbps,才能完成全部區(qū)塊廣播。
第三,從總數(shù)據(jù)同步看,許理以某叫車(chē)平臺(tái)平均交易次數(shù)115筆/秒(均值)計(jì)算,每筆交易入塊數(shù)據(jù)144Byte,以10分鐘一個(gè)區(qū)塊計(jì)算,每個(gè)區(qū)塊數(shù)據(jù)量約為:115筆/秒*144Byte*600秒/筆=9,936,000Byte。任意一個(gè)節(jié)點(diǎn),需要廣播的數(shù)據(jù)量約為:9,936,000&TImes;25&TImes;8&TImes;2=3,974,400,000bits=3.9744Gbits。要求每個(gè)節(jié)點(diǎn)理論上行帶寬必須達(dá)到6.624Mbps,才能完成全部區(qū)塊廣播。
第四,從存儲(chǔ)容量看,以太坊中任意一個(gè)節(jié)點(diǎn),任意一筆交易,以TPS10萬(wàn)次計(jì)算,每秒賬本新增數(shù)據(jù)量:144Byte*10萬(wàn)筆/秒=14.4MBps,每天新增賬本的容量是:14.4MB*3600*24=1,244,160MB=1.2TB。
計(jì)算與處理性能分析
首先是驗(yàn)簽處理,任意節(jié)點(diǎn)收到一筆新的交易都需要做交易驗(yàn)證,這部分工作是通過(guò)CPU完成。以ETH采用的ECC算法為例,測(cè)試系統(tǒng)使用x86,i5雙核2.0G處理器,一次驗(yàn)簽耗費(fèi)時(shí)間大于20ms。意味著雙核全部做ECC驗(yàn)簽,每秒鐘處理50次。果遇到突發(fā)上萬(wàn)TPS時(shí),就會(huì)出現(xiàn)交易溢出,系統(tǒng)內(nèi)存耗盡,崩潰宕機(jī)現(xiàn)象。
其次是轉(zhuǎn)發(fā)處理,任意一筆新的交易同樣由CPU來(lái)進(jìn)行轉(zhuǎn)發(fā),ETH的處理方法是每發(fā)一筆交易,在廣播交易事件時(shí),都會(huì)導(dǎo)致開(kāi)啟一個(gè)線程。當(dāng)交易量上升時(shí),線程會(huì)逐漸累積,累積過(guò)大,可能導(dǎo)致golang虛擬機(jī)宕機(jī)。而且當(dāng)交易量較大時(shí),因事件機(jī)制不完善,導(dǎo)致交易廣播線程不能順序處理,使得某個(gè)賬戶發(fā)送的交易不能按照nonce的順序廣播,其他節(jié)點(diǎn)會(huì)拋棄相應(yīng)交易。
第三部分:解決方案——縱向加速、橫向加速
為突破當(dāng)前瓶頸,許理提出了兩個(gè)解決方案:縱向加速以及橫向加速。
所謂縱向加速解決方案是基于傳統(tǒng)概念鏈技術(shù)基礎(chǔ)之上,優(yōu)化減少同步數(shù)據(jù)量,提升網(wǎng)絡(luò)帶寬及處理性能的一系列解決方案。具體特點(diǎn)是:
1.采用數(shù)據(jù)中心,數(shù)據(jù)集群;
2.減少同步數(shù)據(jù)量;
3.提高各節(jié)點(diǎn)網(wǎng)絡(luò)帶寬是關(guān)鍵;
4.提高各節(jié)點(diǎn)并發(fā)處理性能;
橫向解決方案包括兩種,一種是建立分層結(jié)構(gòu)(Layer2),把不必要的交易從最底層的主鏈分離到附屬結(jié)構(gòu)上,比如比特幣的閃電網(wǎng)跟隨的就是這個(gè)思路。另一種是分片技術(shù)(Sharding),用于改進(jìn)主鏈本身的協(xié)議來(lái)提高它的性能。