擴容,解決區塊鏈的阿克琉斯之踵——區塊鏈技術引卷之二

買賣虛擬貨幣

FENBUSHI DIGITAL × 通證通研究院 聯合出品

文:宋雙傑,CFA;Rin,FENBUSHI投資總監;田志遠;Haru

特別顧問:沈波;JX

導讀

隨著區塊鏈的鏈上交易數量飆升,區塊鏈網路變得日益擁堵,系統的擴容勢在必行。

摘要

隨著區塊鏈技術的普及,主流公鏈如BTCETH的交易數量不斷增加,以及ETH鏈上部分現象級DApp的火爆,區塊鏈網路擁堵現象逐漸顯現。公有區塊鏈出於非中心化與保證網路安全的考慮,形成了一定的共識機制,同時對區塊間隔時間和區塊體積大小有所限制,從而能夠處理的交易數量不足以支撐高併發的應用,區塊鏈擴容勢在必行。

我們借鑑計算機網路通訊體系架構的OSI模型,將區塊鏈邏輯架構劃分為三層。現有的擴容方案分別針對不同層級進行改進,分為第0層擴容、鏈上擴容和鏈下擴容。其中鏈上擴容透過改變基本協議提升區塊鏈效率。鏈下擴容不改變基本協議,在應用層進行改變提升擴充套件性。第0層擴容透過改變區塊鏈底層資料傳輸協議提升區塊鏈可擴充套件性。

鏈上擴容方案又包括資料層改進方案、共識層改進方案和網路層改進方案,基本思路是增加區塊大小(直接以及變相)或減少區塊驗證傳播時間和形成共識時間。

鏈下擴容方案主要有狀態通道、側鏈、跨鏈和鏈下計算四種方式,思路均為將部分鏈上交易轉移到鏈下執行,減輕鏈上處理壓力,提升整體效率。

迄今為止,每一種擴容方案都為改善可擴充套件性提供瞭解決思路。目前也已經出現多種方案結合的方式提升可擴充套件性,如多種共識機制的結合、ETH籌劃中的共識機制改進與分片相結合等。

這些方案均存在不同程度的優勢和劣勢,有些方案的技術實現較為複雜,目前落地仍存在難度。針對不同的應用場景與需求,選擇適合的區塊鏈擴容技術或是解決目前區塊鏈網路擁堵問題的主要途徑。

風險提示:現有方案尚未完全成熟、落地難度較大

目錄

1   擁堵的區塊鏈

2   公鏈在安全與效率上的折衷是擁堵的原因

3   擴容分歧

4   現有擴容方案

4.1   鏈上擴容

4.2   鏈下擴容

4.3   第0層擴容

5   總結

正文

1擁堵的區塊鏈

BTC:最高超過19萬筆未確認交易。BTC區塊大小的上限為1MB,每10分鐘左右產生一個區塊,從歷史資料來看,BTC的TPS(Transactions Per Second,每秒事務處理量)約為3.5(理論TPS可達到7)。交易筆數較少時不存在擁堵問題,但是隨著交易筆數的飆升,擁堵日益顯現,根據Blockchain.info資料,BTC未確認交易數最高時在19萬筆左右。

ETH:一隻貓造成的擁堵。2017年11月底,虛擬養貓遊戲CryptoKitties(又名“雲養貓”)上線後過於火爆導致ETH網路出現嚴重擁堵,2017年12月5日ETH未處理交易達到峰值19800筆。

伴隨擁堵產生的另一個問題是交易費用的上升。交易簽名後廣播,並進入礦工節點的待打包交易池,礦工會優先服務手續費開價更高的交易,當出現擁堵時手續費較低的交易很難被及時確認。以BTC為例,擁堵時單筆交易手續費按法幣為標準的話最高達到約162美元(資料來源:Blockchain.info)。

擁堵的區塊鏈網路儼然已經無法滿足基本的交易需求,擴容勢在必行,那麼什麼是擴容?區塊鏈領域的擴容即圍繞如何在“更短的時間實現更多的交易”,增強區塊鏈的可擴充套件性(scalability)。可擴充套件性是指系統、網路或程序處理越來越多的工作的能力,或者適應增長而擴充套件的潛力。

