作者: msfew@Foresight Ventures
Rollup 的瓶頸
如果你讀了上一篇我所寫的Rollup 的文章, 那麼很可能會發現在Optimistic 和zk Rollup 的終局對比部分, 有意無意地被留了一個坑.
當時得出的結論是: 因為沒有Proving Overhead, Optimistic Rollup 在長遠視角下會遠勝於zk Rollup. 但是其實在不同時間段的發展上, Optimistic 和zk Rollup 的性能實際上會交替領先:
不同階段不同類型的Secured Rollup 有不同的瓶頸, 而現在對它們來說,最主要的問題還是以太坊目前所提供的數據可用性方案限制了它們頂峰的理論性能.
為了解決現階段Rollup 的這個性能問題, 我們有兩種方法:
-
提升以太坊的主網, 等它升級成功, 缺點是無法掌握主動權, 這或許需要很久時間.
-
切換Rollup 的類型(如換成Validium), 直接使用性能更優秀的數據可用性方案, 缺點是部分犧牲了安全性.
區塊鏈的模塊化
我們現在所指的那些Secured Rollup (Arbitrum 等), 其實就是模塊化區塊鏈的一種實現, 未來會有更多不同的模塊化區塊鏈實現, 或者說不同變種的Rollup.
以太坊的Rollup 路線體現了區塊鏈的模塊化趨勢, 讓區塊鏈的層級分離, 各司其職, 讓網絡能夠Rollup 起來.
之前Rollup 的文章提到了擴容的兩條路線, 一條是升級區塊鏈本身, 另一條是用Rollup 的方式來更好地使用區塊鏈.
模塊化區塊鏈組合了兩條路線, 1+1 > 2, 徹底切換了區塊鏈的單體架構, 讓新的模塊化區塊鍊網絡成為Rollup 最適合生長的土壤, 且賦予這些Rollup 方案更多的模塊選擇和更高的性能.
a) 兩個層級, 四個模塊
一個區塊鏈可以拆分為兩個層級, 共包括四個模塊:
-
安全層: 保證區塊鏈的安全性.
-
數據可用性模塊(後文中稱為DA): 保證交易數據可以被使用(保證存儲且可驗證與可用).
-
共識模塊: 決定交易的順序等(PoW 等是防攻擊的機制, 是共識的基礎而不代表共識的全部).
-
執行環境層: 提供區塊鏈的執行環境.
-
結算模塊: 結算出狀態承諾.
-
執行模塊: 計算出單獨的狀態轉換.
其中對於每個層級來說, 兩個模塊採用同一方案的安全性更高, 信任假設更少, 如結算和執行均採用以太坊的安全性> 僅結算採用以太坊, 執行採用Arbiturm 環境的安全性.
單體區塊鏈的代表有Ethereum 本身, Solana, Binance Smart Chain 等, Secured Rollup 的代表有Arbitrum, Optimism 等, DA 層的代表有Celestia 的DA, Polygon Avail 等.
如果將區塊鏈的模塊和計算機結構進行類比, 那麼:
-
區塊鏈的執行模塊⇒ 計算機的操作系統(真正執行指令的環境)
-
區塊鏈的DA 模塊⇒ 計算機的內存(實現短期數據存取)
-
區塊鏈的結算與共識模塊⇒ 計算機的CPU (硬件保證指令執行的正確性)
後續文章中, 我們會稱這些“模塊” 為“層”, 但是它們實際上是模塊.
b) 從Web 的發展中預測模塊化趨勢
我們可以從Web 的發展中藉鑑出區塊鏈未來的模塊化發展路線:
區塊鍊網絡其實是一個更去中心化和更穩定的集群, 讓節點集合算力, 形成遍布全球的大型可信計算機.
而區塊鏈的模塊化劃分非常像Web2 中的分佈式系統(不等於分佈式數據庫的分佈式). 它本質上是把業務進行拆分, 與下圖Uber 的架構類似, 模塊各司其職.
Web2 的分佈式系統和Web3 的區塊鏈的模塊化帶給我們兩個需要思考的問題:
-
拆分: 區塊鍊網絡已經被簡約地拆分為了前文中提到的兩個層級和四個模塊.
-
連接: 保證模塊之間的通信以及安全性. 這也就是為什麼同源的模塊安全性更高, 因為不需要額外連接, 避免了過程中所暴露的危險.
拆分的問題已經被清晰定義, 但連接的問題對模塊化架構有所影響. 該如何將安全性和用戶體驗提升或許是模塊化區塊鏈需要解決的問題.
c) 為什麼模塊化?
模塊化區塊鏈將單體區塊鏈解耦後, 新網絡結構= 多個類似Arbitrum 和StarkEx 的不同Rollup + 一個類似以太坊的底層主網.
它們提升的重點主要是, 不用再通過因為共識與DA 耦合的傳統單體區塊鏈導致的Proof of Replication 來驗證和保證DA (限制性能和極大程度上提升全節點大小影響去中心化).
這意味著模塊化區塊鍊網絡不用再去卷單體區塊鏈的共識了, 而是解耦後直接使用專門層處理DA, 在主網安全的優先級下, 減少多餘算力和存儲的浪費, 提升吞吐量, 跳過共識問題瓶頸, 從而將千級或萬級的TPS 進一步提升.
除了整體性能可以突破瓶頸, 跨越到下一個時代, 模塊化區塊鏈還有什麼顯著的好處?
-
更好的區塊鏈
-
安全性: Rollup 層借用Ethereum 等底層安全層的安全性.
-
執行性能: 可靈活採用更快的執行或/和結算模塊.
-
開發上的可組合性
-
迭代: 模塊解耦. 模塊可以進行更激進的提案和更快速的創新.
-
可插拔: 更多的鏈開發方案和技術棧選擇.
d) 模塊化的不同實現?
模塊化的區塊鍊網絡其實可以構建出非常多類型的“鏈” 的實踐, 主要有三個大類和無數細分小類:
-
Rollup (包含Sovereign 或Secured Rollup 等, 見上一篇文章. 如Ethereum/Celestia 安全層+ 執行環境/或僅執行模塊.)
-
Multi-Monolithic (如Tendermint/Substrate 安全層+ Cevmos 棧與Recursive Rollup 的執行環境. Celestia 本身其實屬於這個架構, 是Cosmos 生態的.)
-
Subnet (組裝最自由的模塊化區塊鏈, 並非能繼承安全性, 更偏重部署和開發效率.)
這三個模塊化區塊鍊和單體區塊鏈的大方向不同, 特色也各不相同:
-
Rollup: 天下武功唯快不破, 但是技術進度最慢, 最不成熟.
-
Multi-Monolithic: 共享安全性, 通信可組合和可互操作, 應用鏈具有主權, 但是性能不一定行.
-
Subnet: 秒速部署, 方案成熟, 但是安全性和去中心化程度不一定行.
-
Monolithic: “完全的” 自由度, 但是方案太重, 整個系統或許過於耦合.
e) 模塊化概念的影響?
模塊化區塊鏈的時代到來之後, L1 和L2 的傳統概念或許要被重新定義.
-
單體區塊鏈: L1 指以太坊等單體區塊鏈, L2 指基於以太坊的安全層與執行模塊組合成的Rollup.
-
模塊化區塊鏈: L0 指社會共識與對L1 的信任假設, L1 指模塊化區塊鏈的安全層(DA 與Consensus), L2 指模塊化區塊鏈的執行環境層(Settlement 與Execution)
除此之外:
-
性能衡量: 從共識的TPS 和TTF 轉變成DA 的吞吐量的對比.
-
定義: 需要注意的是, 對於如Arbitrum 的Rollup 來說, Arbitrum 網絡= Arbitrum 的執行環境+ 以太坊的安全層與結算模塊. 對於以太坊本身來說, 以太坊網絡= 以太坊執行環境+ 以太坊的安全層與結算模塊. 當方案可以被模塊化解構時, 它們都可以被稱為是模塊化區塊鏈的一種實踐. 而如以太坊這樣適合做L1 的網絡, 可以被稱之為模塊化區塊鍊網絡.
-
趨勢: 當應用想要更多功能, 減少運營成本或加強安全性, 更大的主權時, 應用可以在一籃子的模塊中, 選擇適合自己的方案, 從而發展App-chain 或App-rollup 或App-subnet.
未來, 或許每個應用會選擇成為一個模塊化的區塊鏈.
DA 層
既然Rollup 不僅保證安全性, 還提升性能, 那何不讓區塊鏈成為Rollup 的最佳土壤? 模塊化區塊鏈就是讓區塊鏈成為Rollup 的更好基礎層.
Rollup 讓大家關注了DA 層對性能的影響, 同時Rollup 的出現也啟發了以多個Rollup 生態為重點的模塊化區塊鍊網絡概念. 模塊化區塊鏈讓區塊鏈跨越單體時代的共識瓶頸, 進入到模塊化概念以DA 為重點的時代.
“Rollup 是將執行層off-chain, 下一步是將DA off-chain.”
a) DA 是什麼?
對於模塊化的區塊鍊和Rollup 網絡來說, 完整數據需要在那里和保證可以被使用, 從而確保網絡的去中心化和安全性:
Current Data Availability: 為什麼出塊時需要最新的狀態根和tx 數據可用?
-
因為要出新的塊, 就需要在L1 揭露所有這些數據, 以便其他節點重新執行從而做到驗證, 同時這個過程要保證輕客戶端的安全(它們只檢查區塊頭! 不拒絕無效交易).
Archive Data Availability: 區塊有效後, tx 數據是否還需要被保留保證可用?
-
需要. 比如你想查看幾個月前的一筆交易, 或你想從頭運行一個節點.
Rollup 與模塊化區塊鏈: 對於Rollup 和未來不同的模塊化區塊鏈實踐來說, Current Data Availability 意味著什麼?
-
Optimistic Rollup: 出新塊時需要狀態根數據可用, 來被驗證, 挑戰期內需要tx 數據可用來使挑戰Sequencer 可行, 保證安全性.
-
zk Rollup: Sequencer 跑路情況下, 需要狀態根數據來重建狀態和取出資金.
b) Current Data Availability
最新數據的可用性影響著網絡本身的安全性和性能.
當我們說到DA 時, 通常所指的都是它.
-
單體區塊鏈時代:
-
DA 方案: 由於共識與DA 沒有解耦, 因此靠全節點Proof of Replication.
-
數據在那裡: 通過一堆全節點複製完整數據來保證.
-
數據可用: 通過線性複雜度下載完整數據來驗證數據可用.
-
tx 有效性: 通過重新執行來驗證tx 的有效性.
-
問題: 冗餘過多, 且若節點平均只存儲一部分數據, 丟數據的概率很大(和生日悖論類似).
-
模塊化區塊鏈時代:
-
DA 方案: 專門的獨立DA 解決方案.
-
數據在那裡: 通過糾刪碼(CD 和衛星所採用的數據保護方案) 保證數據可用.
-
數據可用: 通過數據可用性採樣來在sublinear 時間內驗證, 如只需下載1% 的區塊數據即可得到99% 的區塊可用保證.
-
tx 有效性: 通過錯誤編碼證明(類似Optimistic 機制) 或者多項式承諾甚至直接上有效性證明(我們通常稱之為zk 證明) 確保糾刪碼編碼正確, tx 有效.
c) Archived Data Availability
存檔數據的可用性僅影響網絡本身外的如區塊鏈瀏覽器等的基礎設施, 可能對網絡本身來說是個可選項, 但是對用戶的使用來說必須具備.
我們首先要說明的主要是, Arweave 或Filecoin 的Web3 存儲方案無法為Current Data Availability 提供直接的DA:
-
Arweave: SPoRA. 實質上是種摩爾定律假設和經濟模型下的概率性存儲(當然一切皆概率…). 使用中通常需要等十多個區塊才能確認數據“永存”, 無法很好保證即時DA.
-
Filecoin: PoSt. 點對點的分佈式存儲網絡. 進行數據存儲的礦工可以扣留數據, 無法保證去中心化以及DA.
-
IPFS: 主要還是作為基礎設施存在, 在Polygon Avail 和Celestia 的DA 的網絡層中都有使用.
除此之外, Arweave 和Filecoin 依然是單體區塊鏈的多副本冗餘模式保證數據可用, 難以建立高效的採樣機制.
雖然它們不適合作為“內存” 為最新數據提供可用性, 但適合作為“硬盤” 為存檔數據提供可用性. 目前Web3 仍然缺少一個更模塊化更專注的專用“硬盤”.
模塊化區塊鏈的選擇
我們現在就作為一個萬級TPS 項目的架構師, 來為我們的應用做一些抉擇, 組合出合適的應用鏈.
a) DA 層生態
DA 層是最近大家非常關注的方向. 但是從我們的抉擇圖來看, 其實沒有很大概率去連續做“對” 那麼多先置選擇, 最終進行到DA 的選擇.
除了項目最可能採用的自建私有DAC (性能+ 主權) 或側鏈DA 方案以外, DA 方案基本有三種選擇思路:
-
最高的安全性: 與共識層一致, 比如DA 與共識均採用以太坊或Celestia.
-
極致的吞吐量: 犧牲安全性, 增加額外信任假設, 比如鍊下數據委員會(安全性和多簽一樣, 差).
-
兩者兼具: 通過Restaking 模式, 得到高安全性與高吞吐量, 比如DataLayr.
DA 方案的商業格局基本會是這樣:
-
商業模式: 面向應用鏈, 通過提供DA 收取應用鏈支付的“保護費”.
-
競爭: DA 的方案強弱其實就是兩個層面的對比: 安全性與吞吐量. 且吞吐量的更優者很容易獲得壓倒性的勝利.
-
價值捕獲: 由於實際中並沒有太多實例來進行分析對比, 因此我們可以思考以下問題: 如果DA 層市值遠低於應用鏈(像Chainlink 和DeFi 應用的關係), 整個協議是否因此有安全性短板? 單單DA 層無法形成完整應用生態, 代幣如何捕獲價值?
b) 執行層生態
如果把模塊化區塊鏈比作一個高度分工化的廚房, 區塊鏈的性能是上菜速度, 那麼吞吐量更大的DA 層就是更大的鍋, 更好的執行環境就是更熟練以及會做更多菜系的廚子.
執行層方案也基本上有這麼幾種選擇:
-
現有成熟方案: EVM 及其ZK 或OP 變種, WASM 及其各種變種等.
-
未來前沿方案: FuelVM (工作流程如下圖中下方, 因此更快), AltLayer 等.對於執行層來說, 我認為EVM 依舊會因為生態優秀而保持未來的主導地位.
對於前沿執行層方案的價值捕獲來說, 它們自己可以被很容易組合成Optimistic Rollup, 形成應用生態, 因此在價值捕獲上, 它們相比DA 層有天然的優勢.
c) 共識層生態
對於模塊化區塊鏈來說, 共識層需要:
-
安全性優先: 保證底層的穩定和安全性.
-
智能合約環境: 方便鏈上驗證各種輸出.
-
社會與經濟共識: 需要是“德高望重” 的大公鏈, 這樣才不用額外的信任假設.
於是我們剩下的合適的選擇不多了:
-
完全合適: Ethereum, Cosmos 等.
-
勉強合適: Bitcoin, Arweave (兩者鏈上無圖靈完備的智能合約, 結算在應用鏈進行) 等.
-
不太合適: Solana (網絡不是特別穩定) 等.
-
可能最合適: 未來的Celestia, 未來的Ethereum.
模塊化方案的思考
a) 進一步探索
DA 層: 狀態爆炸問題讓網絡的准入門檻過高, 削弱了網絡的去中心化. 我們在DA 那一段所闡述的statelessness 僅僅是weak statelessness, 也就是只有出塊者需要存儲狀態數據, 後面還需要更多優化, 讓所有的節點都不需要存儲全部狀態數據.
執行層: 目前的模塊化分工僅僅是開了許多個執行層(Sharding), 而當某個執行層滿載後, 它的性能依然無法滿足Web3 需求. 那麼我們所需要拓展的就更多是單個執行層的性能(Parallelization), 如Fuel 和Solana.
b) 需求與供給
App-chain 的需求到底有多少?
目前只有熱門應用才會有App-chain 的需求. 我們或許需要onboard 更多用戶, 才會激發對模塊化方案的真正大量需求.
同時, 我們也看到了無數多的模塊選擇, 最後到底哪些能真正被積極使用也是一個需要探索和篩選的過程.
c) 安全性
模塊化有兩個方面, 拆分和連接:
-
拆分是否會導致整個區塊鍊網絡具有短板? 將攻擊其短板所需的資金大量降低, 作為像Curve 池的引線角色一樣引爆Luna 那樣的慘劇?
-
一個系統越複雜, 所暴露的可被攻擊的地方也就越多. 模塊間的“連接” 是否存在被攻擊的可能(當然Rollup 橋其實比IBC 橋還要安全) ? (之前的文章中我們對可組合性的危險發表了看法)
d) 體驗
一個分散的模塊化系統可能僅僅因執行層不同就導致用戶體驗與資金的割裂, 同時它是否會由於開發工具的不同, 導致開發者體驗的割裂? MEV 如何處理?
e) 分久必合
類似Apple 從Intel 芯片到m 系列SoC 的轉變, 模塊化區塊鏈較為割裂的架構是否會在幾年之後因為生態或體驗等問題重新統一, 單體區塊鍊是否會重回主導地位? 模塊化區塊鍊是否會出現類似Cosmos IBC 一樣的互通協議?
總結
目前模塊化區塊鏈只跑出了冰山一角, 但已經非常繁榮, 有各種基於以太坊的Secured Rollup, Cosmos, Polkadot, Subnet 等.
比特幣是區塊鏈的概念, 以太坊是區塊鏈的實踐, 而模塊化區塊鏈會是區塊鏈被廣泛工程化與實踐的基礎.