2022年3月30日,Jump Crypto副總裁Rahul Maganti發文總結了一個簡潔但功能強大的,分析L1公鏈的框架。 4月1日,Rahul Maganti接著上一篇文章,概述了各種1層和2層擴容解決方案,並沿著一些核心維度分析和比較這些不同解決方案。金色財經編譯如下:
引言
在上一篇文章中,我們開發了一個分析L1公鏈的框架,特別是考慮到最近建立數量眾多的新公鏈。我們還簡要指出,這些新穎的L1公鏈背後的動機主要集中在尋找區塊鏈可擴展性的解決方案。讓我們仔細看看其中的一些解決方案。這篇文章的目標是:
-
概述各種1層和2層擴容解決方案。
-
沿著一些核心維度分析和比較這些不同的解決方案。
-
給出我們對哪些擴展架構最有前途的看法。
可擴展性三難困境
在2017年初的一篇博客文章中,Vitalik Buterin提出了可擴展性三難困境,指的是定義區塊鏈系統可行性的三個主要屬性:(1)去中心化;(2) 安全性;(3) 可擴展性。
在這三個方面,我們認為在不過度損害其他兩個支柱的情況下,可擴展性仍然是最難解決的問題。安全性和去中心化對於這些系統的性能仍然至關重要,但正如我們稍後將看到的,解決擴展分佈式系統的挑戰也從根本上為去中心化和安全性提供了關鍵突破。因此,我們強調有效擴展區塊鏈的能力將是更普遍地決定加密行業未來成功的關鍵因素。
從廣義上講,擴容有兩種主要類別:1 層和2層。兩者對於增加區塊鏈的吞吐量都是相關的和關鍵的,但側重於Web3堆棧的不同層面。在過去的幾年裡,擴容無疑得到了很多關注,並且經常被吹捧為大規模採用區塊鏈技術的關鍵途徑,尤其是在零售使用量持續攀升和交易量增加的情況下。
1層(L1s)
有一些主要的擴容架構已經脫穎而出:
-
狀態分片
-
並行執行
-
共識模型的改進
-
有效性證明
狀態分片
分片有很多種,但核心原則始終保持不變:
-
分片分散驗證和計算的成本,因此節點不需要驗證每筆交易。
-
分片中的節點,就像在更大的鏈中一樣,必須:(1)中繼交易;(2) 驗證交易;(3) 存儲分片的狀態。
-
分片鏈應通過以下方式保留非分片鏈的安全原語:(1)有效的共識機制;(2) 安全證明或簽名聚合。
分片允許將單個鏈拆分為K個不同的獨立子網或分片。如果網絡S中總共有N個節點,則子網K有N/K個節點運行。當給定分片(例如K_1)中的一組節點驗證一個區塊時,它會吐出一個證明或一組簽名,聲稱該子網是有效的。然後所有其他節點,S-{K_1}需要做的就是驗證簽名或證明。 (驗證的時間通常比重新運行計算本身要小得多)。
要了解分片的擴容優勢,了解此架構在增加鏈的總計算能力方面提供的價值至關重要。現在,假設一個節點的容量平均約為C:O(C)。假設鏈需要處理B區塊。非分片鏈的計算能力為很小的O(C);但是,由於分片鏈可以並行處理區塊,所以分片鏈的容量為:O(CB)。通常,運行時節省是成倍增加的!可以在這裡找到Vitalik更深入的技術解釋(https://vitalik.ca/general/2021/04/07/sharding.html)。分片一直是以太坊2.0和NEAR路線圖中最顯著的基礎組件。
並行執行
分片和並行執行在許多方面是相似的。雖然分片嘗試在不同子鏈上並行驗證區塊,但並行執行側重於將處理單個交易的工作拆分到節點上。這種架構的效果是,節點現在可以並行處理數千個合約!
我們不會詳細介紹其工作原理,但這裡有一篇很棒的文章(https://medium.com/solana-labs/sealevel-parallel-processing-thousands-of-smart-contracts-d814b378192),更深入地介紹了Solana到Sealevel中並行執行的工作原理。
共識模型
共識是一層區塊鏈協議的核心——對於要在鏈上最終確定的交易/數據,網絡中的參與者需要一種就鏈狀態相互達成一致的方法。因此,隨著新交易的增加和鏈的進展,共識是確保共享狀態一致性的一種手段。然而,不同的共識機制也可能導致我們衡量區塊鏈性能的關鍵指標出現根本差異:安全性、容錯性、去中心化、可擴展性等等。然而,單獨的共識模型並不能決定區塊鏈系統的性能。不同的共識模型適用於不同的擴容機制,最終可以確定特定網絡的效能。
2層(L2s)
從根本上說,2層擴容基於1層上的資源(無論是計算資源還是其他資源)變得異常昂貴的前提。為了降低用戶、服務和其他社區參與者的成本,應將繁重的計算負載移至鏈外(2層),同時仍試圖保留1層上的加密和博弈論原語提供的底層安全保證(公私密鑰對、橢圓曲線、共識模型等…)
這方面的早期嘗試主要涉及在鏈下兩方之間建立“可信通道”,然後在1層完成狀態更新。狀態通道通過“將區塊鏈狀態的某些部分鎖定到由一組定義的參與者控制的多重簽名合約中”來做到這一點。 Plasma鏈,首先由Vitalik提出:允許創建無限數量的側鏈。然後使用欺詐證明(PoW、PoS)來完成1層上的交易。
Rollups+Flavors
Rollups也是一種將計算移至鏈下(2層),同時仍在鏈上(1層)記錄消息或交易的方式。原本在1層上記錄、聚合和驗證的交易在2層上記錄、匯總和驗證,然後發佈到原始1層。該模型實現了兩個目標:(1)釋放基礎層的計算資源;(2) 仍然保留1層的底層密碼安全保證。
交易被“匯總”,然後將由Sequencer排序的交易傳遞給Inbox合約
存儲在L2上的合約執行鏈下合約的調用
然後合約將新狀態的Merkle根作為calldata發布回L1鏈
Optimistic Rollups
Optimistic Rollups是樂觀的。驗證者在先驗假設有效的情況下將交易發佈到鏈上。如果他們這樣選擇,其他驗證者可以質疑交易,但不是必須的。 (把它想像成一個疑罪從無的模型)。然而,一旦發起挑戰,兩方(比如Alice和Bob)就被迫參與爭議解決協議(dispute resolution protocol)。
爭議解決算法的工作原理如下:
1、Alice聲稱她的斷言是正確的。 Bob不同意。
2、然後Alice將斷言分成相等的部分(為簡單起見,假設這是一個二等分)
3、然後Bob必須選擇他認為斷言的哪一部分(比如前半部分)是錯誤的
4、遞歸運行步驟1-3。
5、Alice和Bob玩這個遊戲,直到子斷言的大小只是一個指令。現在,協議只需執行此指令。如果Alice是正確的,那麼Bob就會失去他的質押,反之亦然。
可以在此處找到對Arbitrum爭議解決協議的更深入解釋。
在樂觀的情況下,成本為O(1),很小/不變。在有爭議的情況下,算法運行複雜度為O(log n),n是原始斷言大小。
這種樂觀驗證和爭議解決架構的一個關鍵結果是樂觀Rollup有一個誠實方保證,這意味著為了保證鏈的安全,協議只需要一個誠實方來發現和報告欺詐行為。
ZK Rollups
在當今的許多區塊鏈系統和1層公鏈中,共識是通過有效地“重新運行”計算交易來驗證鏈的狀態更新來實現的。換句話說,要在網絡上完成交易,網絡中的節點需要執行相同的計算。這似乎是一種驗證鏈歷史的幼稚方法,確實如此!那麼問題就變成了,有沒有一種方法可以確保我們可以快速驗證交易的正確性,而不必在大量節點上重複計算。 (對於那些有一定複雜性理論背景的人來說,這個想法是P vs. NP的核心)嗯,是的!這就是ZK rollups派上用場的地方——實際上,它們確保驗證的成本大大低於執行計算的成本。
現在,讓我們深入了解ZK-Rollups如何在保持高度安全性的同時實現這一目標。在高級ZK-rollup協議中包含以下組件:
-
ZK驗證者——驗證鏈上的證明。
-
ZK證明者——從應用程序或服務中獲取數據並輸出證明。
-
鏈上合約——跟踪鏈上數據並驗證系統狀態。
已經出現了大量的零知識證明系統,尤其是在2021年。有兩種主要的證明類型已經很出名:(1)SNARK;(2) STARK,儘管他們之間的界限每天都變得越來越模糊。
我們不會討論ZK證明系統如何工作的技術細節,但這裡有一個很好的圖表,它說明了我們如何從智能合約獲得類似於可以有效驗證的證明的東西。
不同Rollup比較的關鍵維度
速度
正如我們之前提到的,擴容的目標是提供一種方法來提高網絡處理交易的速度,同時降低計算成本。因為Optimistic Rollups沒有為每筆交易生成證明(在誠實的情況下沒有額外的開銷),它們通常比ZK Rollups快得多。
隱私
ZK證明本質上是保護隱私的,因為它們不需要訪問計算的基礎參數來驗證它。想想下面這個具體的例子:假設我想向你證明我知道知道很多鑰匙中的哪把鑰匙能打開盒子。一種天真的方法是與你分享並要求你嘗試打開盒子。如果盒子打開,那麼很明顯我知道這個組合。但是假設我必須證明我知道這個組合而不透露任何關於組合的信息。讓我們設計一個簡單的ZK-proof協議來演示它是如何工作的:
-
我請你在一張紙上寫下一句話
-
我把盒子遞給你,讓你從盒子上的一個小縫裡塞進那張紙
-
我背對著你,打開盒子
-
我打開紙條,把紙條還給你。
-
你確認紙條是你的!
就是這樣!一個簡單的零知識證明。一旦你確認該紙條實際上與你放入盒子中的紙條相同,我已向你證明我能夠打開盒子,因此先驗地知道打開盒子的鑰匙。
通過這種方式,零知識證明特別擅長允許一方向對方證明聲明的真實性,而無需透露給對方任何信息。
EVM兼容性
以太坊虛擬機(EVM) 定義了一組指令或操作碼,用於實現基本的計算機操作和特定的區塊鏈操作。以太坊上的智能合約編譯成字節碼。然後字節碼作為EVM操作碼執行。 EVM兼容性意味著正在運行的虛擬機指令集和EVM指令集之間存在1:1映射。
當今市場上最大的2層解決方案建立在以太坊之上。當以太坊原生項目想要遷移到2層時,EVM兼容性提供了一種無縫的、最少代碼的擴展路徑。項目只需要在L2上重新部署他們的合約並從L1橋接他們的代幣。
最大的樂觀Rollup項目Arbitrum和Optimism/Boba都與EVM兼容。 zkSync是為數不多的考慮到EVM兼容性而構建的ZKRollup之一,但仍然缺乏對一些EVM操作碼的支持,包括ADDMOD、SMOD、MULMOD、EXP和CREATE2。雖然不支持CREATE2確實會給帶來與合約交互、限制升級性和用戶進入的問題,但我們認為對這些操作碼的支持將很快實現,並且長期來看不會成為在ZK rollups中使用的重大障礙。
橋
因為L2是獨立的鏈,它們不會自動繼承原生L1代幣。以太坊上的原生L1代幣必須橋接到相應的L2才能與部署在那裡的dApp和服務進行交互。無縫連接代幣的能力仍然是一個關鍵挑戰,不同的項目探索各種架構。通常,一旦用戶調用L1上的deposit,就需要在L2端鑄造一個等價的代幣。為這個過程設計一個高度通用的架構可能特別困難,因為有廣泛的代幣和代幣標準驅動協議。
最終確定性
最終確定性是指確認鏈上交易有效性的能力。在1層,當用戶提交交易時,它幾乎是瞬間完成的。 (儘管節點處理來自mempool的交易需要時間)。在2層上,情況不一定如此。提交到運行樂觀Rollup協議的2層鏈的狀態更新將首先假定更新是有效的。但是,如果提交此更新的驗證者是惡意的,則需要有足夠的時間讓誠實的一方來質疑該聲明。通常,此挑戰期設置為約7 天。平均而言,想要從L2提取資金的用戶可能需要等待大約2週!
另一方面,Zk Rollup不需要這麼長的挑戰期,因為每個狀態更新都使用證明系統進行驗證。因此,ZK Rollup協議上的交易與一層的交易一樣是最終確定的。毫不奇怪,ZK rollups提供的即時確定性已成為L2擴容的關鍵優勢。
即時流動性作為快速最終確定性的手段
一些人認為,雖然樂觀Rollup並不一定能保證L1的快速最終確定性,但快速提款通過讓用戶在挑戰期結束之前獲得資金,提供了一種清晰、易於使用的解決方法。雖然這確實為用戶提供了一種訪問其流動性的方法,但這種方法存在幾個問題:
-
用於維護L2到L1提款的流動性池子的額外開銷。
-
快速提款不是通用的——僅支持代幣提款。不能支持任意L2到L1的調用。
-
在挑戰期結束之前,流動性提供者無法保證交易的有效性。
-
流動性提供者必須:(1)信任他們的流動性提供給的人,限制去中心化的好處;(2) 構建自己的欺詐/有效性證明,有效地違背了利用L2鏈中內置的欺詐證明/共識協議的目的。
排序
排序器與任何其他完整節點一樣,但可以任意控制收件箱(inbox)隊列中的排序交易。如果沒有這種排序,網絡中的其他節點/參與者無法確定特定批次交易的結果。從這個意義上說,這為用戶在執行交易時提供了一定程度的確定性。
反對為此目的使用定序器的主要論點是,它們會產生一個中心故障點——如果排序器出現故障,則L2層活動可能會受到影響。等一下……這是什麼意思?這不是破壞去中心化的願景嗎?嗯……有點。排序器通常由開發L2的項目運行,通常被視為半信任實體,通常按項目利益相關者意願行動。對於一想到這一點就咬牙切齒的去中心化強硬派,如果知道有人正在對去中心化公平排序進行大量工作/研究,你可能會感到安慰。
最近大型L2生態系統(包括Arbitrum/Optimism)上的排序器中斷,繼續證明了對容錯、去中心化排序的需求。
資金效率
樂觀Rollup與ZK Rollup之間比較的另一個關鍵點是它們的資金效率。如前所述,樂觀L2依賴欺詐證明來保護鏈,而ZK Rollup則利用有效性證明。
欺詐證明提供的安全性基於一個簡單的博弈論原則:攻擊者試圖分叉鏈的成本應該超過他們能夠從網絡中提取的價值。在樂觀Rollup的情況下,驗證者將一定數量的代幣(例如ETH)質押在他們認為隨著鏈進展而有效的Rollup區塊上。惡意行為者(那些被發現有罪並由誠實節點報告的行為者)將被懲罰。
因此,資金效率和安全性之間存在根本性的權衡。提高資金效率可能需要縮短延遲/質詢期,同時增加欺詐性斷言未被網絡中其他驗證者檢測或質詢的可能性。
移動延遲期相當於沿著資金效率與延遲期曲線移動。然而,隨著延遲期的變化,用戶需要考慮其對安全性和最終確定性之間權衡的影響——否則他們會對這些變化無動於衷。
目前Arbitrum和Optimism等項目的7個延遲期是由社區考慮到這些方面決定的。 Offchain Labs的Ed Felten對他們如何確定延遲期的最佳長度做過深入解釋。
通過構建(依賴於密碼學假設而不是博弈論假設),有效性證明不易受到相同的資本效率/安全性權衡的影響。
特定應用鏈/擴容
當我們談論多鏈未來時,我們到底指的是什麼?是否會有大量具有不同架構的高性能1層、更多的2層擴展解決方案,或者只有少數具有針對自定義用例的定制優化的3層鏈?
我們的信念是,對基於區塊鏈的服務的需求將從根本上由用戶對特定類型應用程序的需求驅動,無論是NFT鑄造還是用於借貸、質押等的DeFi協議……從長遠來看,與任何技術一樣,我們希望用戶希望從底層原語(在這種情況下,為結算、可擴展性和安全性提供核心基礎設施的L1和L2)中抽像出來。
特定於應用程序鏈提供了一種通過利用狹義優化來部署高性能服務的機制。因此,我們預計這些類型的鏈將成為旨在推動大規模採用的Web3基礎設施的關鍵組成部分。
這些鏈的出現主要有兩種方式:
-
具有自己的原語的獨立生態系統專注於非常特定的應用程序。
-
在現有L1和L2鏈之上構建的附加層,但經過微調以優化特定用例的性能。
在中短期內,這些獨立的鏈可能會出現顯著增長,但我們認為這是因為它們短期的新穎性能,而不是可持續的興趣和使用的信號。即使是現在,像Celo這樣更成熟的特定於應用程序的鏈似乎也相對稀少。雖然這些獨立的特定應用程序鏈的生態系統為特定用例提供了卓越的性能,但它們通常缺乏使其他通用生態系統如此強大的特性:
-
靈活性和易用性
-
高度可組合性
-
流動性聚合和對原生資產的訪問
下一代擴展容基礎設施必須在這兩種方法之間取得平衡。
分形擴容(Fractal Scaling)方法
分形擴容方法與區塊鏈擴容的“分層模型”高度相關。它提供了一種獨特的方式來將原本孤立的、不同的應用程序特定鏈生態系統與更廣泛的社區統一起來,這樣做有助於保持可組合性,實現對通用邏輯的訪問,並從底層L1和L2獲得安全保證。
它是如何工作的?
-
根據它們打算服務的用例在本地實例之間拆分交易。
-
利用底層L1/L2層的安全性、擴展性和隱私屬性,同時針對獨特的定制需求進行優化
-
利用基於攜帶數據證明和遞歸證明的新穎架構(用於存儲和計算)
-
任何消息都附有證明該消息和導致該消息的歷史有效的想法
這是Starkware的一篇很棒的文章,討論了分形擴容的架構(https://medium.com/starkware/fractal-scaling-from-l2-to-l3-7fe238ecfb4f)。
結束的想法
區塊鏈擴容在過去幾年中變得更加突出,這有充分理由——在像以太坊這樣的高度去中心化的鏈上進行驗證的計算成本已經變得不可行。隨著區塊鏈的普及,鏈上交易的計算複雜度也在快速增長,進一步增加了保護鏈的成本。對現有1層和動態分片等架構的優化可能非常有價值,但需求的急劇增長需要採用更細緻的方法來開發安全、可擴展和可持續的去中心化系統。
我們相信,每個鏈層都針對特定行為進行優化是一種構建區塊鍊鍊層機的方法,包括通用計算到特定應用程序和啟用隱私的邏輯。因此,我們將Rollup和其他2層技術視為通過啟用鏈下計算/存儲和快速驗證來擴展吞吐量的核心。