IOSG Weekly Brief |拆解數據可用性層:模塊化未來中被忽視的樂高積木
作者:Jiawei,IOSG Ventures
編輯:Olivia,IOSG Ventures
拆解數據可用性層:模組化未來中被忽視的樂高積木
- 對於輕客戶端的數據可用性,採用糾刪碼來解決該問題幾乎沒有異議,不同點在於如何確保糾刪碼被正確編碼。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
在聊數據可用性之前,我們先花點時間對模組化區塊鏈進行簡要回顧。(請在公眾號發送"模組化"獲取正確圖示)
圖片來源:IOSG Ventures, 據Peter Watts改制
關於模組化區塊鏈的分層暫無嚴格定義,一些分層方式從以太坊出發,另一些則偏向通用化的視角,主要看在何語境下進行討論。
- 執行層:兩件事發生在執行層。對單筆交易而言,執行交易並發生狀態更改;對同批次的交易而言,計算該批次的狀態根。當前以太坊執行層的一部分工作分給了Rollup,即我們熟知的StarkNet、zkSync、Arbitrum和Optimism等。
- 結算層:可以理解為主鏈上的Rollup合約驗證狀態根的有效性(zkRollup)或欺詐證明(Optimistic Rollup)的過程。
- 共識層:無論採用PoW、PoS或其他共識算法,總之共識層是為了在分佈式系統中對某件事達成一致,即對狀態轉換的有效性達成共識。在模組化的語境下,結算層和共識層的含義有些相近,故也有一些研究者把結算層和共識層統一起來。
- 歷史狀態層:由Polynya提出(僅針對以太坊而言)。因為在引入Proto-Danksharding之後,以太坊只在一定時間窗口內維護即時數據可用性,之後則進行修剪操作,把這項工作交給其他人。例如Portal Network或是其他存儲這些數據的第三方可被歸類於這一層。
- 數據可用性層:數據可用性存在什麼問題?對應的解決方案各自是什麼?這是本文要集中討論的問題,在此先不對它進行概括。
圖片來源:IOSG Ventures
回到18、19年,數據可用性更多在於輕客戶端節點的語境;而在之後的Rollup角度下數據可用性又有著另一層含義。本文將分別從「節點」和「Rollup」的兩個不同語境來解釋數據可用性。
DA in Nodes
圖片來源:https://medium.com/metamask/metamask-labs-presents-mustekala-the-light-client-that-seeds-data-full-nodes-vs-light-clients-3bc785307ef5
我們首先來看全節點和輕客戶端的概念。
由於全節點親自下載和驗證每個區塊中的每筆交易,因此不需要誠實假設來確保狀態被正確執行,有著很好的安全性保證。但運行全節點需要存儲、計算能力和帶寬的資源要求,除了礦工以外,普通用戶或者應用沒有動力去運行全節點。況且,如果某個節點僅僅需要在鏈上驗證某些信息,運行全節點顯然也是非必要的。
這是輕客戶端在做的事情。在IOSG的文章「多鏈生態:我們的當前階段與未來格局」中我們簡要介紹了輕客戶端。輕客戶端是區別於全節點的一種說法,它們往往不與鏈進行直接交互,而依賴鄰近的全節點作為中介,從全節點請求所需要的信息,例如下載區塊頭、或是驗證賬戶餘額。
作為節點的輕客戶端可以很快地同步整條鏈,因為它只下載和驗證區塊頭;而在跨鏈橋模型中,輕客戶端又作為智能合約------目標鏈的輕客戶端只需要驗證源鏈的代幣是否被鎖定,而無需驗證源鏈的所有交易。
問題出在哪?
這樣存在一個隱含問題:既然輕客戶端只從全節點那裡下載區塊頭,而不是自己下載和驗證每筆交易,那麼惡意的全節點(區塊生產者)可以構造一個包含無效交易的區塊,並把它發送給輕客戶端來欺騙它們。
我們容易想到採用「欺詐證明」來解決這個問題:即只需要1個誠實的全節點監測區塊的有效性,並在發現無效區塊後構造一個欺詐證明、將其發送給輕客戶端來提醒它們。或者,在收到區塊後,輕客戶端主動詢問全網是否有欺詐證明,如果一段時間後沒有收到,那麼可以默認該區塊是有效的。這樣一來,輕客戶端幾乎可以獲得與全節點等同的安全性(但仍然依賴於誠實假設)。
然而,在以上論述中,我們實際上假設了區塊生產者總是會發布所有的區塊數據,這也是生成欺詐證明的基本前提。但是,惡意的區塊生產者可能在發布區塊的時候隱藏掉其中的一部分數據。這個時候,全節點可以下載這個區塊,驗證它是無效的;但輕客戶端的特點使它們無法這樣做。並且由於缺少數據,全節點也無法生成欺詐證明來警告輕客戶端。
另一種情況是,可能由於網絡原因,一部分數據在稍後才會上傳,我們甚至無法判斷這時的數據缺失是客觀條件所致還是區塊生產者有意為之------那麼欺詐證明的獎懲機制也就無法生效。
這就是我們要討論的在節點中的數據可用性問題。
圖片來源:https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding
上圖中給出了兩種情況:其一,惡意的區塊生產者發布了數據缺失的區塊,這時誠實的全節點發出警告,但隨後該生產者又補充發布了剩餘的數據;其二,誠實的區塊生產者發布了完整的區塊,但這時惡意的全節點發出了假警告。在這兩種情況下,網絡中的其他人在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的所有數據都被發布,這是構建欺詐證明的前提。那么問題在哪?
圖片來源:https://forum.celestia.org/t/ethereum-rollup-call-data-pricing-analysis/141
我們來看Layer2的費用結構,除了固定花費外,與每批次交易筆數相關的變量主要在於Layer2的Gas花費以及鏈上數據可用性的支出。前者的影響微乎其微;而後者需要為每個字節恆定支付16 gas,整體佔到Rollup成本的80%-95%之多。(鏈上)數據可用性很貴,怎麼辦?
一是降低在鏈上存放數據的成本:這是協議層做的事情。在IOSG的文章「合併在即:詳解以太坊最新技術路線」中,我們提到以太坊正在考慮引入Proto-Danksharding和Danksharding來為Rollup提供「大區塊」,即更大的數據可用性空間,並採用糾刪碼和KZG承諾解決隨之而來的節點負擔問題。但從Rollup的角度去想,被動等待以太坊來為自己做適配是不現實的。
二是把數據放到鏈下。下圖列出了當前的鏈下數據可用性方案,通用化方案包括Celestia和Polygon Avail;在Rollup中作為用戶可選的方案包括StarkEx、zkPorter和Arbitrum Nova。
圖片來源:IOSG Ventures
(注: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的選項:用戶按需自由選擇鏈上或鏈下數據可用性,根據具體的使用場景,在安全性和成本之間自行取舍。
圖片來源:https://blog.polygon.technology/from-rollup-to-validium-with-polygon-avail/
General DA Scenarios
提出上述方案基於這樣的想法:既然普通運營商的信譽度不夠高,那麼就引入更權威的委員會來提高信譽度。
一個小型委員會的安全程度足夠高嗎?以太坊社區早在兩年前就提出了Validium的勒索攻擊問題:如果竊取了足夠的委員會成員的私鑰,使得鏈下數據可用性不可用,那麼可以威脅用戶------只有他們支付足夠的贖金才能從Layer2提款。據Ronin Bridge和Harmony Horizon Bridge被盜的前車之鑑,我們無法忽略這樣的可能性。
既然鏈下的數據可用性委員會並非足夠安全,那麼如果引入區塊鏈作為信任主體來保證鏈下數據可用性呢?
如果把前述的DAC理解為聯盟鏈,那麼Polygon Avail和Celestia所做的就是使數據可用性層更加去中心化------相當於提供了「DA-Specific」的公鏈,擁有一系列的驗證節點、區塊生產者和共識機制,以此提升信任級別。
除了安全性的提升之外,如果數據可用性層本身就是一條鏈,那麼它其實可以不局限於為某個Rollup、或者某個鏈提供數據可用性,而是作為通用化的解決方案。
圖片來源:https://blog.celestia.org/celestiums/
我們以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。這裡暫不展開討論)
小結
圖片來源:IOSG Ventures,據Celestia Blog改制
在逐一討論上述方案後,我們從安全性/去中心化程度、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是通用化的方案,並不限於以太坊本身。
最後我們在表格中對上述方案做個總結。
圖片來源:IOSG Ventures
Closing Thoughts
- 在討論完上述數據可用性問題之後,我們發現所有方案本質上是在三難困境的相互制約下做權衡取舍,而方案之間的區別在於權衡的「細粒度」不同。
- 從用戶角度考慮,協議提供同時鏈上和鏈下數據可用性的選項是合理的。因為在不同的應用場景之下、或者不同的用戶群體之間,用戶對安全性和成本的敏感程度亦各不相同。
- 上文更多討論了數據可用性層對以太坊和Rollup的支持。在跨鏈通信上,Polkadot的中繼鏈為其他平行鏈提供了數據可用性的原生安全保證;而Cosmos IBC依賴於輕客戶端模型,故確保輕客戶端能夠驗證源鏈和目標鏈的數據可用性至關重要。
- 模組化的好處在於可插拔和靈活性,能夠按需為協議做適配:例如卸下以太坊的數據可用性包袱,同時確保安全和信任級別;或是在多鏈生態下提升輕客戶端通信模型的安全級別,降低信任假設。不僅限於以太坊,數據可用性還可以在多鏈生態、甚至未來更多的應用場景下發揮作用。
我們認為:未來的3至5年內,區塊鏈的架構必然會由單體化向模組化演變,各層呈現低耦合狀態。未來可能出現Rollup-as-a-Service(RaaS)、Data Availability-as-a-Service(DAaaS)等許多模組化組件的提供商,實現區塊鏈體系結構的可組合性樂高。模組化區塊鏈是支撐下一個周期的重要敘事之一。 - 其中,執行層的估值巨獸(即Rollup)已經「四分天下」,後來者寥寥;共識層(即各個Layer1)逐鹿中原,在Aptos和Sui等公鏈開始嶄露頭角後,公鏈競爭格局雖未塵埃落定,但其敘事已是新瓶裝舊酒,難以尋找合理的投資機會。
而數據可用性層的價值仍然有待被發掘。