2公鏈在安全與效率上的折衷是擁堵的原因

BTC的區塊體積大小約為1MB,出塊間隔平均約為10分鐘。但為什麼是1MB和10分鐘呢?為什麼不能增加區塊大小或減短出塊間隔時間以加快交易確認的效率呢?

(1)由於每筆交易需要網路中每個全節點處理和驗證,區塊體積越大擴散至整個網路所需的時間越多。

根據Decker和Wattenhofer2013年關於BTC的研究表明,區塊的平均擴散時間約等於2秒加0.08秒/KB,即1MB大小的區塊擴散需要約84秒,Rizun在2015年關於BTC的研究表明,隨著交易擴散技術的提升,擴散時間降低到約0.008秒/KB,即1MB大小的區塊擴散需要約10秒。隨著節點數的增長區塊鏈將變得更加緩慢,因為節點間的延遲會隨著新增節點數呈對數性增長。

(2)區塊體積變大和出塊間隔過短將不可避免地導致孤塊率上升。

出塊間隔主要由驗證時間、傳播時間和共識時間構成(就BTC而言即為PoW時間),驗證和傳播時間之和遠小於10分鐘。根據公式

分叉概率的影響因素包括t90th和tB,其中t90th為新區塊傳播到90%以上節點用時,tB為出塊間隔。在其他條件不變的情況下,分叉概率隨t90th增加而上升,隨tB降低而上升。

增大區塊體積會增加傳播用時(即t90th增加),這與縮短出塊間隔(即tB降低)都意味著分叉概率上升,即一個新的區塊尚未充分全網廣播之前,就有另一個礦工在同樣的高度產出了另一個新的區塊的可能性增加,導致網路孤塊率的上升。

(3)區塊體積變大和出塊間隔縮短帶來的運營成本上升可能導致算力中心化。

區塊體積過大帶來的另一個問題是全節點運營成本增長。區塊大小按照1MB計算,則一年大約需要50GB儲存空間,其他條件不變的情況下,區塊變大導致儲存成本和頻寬成本都將上升。成本上漲和孤塊率的增加進一步可能將導致普通計算機使用者甚至小礦池退出,進而算力呈中心化趨勢以及安全性減弱。

BTC的選擇是網路效率和網路安全之間的折衷。雖然1MB和10分鐘並不一定是最佳選擇,透過縮短出塊間隔和擴大區塊確實可以提升交易處理能力,而且事實上人們也已經這樣做了,但是透過這種方式所能實現的提速畢竟是有限的,非中心化運作的公開區塊鏈在效率和非中心化之間進行了折衷。

相比於BTC,ETH的出塊間隔縮短到了15秒,並且沒有限定區塊大小,ETH出現擁堵的原因是什麼呢?

ETH雖然沒有區塊大小限制,但是存在“區塊GasLimit”(區塊燃料限制)。ETH中任何一筆交易都需要gas(燃料)才能進行,gas對應BTC交易中直接以BTC支付的手續費,實際上gas也需要用ETH購買。注意區塊GasLimit不同於交易中的gasLimit,交易gasLimit是指該筆交易中交易者自行設定的gas使用限制,而區塊GasLimit是指每個區塊最多可使用的gas限制。

比如交易池中有3筆交易,分別消耗10gas、20gas、30gas,而當前的區塊GasLimit是60gas,那麼以上3筆交易都可以被打包,如果區塊GasLimit是40,則最多隻有兩筆交易可以被打包。

也就是說,ETH在有限的時間內(15秒)只能處理有限的交易(由區塊GasLimit確定),如果交易數量超出了其承載能力,依然會造成擁堵。

另外值得一提的是ETH的GasLimit本身存在自動調整機制和礦工投票機制。

