技術分析新聞消息

簡單易懂的區塊鏈擴容方案全解 | Anue鉅亨 – 鏈文


每一條區塊鏈,都面臨着由去中心化、安全性、可擴展性組成的不可能三角。其中,去中心化是區塊鏈技術最大的優勢,需要優先保障;而若是想建立長久、可持續的生態,安全性也是不得不做到極致的要素。這就造成了當前公鏈普遍可擴展性低下的現狀。

圖片

如何在平衡去中心化與安全性的前提下,提升區塊鏈的吞吐量=擴容,是急需解決的問題。近年來,ETH2.0 作為以太坊的擴容願景,即使經歷了多次跳票,仍在世界範圍內飽受關注、備受期待。由此也能看出,擴容已經成為了公鏈用戶的群體需求,吞吐量也是在對於一條區塊鏈進行分析、估值時必不可少的指標之一。本文意在提供一個當前區塊鏈擴容方案的全體畫像,幫助讀者更清晰地理解擴容方案的基礎理念。

為什麼需要擴容

在開始討論具體的擴容方案之前,我們先來梳理一下擴容的作用及其必要性。

區塊鏈上的節點分為全節點和輕節點。為了保證交易數據的完整性和安全性,全節點需要儲存整個區塊鏈的交易數據;而輕節點僅需要儲存 Block Header,通過向全節點請求相應的 Body 來驗證交易。節點的數量越多,則該鏈的去中心化程度越強,同時為了達成共識需要處理的工作量也就越多,對於吞吐量的負面影響也就越大。此外,如圖所示,比特幣的區塊容量上限為 1MB,而以太坊也因為設置了 Gas Limit(防止 DDoS 攻擊),導致區塊大小的上限被控制在了 130KB 左右。

圖片圖片

圖源:Blockchair

由於區塊大小有限,礦工無法將所有交易都放到同一區塊中進行打包,因此他們更傾向於按照預期收益的多少(Gas Price)對交易進行排序,並按照價格從高到低有選擇性地打包,以確保獲得最高的收益。這就導致了 Gas Price 較低的交易延遲時間過長。如下圖所示,以太坊上每分鐘約有 17 萬筆交易在等待驗證。

圖片

圖源:Etherscan

當前,比特幣的吞吐量低至 7TPS (Transaction-per-second),而以太坊的吞吐量也被限制在了 15~20TPS. 為了方便理解,我們將其與傳統線上交易方式的吞吐量相比:PayPal 的交易處理速度在 200TPS 左右,而 VISA 約為 1700TPS,差距頗大。

此外,不斷增加的交易數據對於維護區塊鏈所需的儲存能力也帶來了壓力。目前,比特幣的儲存量已超過 400GB,yoy17.4%;而以太坊則將近 900GB,平均增速 64.30%。

圖片圖片

圖源:Blockchair

如圖所示,每天發生在以太坊上的交易數量超過 1,250,000 筆,並且隨著公鏈生態的逐漸普及,這個數字在未來會越來越大,吞吐量的壓力也越來越大,擴容刻不容緩。

圖片

圖源:YChart

讀到這裡,我們已經了解了擴容的重要性,是時候一起看看究竟可以通過哪些手段來實現擴容了。

擴容方案分類

下圖為 Handbook of Research on Blockchain Technology (2020) 一書中的插圖。在本文中,我們將着眼於圖中”Write Performance”這一部分,從鏈上與鏈下兩個角度講解當前已經出現的擴容方案。

圖片

圖源:Handbook of Research on Blockchain Technology (2020)

鏈上擴容方案

鏈上擴容方案,指的是通過對於原鏈的設計進行更改,以達到擴容效果的方案。區塊鏈技術可以拆成六大層級結構:共識層、網路層、數據層、激勵層、合約層、應用層。其中前三個是區塊鏈的底層基礎,也是鏈上擴容方案操作的目標。

1. 共識層 = BFT;中本聰;混合

