“模塊化區塊鏈”的想法正在成為圍繞可擴展性和區塊鏈基礎設施的類別定義敘述。
這個論點很簡單:通過分解第1 層區塊鏈的核心組件,我們可以對各個層進行100 倍的改進,從而形成一個更具可擴展性、可組合性和去中心化的系統。在我們詳細討論模塊化區塊鏈之前,我們必須了解現有的區塊鏈架構以及區塊鏈在當前實現中面臨的限制。
資料來源:以太坊基金會
什麼是區塊鏈?
讓我們簡要回顧一下區塊鏈的基礎知識。區塊鏈中的區塊由兩部分組成:區塊頭和與其關聯的交易數據。區塊通過“完整節點”進行驗證,這些節點解析和計算整個區塊數據,以確保交易有效,並且用戶發送的ETH 不會超過他們的賬戶餘額。
讓我們還簡要概述組成區塊鏈的功能“層”。
-
執行
交易和狀態更改最初在此處處理。用戶通常還通過該層通過簽署交易、部署智能合約和轉移資產與區塊鏈進行交互。
-
結算
結算層是驗證Rollup 執行和解決爭議的地方。該層不存在於單體區塊鏈中,是模塊化堆棧的可選部分。與美國法院系統類比,將結算層視為美國最高法院,為爭議提供最終仲裁。
-
共識
區塊鏈的共識層通過全節點網絡提供排序和最終確定性,下載和執行區塊的內容,並就狀態轉換的有效性達成共識。
-
數據可用性
驗證狀態轉換是否有效所需的數據應發布並存儲在該層上。如果發生惡意區塊生產者扣留交易數據的攻擊,這應該很容易驗證。數據可用性層是區塊鏈可擴展性三難困境的主要瓶頸,我們稍後會探討原因。
例如,以太坊是單體的,這意味著基礎層處理上述所有組件。
資料來源:ResearchGate
區塊鏈目前面臨一個稱為“區塊鏈可擴展性三難困境”的問題。與分佈式系統的Brewer 定理類似,區塊鏈架構通常會在去中心化、安全性或可擴展性中的一個方面做出妥協,以便為其他兩者提供強有力的保證。
安全性是指網絡在受到攻擊時保持運行的能力。這個原則是區塊鏈的核心原則,永遠不應該妥協,所以真正的權衡通常是在可擴展性和去中心化之間。
讓我們在區塊鏈系統的背景下定義去中心化:為了讓區塊鏈去中心化,硬件要求不能成為參與的限制,驗證網絡的資源要求應該很低。
可擴展性是指區塊鏈的吞吐量除以其驗證成本:區塊鏈處理越來越多的交易同時保持較低的驗證資源需求的能力。增加吞吐量的主要方法有兩種。首先,您可以增加區塊大小,從而增加可以包含在區塊中的交易容量。不幸的是,更大的區塊大小會導致網絡中心化,因為運行完整節點的硬件要求會隨著對更高計算輸出的需求而增加。特別是單體區塊鏈遇到了這個問題,因為吞吐量的增加與驗證鏈的成本增加相關,從而導致去中心化程度降低。其次,您可以將執行轉移到鏈下,將計算負擔從主網絡上的節點轉移,同時利用允許驗證鏈上計算的證明。
借助模塊化架構,區塊鏈可以通過關注點分離的原則開始解決區塊鏈可擴展性的三難困境。通過模塊化執行和數據可用性層,區塊鏈能夠擴展吞吐量,同時通過打破計算和驗證成本之間的相關性來保持使網絡去信任和去中心化的特性。讓我們通過引入故障證明、Rollup 以及它們與數據可用性問題的關係來探索這是如何實現的。
故障證明和Optimistic Rollup
Vitalik 在《終局遊戲》一文中指出,中心化和去中心化之間可能的妥協是,出於可擴展性目的,區塊生產的未來中心化於礦池和專業生產者,而區塊驗證(保持生產者誠實)應該重要地保持去中心化。這可以通過將區塊鏈節點拆分為完整節點和輕客戶端來實現。該模型存在兩個相關問題:區塊驗證(驗證計算是否正確)和區塊可用性(驗證所有數據是否已發布)。讓我們首先探索它在區塊驗證中的應用。
全節點下載、計算和驗證區塊中的每筆交易,而輕客戶端僅下載區塊頭並假設交易有效。然後,輕客戶端依賴全節點生成的故障證明來進行交易驗證。這反過來又允許輕客戶端自主識別無效交易,使它們能夠在與全節點幾乎相同的安全保證下運行。默認情況下,輕客戶端假定狀態轉換是有效的,並且可以通過接收故障證明來質疑狀態的有效性。當一個節點的狀態受到故障證明的挑戰時,通過一個全節點重新執行相關交易來達成共識,導致不誠實節點的權益被削減。
來源:https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/
輕客戶端和故障證明模型在誠實少數假設下是安全的,其中至少存在一個誠實的全節點,具有提交故障證明的鏈的完整狀態。該模型與分片區塊鏈(例如合併後的以太坊架構)特別相關,因為驗證者可以選擇在一個分片上運行完整節點,在其餘分片上運行輕客戶端,同時在所有分片上保持N 中的1 個安全保證。
Optimistic Rollups 利用此模型將區塊鏈執行層安全地抽象為排序器,即捆綁和執行多個事務並定期將壓縮數據發布回父鏈的強大計算機。將此計算轉移到鏈外(相對於父鏈)可以使交易吞吐量增加10-100 倍。我們如何才能相信這些鏈下測序儀保持良性?我們引入了債券,運營商必須質押以運行測序儀的代幣。由於定序器將交易數據發布回父鏈,因此我們可以使用驗證器(觀察父鏈與其匯總之間的狀態不匹配的節點)來發布故障證明並隨後削減惡意定序器的賭注。由於樂觀匯總使用故障證明,因此假設網絡中存在一個誠實的驗證者,它們是安全的。故障證明的這種使用是樂觀匯總的名稱來源- 假設狀態轉換是有效的,直到在爭議期間證明其他情況,在結算層處理。
這就是我們如何在最小化信任的同時擴展吞吐量:允許計算變得中心化,同時保持對計算的驗證去中心化。
數據可用性問題
雖然故障證明是解決去中心化區塊驗證的有用工具,但全節點依賴於區塊可用性來生成故障證明。惡意出塊者可以選擇只發佈區塊頭,並保留部分或全部相應數據,阻止全節點驗證和識別無效交易,從而產生故障證明。這種類型的攻擊對於全節點來說是微不足道的,因為它們可以簡單地下載整個區塊,並在發現不一致或隱瞞數據時從無效鏈中分叉。但是,輕客戶端將繼續跟踪可能無效鏈的區塊頭,從完整節點分叉。 (請記住,輕客戶端不會下載整個區塊,並假設狀態轉換默認有效。)
這是數據可用性問題的本質,因為它與故障證明有關:輕客戶端必須確保所有交易數據在驗證之前都在一個區塊中發布,這樣全節點和輕客戶端必須自動就規範鏈的相同區塊頭達成一致。 (如果您想知道為什麼我們不能使用類似的系統來進行數據可用性的故障證明,您可以在此處深入了解數據保留困境。本質上,博弈論規定此處使用的基於故障證明的系統將是被剝削並導致誠實行為者雙輸的局面。)
解決方案
看起來我們又回到了原點。輕客戶端如何確保發布一個區塊中的所有交易數據,而無需下載整個區塊——中心化硬件需求,從而違背輕客戶端的目的?
實現這一點的一種方法是通過一種稱為擦除編碼的數學原語。通過複製區塊中的字節,即使有一定百分比的數據丟失,糾刪碼也可以重建整個塊。該技術用於執行數據可用性採樣,允許輕客戶端通過隨機採樣區塊的一小部分來概率確定整個區塊已發布。這允許輕客戶端確保所有交易數據都包含在特定區塊中,然後再接受它為有效並遵循相應的塊頭。但是,這種技術有一些注意事項:數據可用性採樣具有很高的延遲,並且類似於誠實的少數假設,安全保證依賴於假設有足夠的輕客戶端執行採樣以能夠概率地確定可用性一個區塊。
數據可用性抽樣的簡化。
有效性證明和零知識Rollup
去中心化區塊驗證的另一個解決方案是取消狀態轉換所需的交易數據。相比之下,有效性證明與故障證明相比採取了更為悲觀的觀點。通過消除爭議過程,有效性證明可以保證所有狀態轉換的原子性,同時需要為每個狀態轉換提供證明。這是通過利用新穎的零知識技術SNARK 和STARK 來實現的。與故障證明相比,有效性證明需要更多的計算強度來換取更強的狀態保證,從而影響可擴展性。
零知識Rollup 是利用有效性證明而不是故障證明進行狀態驗證的Rollup。它們通過排序器/證明者模型遵循與Optimistic Rollup 類似的計算和驗證模型(儘管使用有效性證明作為架構而不是故障證明),其中排序器處理計算並證明者生成相應的證明。例如,Starknet 推出了用於引導目的的中心化排序器,並在路線圖上逐步實現開放式排序器和證明者去中心化。由於排序器上的鏈下執行,計算本身在ZK Rollup 上是無限的。然而,由於這些計算的證明必須在鏈上進行驗證,最終性仍然是證明生成的瓶頸。
需要注意的是,利用輕客戶端進行狀態驗證的技術僅適用於故障證明架構。由於通過有效性證明可以保證狀態轉換是有效的,因此節點不再需要交易數據來驗證區塊。然而,有效性證明的數據可用性問題仍然存在,並且稍微微妙:儘管有保證的狀態,但有效性證明的交易數據仍然是必要的,這樣節點才能更新狀態轉換並將其提供給最終用戶。因此,使用有效性證明的Rollup 仍然受到數據可用性問題的約束。
我們現在在哪裡
回顧Vitalik 的論文:條條大路通向中心化區塊生產和去中心化區塊驗證。雖然我們可以通過區塊生產者硬件的進步以指數方式增加Rollup 吞吐量,但真正的可擴展性瓶頸是區塊可用性而不是區塊驗證。這導致了一個重要的見解:無論我們使執行層多麼強大或我們使用什麼證明實現,我們的吞吐量最終都會受到數據可用性的限制。
我們目前確保數據可用性的一種方法是在鏈上發佈區塊鏈數據。 Rollup 實施利用以太坊主網作為數據可用性層,定期在以太坊上發布所有Rollup 區塊。這種權宜之計解決方案面臨的主要問題是以太坊當前的架構依賴於通過下載整個區塊來保證數據可用性的全節點,而不是執行數據可用性採樣的輕客戶端。當我們增加區塊大小以增加吞吐量時,這不可避免地會導致對驗證數據可用性、中心化網絡的全節點的硬件要求增加。
未來,以太坊計劃利用數據可用性採樣向分片架構發展,該架構由完整節點和保護網絡的輕客戶端組成。 (注意- 以太坊分片在技術上使用KZG 承諾而不是故障證明,但無論如何數據可用性問題都是相關的。)然而,這只能解決部分問題:Rollup 架構面臨的另一個基本問題是Rollup 區塊被轉儲到以太坊主網作為calldata。這會帶來一些問題,因為calldata 在規模上是昂貴的,無論Rollup 交易批量大小如何,都會以每字節16 個gas 的成本成為L2 用戶的瓶頸。
“這意味著即使在最終用戶利用Rollup 的情況下,將calldata 發佈到以太坊也會讓他們因這個固定比率而面臨他們今天面臨的驚人的gas 成本(見下圖)。”
“隨著使用量的增長,發佈到以太坊的calldata 也會增加。這讓我們回到了原點——以太坊真的很貴,即使最終用戶使用Rollup,他們也會感受到這種成本。”
Validium 是提高可擴展性和吞吐量同時保持數據可用性保證的另一種方式:細粒度的交易數據可以在鏈下(相對於來源)發送到數據可用性委員會、PoS 監護人或數據可用性層。通過將數據可用性從以太坊calldata 轉移到鏈下解決方案,validiums 繞過了與增加rollup 使用相關的固定字節gas 成本。
Rollup 架構也帶來了獨特的見解,即區塊鏈本身不需要提供執行或計算,而只是簡單地對區塊進行排序並保證這些區塊的數據可用性的功能。這就是第一個模塊化區塊鍊網絡Celestia 背後的主要設計理念。 Celestia 以前稱為LazyLedger,最初是一個“惰性區塊鏈”,將執行和驗證留給其他模塊化層,並專注於通過數據可用性採樣為交易排序和數據可用性保證提供數據可用性層。中心化區塊生產和去中心化區塊驗證者是Celestia 設計背後的核心前提:即使是手機也能夠作為輕客戶端參與並保護網絡。由於數據可用性採樣的特性,作為數據可用性層插入Celestia 的Rollup 能夠隨著Celestia 輕節點數量的增長支持更高的區塊大小(因此吞吐量),同時保持相同的概率保證。
今天的其他解決方案包括StarkEx、zkPorter 和Polygon Avail,其中StarkEx 是目前生產中使用的唯一驗證。無論如何,大多數驗證都包含對數據可用性源的信任的隱含假設,無論是通過受信任的委員會、監護人還是通用數據可用性層進行管理。這種信任還表明,惡意運營商可以阻止用戶提取資金。
工作正在進行中
Celestium 架構。
模塊化區塊鏈架構是當前加密領域中一個備受爭議的話題。由於與去中心化的結算和數據可用性層相關的安全問題和額外的信任假設,Celestium 對模塊化區塊鏈架構的願景受到了重大阻礙。
與此同時,區塊鏈堆棧的各個方面都取得了重大進展:Fuel Labs 正在開發執行層的並行虛擬機,Optimism 團隊正在研究分片、激勵驗證和去中心化排序器。混合Optimistic 和零知識解決方案也在開發中。
以太坊合併後的發展路線圖包括統一結算和數據可用性層的計劃。具體來說,Danksharding 是以太坊路線圖中一個很有前景的發展,旨在將以太坊L1 數據分片和區塊空間轉換和優化為“數據可用性引擎”,從而允許L2 Rollup 實現低成本、高吞吐量的交易。
Celestia 的獨立架構還允許廣泛的執行層實現將其用作數據可用性層,為WASM、Starknet 和FuelVM 等替代非EVM 虛擬機奠定基礎。這種用於各種執行解決方案的共享數據可用性允許開發人員在Celestia 集群之間創建信任最小化的橋樑,解鎖跨鍊和跨生態系統的可組合性和互操作性,類似於以太坊及其Rollup 之間的可能性。
由Starkware 首創的Volitions 為鏈上與鏈下數據可用性的困境引入了一種創新的解決方案:用戶和開發人員可以選擇使用驗證將交易數據發送到鏈下,或者將交易數據保持在鏈上,每個人都有自己的獨特的優點和缺點。
拆分單體應用。
此外,第2 層解決方案的使用和普及率的增加解鎖了第3 層:分形擴展。分形擴展允許將特定於應用程序的Rollup 部署在第2 層- 開發人員現在可以部署他們的應用程序,完全控制他們的基礎設施,從數據可用性到隱私。在第3 層上部署還解鎖了第2 層上所有第3 層應用程序之間的互操作性,而不是像特定於應用程序的主權鏈(例如Cosmos)那樣昂貴的基礎鏈。 Rollup 之上的Rollup。
與網絡基礎設施如何從本地服務器演變為雲服務器類似,去中心化網絡正在從單體區塊鍊和孤立的共識層演變為具有共享共識層的模塊化、特定於應用程序的鏈。無論哪種解決方案和實施最終流行起來,有一點很清楚:在模塊化的未來,用戶是最終的贏家。
原文作者:Alec Chen
來源:DeFi 之道翻譯編輯