未來的 3 至 5 年內,區塊鏈的架構必然由單體化向模塊化演變。模組化區塊鏈中,執行層已經「四分天下」;共識層逐鹿中原, Aptos 和 Sui 等嶄露頭角,公鏈競爭格局雖未塵埃落定,但其敘事已是新瓶裝舊酒,難以尋找合理的投資機會。而數據可用性層的價值仍然有待被發掘。本文由 Jiawei,IOSG Ventures 撰稿。
(前情提要:研究|一文看懂 Meta (臉書) 系新公鏈:Aptos、Sui、Linera)
(背景補充:2022 年公鏈新趨勢,你不可不知的「擴容新路線」!)
模組化區塊鏈中,執行層和共識層已是紅海市場,數據可用性層的價值仍然有待被發掘。
tl;dr
- 對於輕客戶端的數據可用性,採用糾刪碼來解決該問題幾乎沒有異議,不同點在於如何確保糾刪碼被正確編碼。Polygon Avail 和 Danksharding 中採用了 KZG 承諾,而 Celestia 中採用了欺詐證明。
- 對於 Rollup 的數據可用性,如果把 DAC 理解為聯盟鏈 ,那麼 Polygon Avail 和 Celestia 所做的就是使數據可用性層更加去中心化——相當於提供「DA-Specific」的公鏈,以此提升信任級別。
- 未來的 3 至 5 年內,區塊鏈的架構必然由單體化向模塊化演變,各層呈現低耦合狀態。未來可能出現Rollup-as-a-Service(RaaS)、Data Availability-as-a-Service(DAaaS)等許多模塊化組件的提供商,實現區塊鏈體系結構的可組合性樂高。模塊化區塊鏈是支撐下一個週期的重要敘事之一。
- 模組化區塊鏈中,執行層已經「四分天下」,後來者寥寥;共識層逐鹿中原, Aptos 和 Sui 等嶄露頭角,公鏈競爭格局雖未塵埃落定,但其敘事已是新瓶裝舊酒,難以尋找合理的投資機會。而數據可用性層的價值仍然有待被發掘。
模組化區塊鏈 Modular Blockchain
在聊數據可用性之前,我們先花點時間對模組化區塊鏈進行簡要回顧。
關於模塊化區塊鏈的分層暫無嚴格定義,一些分層方式從以太坊出發,另一些則偏向通用化的視角,主要看在何語境下進行討論。
- 執行層:兩件事發生在執行層。對單筆交易而言,執行交易並發生狀態更改;對同批次的交易而言,計算該批次的狀態根。當前以太坊執行層的一部分工作分給了 Rollup ,即我們熟知的 StarkNet 、 zkSync 、 Arbitrum 和 Optimism 等。
- 結算層:可以理解為主鏈上的 Rollup 合約驗證狀態根的有效性(zkRollup)或欺詐證明(Optimistic Rollup)的過程。
- 共識層:無論採用 PoW 、PoS 或其他共識算法,總之共識層是為了在分佈式系統中對某件事達成一致,即對狀態轉換的有效性達成共識。在模塊化的語境下,結算層和共識層的含義有些相近,故也有一些研究者把結算層和共識層統一起來。
- 歷史狀態層:由 Polynya 提出(僅針對以太坊而言)。因為在引入 Proto-Danksharding 之後,以太坊只在一定時間窗口內維護即時數據可用性,之後則進行修剪操作,把這項工作交給其他人。例如 Portal Network 或是其他存儲這些數據的第三方可被歸類於這一層。
- 數據可用性層:數據可用性存在什麼問題?對應的解決方案各自是什麼?這是本文要集中討論的問題,在此先不對它進行概括。
回到 18 、 19 年,數據可用性更多在於輕客戶端節點的語境;而在之後的 Rollup 角度下數據可用性,又有著另一層含義。本文將分別從「節點」和「Rollup」的兩個不同語境來解釋數據可用性。
DA in Nodes
我們首先來看全節點和輕客戶端的概念。
由於全節點親自下載和驗證每個區塊中的每筆交易,因此不需要誠實假設來確保狀態被正確執行,有著很好的安全性保證。但運行全節點需要存儲、計算能力和寬頻的資源要求,除了礦工以外,普通用戶或者應用沒有動力去運行全節點。況且,如果某個節點僅僅需要在鏈上驗證某些訊息,運行全節點顯然也是非必要的。
這是輕客戶端在做的事情。在 IOSG 的文章「多鏈生態:我們的當前階段與未來格局」中我們簡要介紹了輕客戶端。輕客戶端是區別於全節點的一種說法,它們往往不與鏈進行直接交互,而依賴鄰近的全節點作為中介,從全節點請求所需要的資訊,例如下載區塊頭、或是驗證帳戶餘額。
作為節點的輕客戶端可以很快地同步整條鏈,因為它只下載和驗證區塊頭;而在跨鏈橋模型中,輕客戶端又作為智能合約 —— 目標鏈的輕客戶端只需要驗證源鏈的代幣是否被鎖定,而無需驗證源鏈的所有交易。
問題出在哪?
這樣存在一個隱含問題:既然輕客戶端只從全節點那裡下載區塊頭,而不是自己下載和驗證每筆交易,那麼惡意的全節點(區塊生產者)可以構造一個包含無效交易的區塊,並把它發送給輕客戶端來欺騙它們。
我們容易想到採用「欺詐證明」來解決這個問題:即只需要 1 個誠實的全節點監測區塊的有效性,並在發現無效區塊後構造一個欺詐證明、將其發送給輕客戶端來提醒它們。或者,在收到區塊後,輕客戶端主動詢問全網是否有欺詐證明,如果一段時間後沒有收到,那麼可以默認該區塊是有效的。這樣一來,輕客戶端幾乎可以獲得與全節點等同的安全性(但仍然依賴於誠實假設)。
然而,在以上論述中,我們實際上假設了區塊生產者總是會發布所有的區塊數據,這也是生成欺詐證明的基本前提。但是,惡意的區塊生產者可能在發布區塊的時候隱藏掉其中的一部分數據。這個時候,全節點可以下載這個區塊,驗證它是無效的;但輕客戶端的特點使它們無法這樣做。並且由於缺少數據,全節點也無法生成欺詐證明來警告輕客戶端。
另一種情況是,可能由於網路原因,一部分數據在稍後才會上傳,我們甚至無法判斷這時的數據缺失是客觀條件所致還是區塊生產者有意為之——那麼欺詐證明的獎懲機制也就無法生效。
這就是我們要討論的在節點中的數據可用性問題。
上圖中給出了兩種情況:其一,惡意的區塊生產者發布了數據缺失的區塊,這時誠實的全節點發出警告,但隨後該生產者又補充發布了剩餘的數據;其二,誠實的區塊生產者發布了完整的區塊,但這時惡意的全節點發出了假警告。在這兩種情況下,網路中的其他人在T3 之後看到的區塊數據都是完整的,但都有人在其中作惡。
這樣看來,採用欺詐證明來確保輕客戶端的數據可用性是存在漏洞的。
解決方案
2018 年9 月,Mustafa AI-Bassam(現 Celestia CEO)和 Vitalik 在合著的論文中提出採用多維糾刪碼來檢查數據可用性 —— 輕客戶端只需要隨機下載一部分數據並驗證,就能確保所有數據塊是可用的,並在必要時重建所有數據。
採用糾刪碼來解決輕客戶端的數據可用性問題幾乎沒有異議,Polygon Avail、Celestia(以及以太坊的Danksharding)中都採用了 Reed-Solomon 糾刪碼。
不同點在於如何確保糾刪碼被正確編碼: Polygon Avail 和 Danksharding 中採用了 KZG 承諾,而 Celestia 中採用了欺詐證明。兩者各有優缺, KZG 承諾無法抗量子,而欺詐證明依賴一定的誠實假設和同步假設。
除 KZG 承諾外,還有採用 STARK 和 FRI 的方案可用於證明糾刪碼的正確性。
(注:糾刪碼和 KZG 承諾的概念在 IOSG 的文章「合併在即:詳解以太坊最新技術路線」中有提及,由於篇幅所限,在本文中不作展開解釋)
DA in Rollup
Rollup 中的數據可用性是:在zkRollup 中,需要使任何人可以自行重建 Layer2 的狀態,以確保抗審查;在Optimistic Rollup 中,需要確保Layer2 的所有數據都被發布,這是構建欺詐證明的前提。那麼問題在哪?
我們來看 Layer 2 的費用結構,除了固定花費外,與每批次交易筆數相關的變量主要在於 Layer 2 的 Gas 花費,以及鏈上數據可用性的支出。前者的影響微乎其微;而後者需要為每個字節恆定支付 16 gas,整體佔到 Rollup 成本的 80% – 95% 之多。
(鏈上)數據可用性很貴,怎麼辦?
一是降低在鏈上存放數據的成本:這是協議層做的事情。在 IOSG 的文章「合併在即:詳解以太坊最新技術路線」中,我們提到以太坊正在考慮引入 Proto-Danksharding 和 Danksharding 來為 Rollup 提供「大區塊」,即更大的數據可用性空間,並採用糾刪碼和 KZG 承諾解決隨之而來的節點負擔問題。但從 Rollup 的角度去想,被動等待以太坊來為自己做適配是不現實的。
二是把數據放到鏈下。下圖列出了當前的鏈下數據可用性方案,通用化方案包括 Celestia 和 Polygon Avail;在 Rollup 中作為用戶可選的方案包括 StarkEx、 zkPorter 和 Arbitrum Nova。
(注:Validium 原本特指 zkRollup 與鏈下數據可用性相結合的擴容方案,為方便起見,本文中以 Validium 指代鏈下數據可用性方案並一同參與比較)
以下我們具體來看這些方案。
DA Provided by Rollup
在最簡單的 Validium 方案中,由中心化的數據運營商來負責確保數據可用性,用戶需要信任運營商不會作惡。這樣的好處是成本低,但實際上幾乎沒有安全保證。
於是,StarkEx 在 2020 年進一步提出了由數據可用性委員會(DAC)維護的 Validium 方案。DAC 的成員是知名且在法律管轄區內的個人或組織,信任假設是他們不會串通和作惡。
Arbitrum 今年提出了AnyTrust,同樣採用數據委員會來確保數據可用性,並基於AnyTrust 構建了 Arbitrum Nova。
zkPorter 則提出由 Guardians(zkSync Token 持有者)來維護數據可用性,他們需要質押 zkSync Token,如果發生了數據可用性故障,那麼質押的資金將被罰沒。
三者都提供了稱為 Volition 的選項:用戶按需自由選擇鏈上或鏈下數據可用性,根據具體的使用場景,在安全性和成本之間自行取捨。
General DA Scenarios
提出上述方案基於這樣的想法:既然普通運營商的信譽度不夠高,那麼就引入更權威的委員會來提高信譽度。
一個小型委員會的安全程度足夠高嗎?以太坊社群早在兩年前就提出了 Validium 的勒索攻擊問題:如果竊取了足夠的委員會成員的私鑰,使得鏈下數據可用性不可用,那麼可以威脅用戶——只有他們支付足夠的贖金才能從 Layer2 提款。據 Ronin Bridge 和 Harmony Horizon Bridge 被盜的前車之鑑,我們無法忽略這樣的可能性。
既然鏈下的數據可用性委員會並非足夠安全,那麼如果引入區塊鏈作為信任主體來保證鏈下數據可用性呢?
如果把前述的 DAC 理解為聯盟鏈,那麼 Polygon Avail 和 Celestia 所做的就是使數據可用性層更加去中心化——相當於提供了「DA-Specific」的公鏈,擁有一系列的驗證節點、區塊生產者和共識機制,以此提升信任級別。
除了安全性的提升之外,如果數據可用性層本身就是一條鏈,那麼它其實可以不局限於為某個Rollup、或者某個鏈提供數據可用性,而是作為通用化的解決方案。
我們以 Celestia 在以太坊 Rollup 上的應用 Quantum Gravity Bridge 為例進行解釋。以太坊主鏈上的 L2 Contract 像往常一樣驗證有效性證明或欺詐證明,區別在於數據可用性由 Celestia 提供。 Celestia 鏈上沒有智能合約、不對數據進行計算,只確保數據可用。
L2 Operator 把交易數據發布到 Celestia 主鏈,由 Celestia 的驗證人對 DA Attestation 的 Merkle Root 進行簽名,並發送給以太坊主鏈上的 DA Bridge Contract 進行驗證並存儲。
這樣實際上用 DA Attestation 的 Merkle Root 代替證明了所有的數據可用性,以太坊主鏈上的 DA Bridge Contract 只需要驗證並存儲這個 Merkle Root,開銷得到了極大的降低。
(注:其他數據可用性方案還有 Adamantium 和 EigenLayr。 Adamantium 方案中的用戶可以選擇託管自己的鏈下數據,在每次狀態轉換後都簽名確認自己的鏈下數據可用,否則資金將被自動發回主鏈來確保安全;或者用戶可以自由選擇數據提供商。 EigenLayr 是偏向學術的方案,提出了 Coded Merkle Tree 和數據可用性預言機 ACeD 。這裡暫不展開討論)
小結
在逐一討論上述方案後,我們從安全性/去中心化程度、 Gas 花費的角度來做一個橫向比較。注意,該坐標圖僅代表筆者的個人理解,作為模糊的大致劃分而非定量比較。
左下角的 Pure Validium 安全性/ 去中心化程度和 Gas 花費都是最低的。
中間部分是 StarkEx 和 Arbitrum Nova 的 DAC 方案、 zkPorter 的 Guardians 驗證者集方案,以及通用化的 Celestia 和 Polygon Avail 方案。筆者認為採用 zkPorter 採用 Guardians 作為驗證者集,對比 DAC 來說安全性/ 去中心化程度稍高;而 DA-Specific 區塊鏈的方案對比一組驗證者集又要稍高。與此同時 Gas 花費也相應增加。當然這只是極粗略的比較。
右上角的方框內是鏈上數據可用性的方案,有著最高的安全性/去中心化程度和 Gas 花費。從方框內部來看,由於這三種方案的數據可用性都由以太坊主鏈提供,故它們具有等同的安全性/ 去中心化程度。純 Rollup 方案對比單體化的以太坊來說顯然 Gas 花費更低,而在引入 Proto-Danksharding 和 Danksharding 之後,數據可用性的成本將進一步得到降低。
注:本文討論的「數據可用性」語境大多在以太坊之下,需要注意 Celestia 和 Polygon Avail 是通用化的方案,並不限於以太坊本身。
最後我們在表格中對上述方案做個總結。
Closing Thoughts
在討論完上述數據可用性問題之後,我們發現所有方案本質上是在三難困境的相互制約下做權衡取捨,而方案之間的區別在於權衡的「細粒度」不同。
從用戶角度考慮,協議提供同時鏈上和鏈下數據可用性的選項是合理的。因為在不同的應用場景之下、或者不同的用戶群體之間,用戶對安全性和成本的敏感程度亦各不相同。
上文更多討論了數據可用性層對以太坊和 Rollup 的支持。在跨鏈通信上, Polkadot 的中繼鏈為其他平行鏈提供了數據可用性的原生安全保證;而 Cosmos IBC 依賴於輕客戶端模型,故確保輕客戶端能夠驗證源鏈和目標鏈的數據可用性至關重要。
模塊化的好處在於可插拔和靈活性,能夠按需為協議做適配:例如卸下以太坊的數據可用性包袱,同時確保安全和信任級別;或是在多鏈生態下提升輕客戶端通信模型的安全級別,降低信任假設。不僅限於以太坊,數據可用性還可以在多鏈生態、甚至未來更多的應用場景下發揮作用。
我們認為:未來的 3 至 5 年內,區塊鏈的架構必然會由單體化向模塊化演變,各層呈現低耦合狀態。未來可能出現 Rollup-as-a-Service(RaaS)、Data Availability-as-a-Service(DAaaS)等許多模塊化組件的提供商,實現區塊鏈體系結構的可組合性樂高。模塊化區塊鏈是支撐下一個週期的重要敘事之一。
其中,執行層的估值巨獸(即 Rollup)已經「四分天下」,後來者寥寥;共識層(即各個Layer1)逐鹿中原,在Aptos 和 Sui 等公鏈開始嶄露頭角後,公鏈競爭格局雖未塵埃落定,但其敘事已是新瓶裝舊酒,難以尋找合理的投資機會。
而數據可用性層的價值仍然有待被發掘。
📍相關報導📍
剖析|Layer 2、跨鏈和公鏈三足鼎立,誰將實現區塊鏈「可擴展」理想?