共識機制,指的是區塊鏈中各個節點對於數據的可用性以及賬本狀態的一致性達成共識的過程。由於共識機制完全決定了從下載數據到打包出塊的整個流程,因此節點對於交易的驗證效率嚴重依賴於共識機制的設計。當前主流的共識機制可以分為 BFT 類共識、中本聰共識以及混合共識。

BFT 類共識

提到 BFT 計算(Byzantine Fault-Tolerant),需要先講一下已是老生常談的拜占庭將軍問題:拜占庭帝國(東羅馬帝國)致力於開疆擴土,在一場戰爭中,他們試圖派出 10 支軍隊分開包圍敵人,該敵人最多能夠抵禦 5 支拜占庭軍隊。由於各軍隊站位較遠,各軍隊的將軍們需要通過給其他軍隊發送進攻/撤退的信號來達成行動共識(算上自己在內,如果收到了 6 個及以上的進攻信號,則進攻;反之則撤退)。

將軍們所面臨的最大問題是:如果某個軍隊中出現了叛徒,故意發送錯誤信號,該怎麼辦?在區塊鏈中,這個問題類似於:區塊鏈中的各個節點通過向其他節點發送資訊的方式達成共識,如果網路中出現了叛徒節點(拜占庭節點),發送了錯誤的資訊,該怎麼辦?

最為出名的 BFT 類共識是 PBFT,感興趣的可以自行查看參考文獻 [17],表述得非常簡單易懂,因此在這裡不再贅述。使用此類共識,需要保證各個正常運作的節點使用相同的隨機數與區塊算法進行計算,並生成區塊。當原賬本相同時,計算結果相同,生成後的賬本不可篡改、永久公開。由於每個節點都需要與其他所有節點同步共識,在節點數量較少時,可以在保證安全性的同時實現極高的吞吐量,隨著節點的數量增加,需要處理的數據量也會相應增加,導致處理交易的速度大幅下降。

中本聰共識

中本聰共識主要有 Proof of Work 工作量證明和 Proof of Stake 權益證明。在這部分我們將附帶着 PoS 的變種 DPoS,探討各個共識機制在吞吐量方面的表現。

PoW:算力決定記賬權(同時也是投票權),不需要設置機制對於節點進行授權。在吞吐量方面,其最大的問題在於難度高導致的出塊慢;並且為了保證賬本的一致性,還需要故意設置打包延遲。這裡的延遲指的是,礦工打包區塊後,需要再做至少一個區塊的工作量證明,才能確認候選區塊。

PoS:持幣獲取記賬權和投票權(分開),打包節點打包候選區塊後進行廣播,並由投票節點對於候選區塊進行投票以決定是否將其加入區塊鏈,投票採用多數制。PoS 相較於 PoW,由於引入了投票機制,犧牲了部分安全性;而在吞吐量方面,由於打包速度快,並且沒有等待時間,因此延遲極低。

DPoS:持幣獲取投票權,選出董事會負責記賬。在 PoS 之上犧牲了部分去中心化程度,擁有比 PoS 更高的吞吐量。

混合共識

顧名思義,混合共識指的是結合了不同共識機制優點的共識。如在主鏈使用 PoW 確保安全的同時在側鏈使用 PoS 保證吞吐量;結合 PoS 和 PBFT 以降節點數量減少到恆定值,從而再次提升吞吐量,等。

2. 數據層 = 擴塊;縮數據;DAG

除了共識機制,每個區塊中可以打包的交易數量也與交易的吞吐量密切相關。我們可以通過擴大區塊容量、縮小交易數據的方式提升區塊鏈吞吐,或是直接採用 DAG 的數據結構來處理交易。

放寬/取消區塊大小限制

擴大區塊容量,可以使得每個區塊中打包進更多筆交易數據,但是同時會使區塊廣播的時間增加,提升網路延遲,從而增加硬分叉的風險。

縮小區塊中儲存的數據