其中自動調整機制是指當父區塊的gas使用量超過父區塊GasLimit的2/3時,將按照一定速度增加當前區塊的GasLimit,但是最大不能超過TGL(TargetGasLimit,目標燃料限制)。TGL由礦工投票確定,最小不能小於MGL(MinGasLimit,最小燃料限制),MGL初始預設值5000(創世區塊的GasLimit)。但是自動調整相對而言比較緩慢,當交易量在短時間內大幅增長時很難迅速調整到位。

礦工投票機制是指礦工可以投票決定TGL的大小,如果當前區塊的GasLimit小於TGL,則增加區塊GasLimit儘快達到TGL。但是區塊打包的交易資訊越多則區塊相應越大,傳播時間越長,進而導致叔塊(uncle block)率的上升,礦工利益受損。因此儘管存在投票機制,但礦工並沒有很強的意願投票提升TGL。

注:孤塊(orphan block)在ETH中被稱為“叔塊”。在BTC中,孤塊將被拋棄且發現孤塊的礦工沒有任何獎勵。而ETh25秒的出塊間隔導致分叉和孤塊會大量產生,降低了整個網路的安全性,因此ETH鼓勵礦工在新區塊中引用叔塊,發現叔塊也能獲得獎勵。

3擴容分歧

區塊鏈擴容是大勢所趨,但在具體如何擴容上存在巨大分歧。

打造一個可擴充套件的中心化網路並非難事,難的是實現可擴充套件性、非中心化和安全性三方面的完美組合。打造一個可擴充套件的中心化網路並非難事,現有的中心化支付系統早已實現了這一點,比如支付寶在2017年雙十一期間TPS最高達到25.6萬。(當然TPS並非越高越好,就像在一個小鎮建一條10車道公路並沒有太大實際意義。)對於傳統的中心化系統,透過增加更多的伺服器可以實現擴充套件,在非中心化世界中,人們不得不面臨非中心化、安全性與高效率之間的權衡。

區塊鏈可擴充套件性不可能三角(Scalability Trilemma)是指區塊鏈系統一般只能實現非中心化、安全性和可擴充套件性中的兩個屬性。想要顯著提升可擴充套件性,則必然要在安全性和非中心化上有所捨棄。

The trilemma claims that blockchain systems can only at most have two of the following three properties: Decentralization, Scalability, Security.

——Sharding FAQs

BTC和ETH重點關注的是安全性和非中心化,一定程度上犧牲了可擴充套件性,事實上它們的顛覆性意義本身也不在於交易效能。市場上不斷有新的專案以犧牲非中心化或安全性為代價提升可擴充套件性,但能否奏效尚待驗證。

4現有擴容方案

我們透過借鑑計算機網路通訊體系架構的OSI模型,將區塊鏈邏輯架構劃分為三層。其中第0層(Layer 0)對應OSI模型的1-4層(底層協議),其中包括傳輸層。第1層和第2層對應OSI模型的5-7層(上層協議),第1層(Layer 1)包括資料層、網路層、共識層和激勵層,第2層(Layer 2)包括合約層和應用層。

傳輸層:為區塊鏈提供底層資料傳輸支撐。

資料層:封裝了底層資料區塊、鏈式結構、雜湊函式、Merkle樹、非對稱加密和時間戳等技術,是區塊鏈底層的資料結構。

網路層:包括分散式組網機制、資料傳播機制和資料驗證機制等。

共識層:封裝了各類共識演算法,解決在決策權分散的分散式系統中的共識問題,如PoW、PoS、DPoS和BFT類共識。

激勵層:主要包括髮行機制和分配機制等,解決對守約節點的獎勵和對違約節點的懲罰問題。

合約層:封裝各類指令碼程式碼、演算法機制和智慧合約等,是區塊鏈可程式設計特性的基礎。

應用層:封裝了區塊鏈的各種應用場景和案例,如可程式設計貨幣、可程式設計金融和可程式設計社會等即搭建在應用層上。

各種擴容方案分別針對區塊鏈邏輯架構的不同部分進行改進。根據對區塊鏈的邏輯架構不同部分改進可相應將擴容方案分為三類,分別為第0層擴容、第1層擴容和第2層擴容。第0層擴容即透過改變區塊鏈底層資料傳輸協議提升可擴充套件性;第1層擴容透過改變公鏈基礎協議如區塊資料結構、共識機制、激勵措施等提升擴充套件性;第2層擴容不改變公鏈基本協議,在應用層透過鏈下方式提升可擴充套件性。