此類方案中,較為出名的有 Segwit 隔離見證:將區塊資訊中簽名的部分以及用於計算交易 ID 的數據進行單獨管理,從而壓縮 60% 的交易資訊量。作為緩解容量問題的輔助方案較為有效,但是不能解決本質問題。

DAG(Directed Acyclic Graph 有向無環圖)

如下圖所示,區塊鏈採用鏈式結構,其區塊頭中只能包含一個區塊的哈希值;DAG 結構下的區塊頭中可以包含多個區塊的哈希值;區塊鏈中新的區塊會被添加到鏈的最後端,不能從鏈中間續寫;DAG 可以從之前的區塊續寫。

圖片

圖源:Russian Blogs

區塊鏈是同步記賬,節點需要在同一時間記錄同樣的資訊;DAG 是異步記賬,同一時間內不同的節點可以記錄不同的資訊。因此 DAG 單位時間內可以打包的交易數量更多,TPS 極高。基於 DAG 的協議目前主要有 SPECTRE 和 PHANTOM 兩種。

SPECTRE 協議通過投票的方式抵禦攻擊

如下圖所示,當區塊 X 和區塊 Y 中所記錄的內容相衝突時,記錄在區塊 X 之後的區塊 6~8 會記錄下與區塊 X 相同的資訊 X;區塊 9~11 會記錄下與區塊 Y 相同的資訊 Y;區塊 12 同時可以回溯到區塊 X 和區塊 Y,因此它會記錄下與上一輪投票相同的結果(虛線內),也就是 X;區塊 1~5 會根據記錄着自己區塊資訊的區塊的投票情況進行投票,由於記錄着 X 的區塊較多,1~5 選擇投票給區塊 X. 由於惡意區塊直到開始攻擊之前都不會與誠實區塊產生關聯,使用 SPECTRE 協議時,只要誠實的節點更多,衝突的交易就能夠被排除。其問題在於只適用於一般交易,由於沒辦法對於全部交易按照時間進行線性排序,因此無法運行智能合約。而 PHANTOM 協議可以解決這個問題。

圖片

圖源:An overview of SPECTRE

PHANTOM 協議會先通過投票篩選出誠實區塊,並對誠實區塊進行拓撲排序

在了解其篩選方式前,需要先理解分叉係數 k=可以分叉的個數(比如區塊鏈中不允許分叉,因此 k 為 0)和 GHOSTDAG 算法=通過追溯歷史區塊,選擇鏈條最長的一條作為主鏈,形成子集 S,默認該集合中的區塊均為誠實區塊。此後,針對每一個區塊,驗證與其沒有聯繫的區塊和子集 S 的交集是否小於等於 k,如果小於等於 k,則判斷為誠實區塊,加入子集 S.

圖片

圖源:An overview of PHANTOM

以下圖(k=3)舉例說明:假設我們現在需要判斷區塊 I 的真實性,由區塊 I 衍生出的區塊分別有區塊 K、M、O、P、R,通過區塊 I 可以追溯到的區塊分別有區塊 C、D、原始區塊。這時,與區塊 I 毫不相關的區塊分別是區塊 B、E、F、H、J、L、N、Q、S、T、U,其中與子集 S 有交集的有區塊 B、F、J,等於 k,因此判斷區塊 I 為誠實區塊。

圖片

圖源:PHANTOM: A Scalable BlockDAG Protocol

排序方式使用拓撲排序:首先將沒有可追溯區塊的塊作為原始區塊 0,然後在除去區塊 0 之外的區塊中繼續選擇沒有可追溯區塊的塊作為區塊 1,如此循環。

圖片

圖源:Kappo”s Blog

目前使用了 DAG 結構的項目中心化程度較高,因此這裡不再做更深入的討論。對於 DAG 感興趣的家人可以搜尋 DAGLabs 進行學習。

3. 網路層 = 分片

分片指的是將賬本拆分成若幹個部分,分別由不同的節點集團進行管理。通過實施狀態分片,每個節點需要處理的交易數據變少,不僅可以提升交易處理速度,並且對於節點的性能需求也會相對降低,使得參與挖礦的門檻降低,去中心化程度加強。

圖片

圖源:Why sharding is great: demystifying the technical properties

Sharding 1.0

對於狀態分片最初的想法是:將 n=64 個數據碎片 blob 添加到信標鏈中,每個周期(epoch)內有 n 個驗證節點廣播自己的數據碎片 blob,並由委員會對於數據的真實性與可用性進行確認,確認完成後的 blob 被加入執行鏈。每經過一個 epoch 重新分配各個分片鏈所對應的驗證者的機制,導致了分片鏈切換後數據同步不及時的問題,會造成延遲。

此外,這種方式還面臨着四個問題:無法保證信標鏈上的每個區塊中寫入了全部分片需要的交易數據;無法對於全部分片進行全局檢查;驗證節點可能導致 liveness failure;結合 PoS,只要錢夠多,控制的節點夠多,更容易控制委員會。在 ETH 發行率降低、驗證集中化的背景下,此機制為 MEV 提供了機會。

圖片

DankSharding

為了規避 Sharding1.0 中的風險,DankSharding 提出了兩個要點:所有 blob 都將被加入信標塊;每個委員會的成員只對碎片數據的一個子集進行處理,所有信標數據和分片數據可以一起檢查。

具體來說,Danksharding 的核心機制分為三部分:

數據可用性抽樣:編碼者使用 RS 編碼進行冗餘傳輸,減少節點的驗證壓力,同時採用 KZG 多項式承諾來保證編碼正確。在此之上,通過將數據塊的分片再次進行分片、並在不同數據塊分片間重組的方式對 RS 編碼進行二位擴展,降低全節點數據重構的門檻,從而降低中心化程度;

出塊者-打包者分離:將全節點分成出塊者和打包者兩種角色,低配置的出塊者負責去中心化選擇打包者並獲得打包者的競價,具備高配置高性能的打包者則通過競價獲取打包記賬權,從而解決 MEV 的價值分配問題;

抗審查清單:出塊者指定合法的交易列表,打包者證明自己看到了列表並將列表中的交易包含在打包中,以此防止打包者故意忽略合法的交易。

圖片

Proto-Danksharding/EIP-4844

DankSharding 的機制實現起來較為困難,作為階段性的方案,EIP-4844 出現了。EIP-4844 中引入了具有時效性的 blob,類似於行動硬盤,在被寫入主網後,blob 只存在一段時間,隨即被銷毀。在 EIP-4844 的設計中,同樣引入了 KZG 多項式承諾,以確保後續 DankSharding 實裝時可以向前兼容。

鏈下擴容方案

鏈下擴容方案,指的是在不改變原鏈構造的前提下,通過在主網之外進行交易處理,來減輕主網的處理壓力。主要有狀態通道、鏈下計算、多鏈三種類型,為了方便理解,我們將側鏈和子鏈全都歸在了多鏈方案之中。

狀態通道

狀態通道指的是,在特定參與者之間通過多簽等方式鎖定區塊鏈狀態的一部分(打開通道)->針對通道中出現的狀態轉換,在所有參與者的同意下,在鏈下更新狀態->確認最終狀態,並向主鏈廣播。由於只需要廣播最終狀態,使用狀態通道處理瑣碎的相互交易可以有效減少主鏈上廣播的交易數量,降低交易延遲。此外,每個參與者可以通過仲介與其他沒有打開通道的參與者互動:Alice 和 Bob 之間有通道,Bob 和 Carol 之間有通道,則 Alice 可以在不另外開啟通道的情況下,通過 Bob 與 Carol 互動。狀態通道透明度低,通常只適用於在特定參與者之間發生的頻繁交易。

圖片

圖源:EthHub

2. 鏈下計算