4.1   鏈上擴容

第1層擴容,即鏈上(On-Chain)擴容,透過最佳化、改進公鏈基本協議提升擴充套件性。具體包括資料層改進方案、網路層改進方案和共識層改進方案。

(1)資料層改進方案

包括擴塊、隔離驗證(SegWit,segregated witness)和有向無環圖(DAG,Directed Acyclic Graph)等方案。

1)擴塊。擴塊方案即增加區塊容量,從而單個區塊包含的交易數量相應增加,實現擴容目的。以BCH為例,2017年BCH區塊大小提升至8M,今年5月又再次提升至32M。從理論上說,在平均區塊間隔固定的情況下,網路TPS上限與區塊大小成正比,BCH今年九月進行的壓力測試也證明其單個區塊的交易承載能力高於BTC。但由於之前提到的節點處理能力、算力中心化等問題,區塊的大小不能無節制隨意擴大。因此這種方式一方面對於效率提升有限,另一方面存在可能導致算力中心化的問題。

舉例:客車由一層變為兩層,載客空間變大,能夠運載更多乘客。

2)隔離見證。被打包進區塊的交易資料包括數字簽名(scriptSig)和其他交易資訊,數字簽名便佔用了全部交易資料60-70%的空間,但是數字簽名僅僅在驗證階段需要。隔離見證即隔離(segregate)數字簽名(witness)與其他交易資料,提升單個區塊所能容納的交易數量,透過“縮小”交易資料變相擴大了區塊大小,如BTC就是採用了隔離見證的擴容方式。同擴塊方案一樣,隔離見證對於處理效率的提升也是有限度的。

舉例:客車容量不變的情況下,將乘客的行李全部放到車廂頂部,從而能夠運載更多的乘客。

3)DAG。DAG是無迴路的有向圖,即從一個頂點沿著若干邊前進(有向),但永遠不能回到原點(無環)。以IOTA為例,節點發起交易時只需要找到網路中的任意兩筆交易,驗證它們的合法性,指向它們並廣播到網路。這筆交易會以同樣的方式被驗證,被驗證的次數越多,交易的狀態就越穩定。DAG避免了因網路延遲和資料同步造成的時間浪費,可以做到高併發,存在的主要問題包括雙花和影子鏈攻擊等。

(2)網路層改進方案

分片(Sharding)。分片是指將區塊鏈分成不同部分,即多個分片,分片可以並行處理事務,從而提升了單位時間內處理交易的數量。假設網路存在1000個節點,將網路劃分成10個分片(每分片100節點)。若1組分片能在一定時間內驗證400筆交易,那10組分片便能在同樣時間內驗證4000筆交易。

舉例:超市裡有100個收銀員,但只有1個收銀臺,分片後增加9個收銀臺,每個收銀臺分別有10個收銀員負責結賬。

(3)共識層改進方案

包括拜占庭容錯(BFT,Byzantine Fault Tolerance)類共識、非BFT類共識和混合共識(Hybird Consensus)。

1)BFT類共識。不同於非BFT類共識的間接達成共識(即參與者並非直接決定共識的具體內容),BFT類共識下,參與者透過投票決定共識內容直接達成共識,在參與者數量不是很多的情況下(一般BFT網路直接參與共識的節點在100個以內),TPS可以達到10000。

非BFT類共識下存在分叉可能,以BTC為例,通常需要6個區塊才能以很高的概率確認某個交易被網路確認,而在BFT共識下,達成一致的共識不會被丟棄,因此BFT的響應時間(交易從提出到被確認的時間)也明顯優於非BFT類共識。BFT類共識的主要問題在於網路規模、容錯率等方面。

2)非BFT類共識。透過降低共識演算法複雜度和減少傳播節點數量等方式減少驗證時間、傳播時間及形成共識時間,能夠顯著提升處理效率。