鏈下計算,意在通過將驗證之外的功能全部移至鏈下的方式提升鏈上吞吐量。其主要需要保證安全性與隱私性,具體的操作方式可以分為可驗證的鏈下計算、「飛地」型鏈下計算、鏈下安全多方計算和激勵驅動型鏈下計算四種。

圖片

圖源:Blockchain-Based Reputation Systems: Implementation Challenges and Mitigation

可驗證的鏈下計算:zk-SNARKs,Bulletproofs,zk-STARKs

鏈下的證明者將鏈下的計算結果上鏈,並由鏈上的驗證者進行檢驗。

「飛地」型鏈下計算:Enigma,Ekiden

在區塊鏈節點上創建可信執行環境(Trusted Execution Environment,TEE)並預設數據接口進行計算。TEE 充當黑箱,可以在有效保護數據隱私的同時實現明文數據運算,提升計算效率。

鏈下安全多方計算

將數據拆分並分發給各個節點,節點根據當前區塊鏈的狀態以及各自獲得的數據計算狀態變化,將各個節點計算出的數據結合,即可獲得完整的計算後數據。節點需要計算的數據更少,效率更高。

激勵驅動型鏈下計算

求解者對於交易數據進行計算,在公布結果的同時質押保證金;驗證者對於求解者的結果進行驗算,如果發現錯誤,則可以質押保證金並發起鏈上仲裁,正確的一方將獲得用戶支付的手續費。

 3. 外鏈 = 側鏈;Rollup

外鏈指的是,在主鏈之外創建一條新的區塊鏈,通過跨鏈將交易處理的一部分(如計算、儲存)轉移到新的區塊鏈上執行,並將結果廣播給主鏈,從而提升主鏈的處理效率。

側鏈

側鏈是完全獨立於主鏈的區塊鏈,其使用鎖定+鑄造/銷毀的方式將資產從主鏈投影至側鏈,並完全在側鏈上完成交易處理與儲存的整個流程。側鏈的安全性完全依靠於其自身的節點以及共識機制。分為錨定式側鏈與聯邦側鏈(在主鏈和側鏈間增加多簽地址用於驗證交易,以降低延遲)兩種。

圖片

圖源:EthHub

Rollup

Rollup 與側鏈的不同是,其僅在子鏈上處理交易,數據仍儲存在主網上,因此可以在提升交易處理效率的同時享受主網的數據安全性。Rollup 按照數據可用性和交易驗證方式可以分成四種:

欺詐證明(檢舉無效交易)+ 鏈下 DA(安全性-,擴容效果+)= Plasma

Plasma 需要在主鏈上創建一個寫入了子鏈哈希狀態轉換規則的智能合約,以此連接主鏈和子鏈(和孫子鏈、重孫鏈…)其擴容機制與狀態通道類似,通過減少主鏈需要處理與保存的交易來提升吞吐,只是其在主鏈之外建立的並不是特定參與者之間的通道,而是共用的具備獨立共識機制的新區塊鏈,子鏈需要定期向主鏈上的智能合約提交狀態更新,在順利通過 7 天的質疑期(樂觀證明,為了保證交易安全)後將區塊狀態寫入主鏈。

其集合了狀態通道與側鏈的優點:在狀態通道模式下,如果需要增加新的參與者,需要在鏈上重新打開新的通道,而在 Plasma 中不需要;狀態通道向主鏈同步狀態時需要全部參與者的同意,而 Plasma 不需要;狀態通道只保留最終狀態,Plasma 的狀態轉換記錄在子鏈上有完整的記錄;側鏈上的狀態轉換會直接影響到主鏈上的狀態,因此其資產安全性取決於側鏈本身,而 Plasma 並不是,其安全性依賴於主鏈。

Plasma 機制主要面臨的問題是:子鏈節點需要保留子鏈上的大量交易數據;節點必須在線。

圖片

圖源:Plasma: An Innovative Framework to Scale Ethereum

有效性證明(推理交易有效)+ 鏈上 DA(安全性+,擴容效果-)= ZK-Rollup

zkRollup 可以有效改善 Plasma 所面臨的問題。由於這部分的 zkRollup 和 Validium 均使用零知識證明作為驗證機制,因此在這部分先簡單敘述一下零知識證明的概念:零知識證明,指的是在向其他人證明某個命題為真時,除了命題為真之外,不提供其他的資訊佐證。比如,A 使用零知識證明向 B 證明他已經成年了,此時 B 不會知道 A 的生日,只會知道 A 已經成年了的這件事。在 zkRollup 中,使用 zkSNARK 對於大量的交易進行驗證,確定了這些交易的有效性後,只需要向主網上傳一個證明這些交易都有效的零知識證明即可。這樣做大幅壓縮了數據量,可以將交易數據寫入主網。

zkRollup 也面臨着一些問題:零知識證明計算困難;初期需要信任;通用性較差

有效性證明(推理交易有效)+ 鏈下 DA(安全性-,擴容效果+)= Validium

Validium 同樣使用零知識證明保證其交易資訊的有效性與鏈下數據的可用性。其與 zkRollup 的唯一區別是,將數據可用性放到了鏈下,這使得 Validium 擁有了更高的吞吐量,但是帶來的後果是數據可用性的管理者稍微修改 Merklized 狀態,就可以讓用戶無法轉移資金。如下圖,如果 d3 被修改,d1 的所有者將無法獲取節點 m 的資訊,而 m 是證明其帳戶所有權的必要條件。在 zkRollup 出現後,Validium 基本上是完全失去了競爭力。

圖源:Validium And The Layer 2

欺詐證明(檢舉無效交易)+ 鏈上 DA(安全性+,擴容效果-)= Optimistic Rollup

Optimistic Rollup 是 Plasma 的升級版,同時可以解決 zkRollup 通用性的問題。其默認節點提交的交易資訊是正確的,向主網提交交易資訊後,會有 7 天的質疑期,供他人檢查交易的正確性。其與 Plasma 的不同在於,將交易數據寫入了鏈上;與 zkRollup 的不同在於,不使用零知識證明。在中和了其他兩種 Rollup 的同時,Optimistic Rollup 也犧牲了部分的吞吐量。

圖片

圖源:ethereum.org

總結與未來展望

因為不可能三角的存在,註定不會有完美的擴容方案,需要權衡各個方案的代價。 個人認為,由於鏈上擴容需要支付的代價更高(包括造成硬分叉和技術難度兩方面),較為難實現,一般情況下還是會以鏈下擴容方案為主。

目前的鏈下擴容方案中,Rollups 因其安全性保持優勢。不過,雖然通過 Rollups 可以大幅釋放 L1 的吞吐,在將 L2 打包的數據傳回 L1 時的速度卻仍受以太坊的區塊大小所限制。目前以太坊一個塊的儲存在 100kb 左右,算下來一分鐘內能夠處理的 Rollups 打包的數據不足 500kb,而主網除了接收打包的數據之外,還需要處理 L1 上原有的交易資訊,共同導致了鏈下擴容方案吞吐量的瓶頸。

不過好在可以對於不同方案進行組合:鏈上方案中,DankSharding 的構思正好可以通過使用抽樣驗證和 RS 編碼大幅降低驗證節點的工作量與數據下載量,解決交易處理速度的問題,預計在實裝後可以與 Rollup 相輔相成。而如果把分片的實裝當作大前提,在當前的幾種 Rollups 中,Optimistic Rollup 的成本主要是寫入主網的成本,與可以降低該成本的 ProtoDanksharding 最為適配,因此個人認為在近期內(如果 EIP-4844 成功實裝),鏈下 Optimistic Rollup+鏈上 ProtoDankSharding 會是最佳選擇。

原文連結






Source link

BTC Shop Hong Kong

廣告查詢 ADVERTISE
Back to top button