PoS(Proof of Stake,權益證明)。相比於PoW(Proof of Work,工作量證明),PoS以權益(持有通證數量×通證持有時間)代替算力決定區塊記賬權,減少了PoW工作量證明過程的能源消耗,在一定程度上解決了可擴充套件性問題。但是又帶來了馬太效應、記賬激勵、無利害關係攻擊(Nothing-at-Stake attack)等新的問題。

DPoS(Delegeted Proof of Stake,委託權益證明)。DPoS在PoS的基礎上將記賬人的角色專業化,通證持有人透過權益選出多個授權代表(EOS有21個“超級節點”,Bitshares有101位代表,理論上單數節點均可),授權代表輪流記賬。這種共識下效率得到了明顯提升,但是犧牲了非中心化。

3)混合共識。顧名思義,混合共識指結合了多種方式的共識機制,如Casper採用了PoW+PoS,EOS採用了DPoS+BFT。

4.2   鏈下擴容

第2層擴容,即鏈下(Off-Chain)擴容,不改變公鏈基本協議,透過鏈下在應用層進行改進提升擴充套件性。第2層擴容允許使用者在客觀上沒有第1層安全的環境中進行交易,安全性由第1層支援,具體包括狀態通道(State Channel)、側鏈(Side-Chain)、跨鏈(Cross-Chain)和鏈下計算(Off-Chain Computation)等方案。

(1)狀態通道。狀態通道的思路是將部分交易轉移到鏈下,只將通道開啟和關閉時的狀態記錄在區塊鏈上。區塊鏈由結算平臺變為清算平臺,狀態通道內的交易視為結算,在鏈下實現,需要脫離狀態通道進行交易時視作清算,透過區塊鏈實現。這樣大大降低了區塊鏈上的交易數量,間接提升了交易處理能力並相應降低了交易手續費。如閃電網路(Lighting Network)和雷電網路(Raiden Network)就是採用了狀態通道方案。

狀態通道的簡化工作流程如下:

1)A和B之間開啟狀態通道,將通道開放記錄在區塊鏈上。

2)通道在任意時間內保持開放,A和B可以進行無限次交易,每次交易更新狀態,但不提交到區塊鏈上。

3)A和B想要關閉狀態通道時,將最終狀態記錄在區塊鏈上。

其中第1步和第3步包含區塊鏈上的操作,需要支付交易費並等待確認,第2步完全在鏈下進行。

(2)側鏈

側鏈這一概念是相對主鏈而言的,透過將部分操作轉移到側鏈以解決主鏈的效能和功能瓶頸等問題。以Plasma為例,Plasma是執行在根鏈(ETH主鏈)上的一系列智慧合約。Plasma區塊鏈為樹狀結構,每個分支為一條子鏈,一般情況下只將子鏈區塊頭的雜湊值提交到根鏈,用於驗證區塊有效性。當有欺詐證明被提交到根鏈,區塊會回滾並且懲罰區塊建立者。由於根鏈只需要處理子鏈的少量提交,根鏈的交易負荷有效降低。Plasma與狀態通道的主要區別在於並非所有參與者都要線上更新狀態,參與者也不需要把資料提交到根鏈執行和確認。

舉例:法院體系中下級法院可同時處理多起案件,上級法院監督下級法院,當有人質疑下級法院的判決可以上訴。

(3)跨鏈

相比於側鏈,跨鏈的概念更加廣泛,跨鏈方案的主要目的是實現資產、狀態等跨鏈轉移交換,鏈與鏈之間不僅僅是主側的關係。以Cosmos為例,其網路由Hub(樞紐)和Zone(分割槽)兩部分組成,每個分割槽可以擁有多種通證,分割槽之間透過樞紐進行交易,因此跨鏈方案除了能夠實現資產、狀態的跨鏈轉移交換也可將鏈上交易轉移至鏈下進行從而減輕鏈上交易處理壓力。

Cosmos基於Tendermint共識,支援交易快速處理。Tendermint共識過程與BFT類共識類似,開始時節點對新一輪的區塊進行提議,合格的提議區塊在預投票(Prevote)環節獲得2/3以上投票則進入預認可(Precommit)環節,再次獲得2/3以上的預認可後即獲得正式認可(Commit)。

(4)鏈下計算

鏈下計算最初針對ETH提出,由於ETH存在區塊GasLimit,計算量較大的交易消耗gas較多將導致擁堵(比如單個區塊只能打包一筆交易)甚至無法執行(單筆交易消耗gas超過區塊GasLimit)。鏈下計算的思路是將複雜的交易放到鏈下執行,執行結果提交回鏈上,減輕鏈上處理壓力。

以Truebit為例,Truebit由求解遊戲和驗證遊戲構成。

求解遊戲中,求解者執行智慧合約的計算,同時提交押金和問題結果,如果正確,返還押金並獲得獎勵,如果求解者欺詐,押金將被沒收。

是否存在欺詐透過驗證遊戲解決。驗證者在鏈下對求解者的工作進行檢查,如果沒有驗證者發出質疑,系統將會接受結果,如果出現質疑,由裁判在鏈上裁定質疑,鏈上裁定的工作量與鏈下執行任務的工作量相比微不足道。如果確實存在欺詐,則沒收欺詐者的押金,如果不存在欺詐,質疑者將為誤報消耗的資源支付一定的費用。

第n層(Layer-n)擴容。在第2層擴容的基礎上有人提出了第n層擴容,即第2層擴容的進一步延伸,比如,在從ETH分支的Plasma鏈的基礎上,可以建立更多的Plasma鏈。

4.3   第0層擴容

第0層擴容透過最佳化區塊鏈底層資料傳輸協議提升區塊鏈可擴充套件性,不改變區塊鏈的上層架構。如bloXroute透過提升節點間區塊傳播速度,從而在保證非中心化和安全性的基礎上顯著提升鏈上可擴充套件性。該專案透過提供BDN(Blockchain Distribution Network,區塊鏈分佈網路)提升節點之間通訊的速度,改善節點同步情況,各節點透過bloXroute提供的對等節點(Peer Node)接入BDN網路,對等節點作為區塊鏈應用程式和BDN的中間閘道器。

5總結

隨著區塊鏈技術的普及,區塊鏈擁堵現象逐漸顯現。一方面,公有區塊鏈出於非中心化與保證網路安全的考慮,限制了區塊間隔時間和區塊大小,從而在有限時間內只能處理一定數量的交易;另一方面也反映出目前的公鏈效能還不足以支撐高併發的應用,區塊鏈擴容勢在必行。

我們借鑑計算機網路通訊體系架構的OSI模型,將區塊鏈邏輯架構劃分為三層。現有的擴容方案分別針對不同層級進行改進,分為第0層擴容、鏈上擴容和鏈下擴容。

鏈上擴容方案又包括資料層改進方案、共識層改進方案和網路層改進方案,基本思路是增加區塊大小(直接以及變相)或減少區塊驗證傳播時間和形成共識時間。

鏈下擴容方案主要有狀態通道、側鏈、跨鏈和鏈下計算四種方式,思路均為將部分鏈上交易轉移到鏈下執行,減輕鏈上處理壓力,提升整體效率。

迄今為止,每一種擴容方案都為改善可擴充套件性提供瞭解決思路。目前也已經出現多種方案結合的方式提升可擴充套件性,如多種共識機制的結合、ETH籌劃中的共識機制改進與分片相結合等。這些方案均存在不同程度的優勢和劣勢,有些方案的技術實現較為複雜,目前落地仍存在難度。針對不同的應用場景與需求,選擇適合的區塊鏈擴容技術或是解決目前區塊鏈網路擁堵問題的主要途徑。

附註:

因一些原因,本文中的一些名詞標註並不是十分精準,主要如:通證、數字通證、數字currency、貨幣、token、Crowdsale等,讀者如有疑問,可來電來函共同探討。

往期回顧

  • 坎坷的“共識機制”之路——區塊鏈技術引卷之一



免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;