模塊化區塊鏈中,執行層和共識層已是紅海市場,數據可用性層的價值仍然有待被發掘。
原文標題:《IOSG Weekly Brief |拆解數據可用性層:模塊化未來中被忽視的樂高積木#136》
撰文:Jiawei,IOSG Ventures
tl;博士
對於輕客戶端的數據可用性,採用糾刪碼來解決該問題幾乎沒有異議,不同點在於如何確保糾刪碼被正確編碼。 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區塊鏈
在聊數據可用性之前,我們先花點時間對模塊化區塊鏈進行簡要回顧。
圖片來源: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
圖片來源: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
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 由 Rollup 提供
在最簡單的Validium 方案中,由中心化的數據運營商來負責確保數據可用性,用戶需要信任運營商不會作惡。這樣的好處是成本低,但實際上幾乎沒有安全保證。
於是,StarkEx 在2020 年進一步提出了由數據可用性委員會(DAC)維護的Validium 方案。 DAC 的成員是知名且在法律管轄區內的個人或組織,信任假設是他們不會串通和作惡。
Arbitrum 今年提出了AnyTrust,同樣採用數據委員會來確保數據可用性,並基於AnyTrust 構建了Arbitrum Nova。
zkPorter 則提出由Guardians(zkSync代幣持有者)來維護數據可用性,他們需要質押zkSync代幣,如果發生了數據可用性故障,那麼質押的資金將被罰沒。
三者都提供了稱為Volition 的選項:用戶按需自由選擇鏈上或鏈下數據可用性,根據具體的使用場景,在安全性和成本之間自行取捨。
圖片來源:https://blog.polygon.technology/from-rollup-to-validium-with-polygon-avail/
一般 DA 場景
提出上述方案基於這樣的想法:既然普通運營商的信譽度不夠高,那麼就引入更權威的委員會來提高信譽度。
一個小型委員會的安全程度足夠高嗎?以太坊社區早在兩年前就提出了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
結束的想法
在討論完上述數據可用性問題之後,我們發現所有方案本質上是在三難困境的相互制約下做權衡取捨,而方案之間的區別在於權衡的「細粒度」不同。
從用戶角度考慮,協議提供同時鏈上和鏈下數據可用性的選項是合理的。因為在不同的應用場景之下、或者不同的用戶群體之間,用戶對安全性和成本的敏感程度亦各不相同。
上文更多討論了數據可用性層對以太坊和Rollup 的支持。在跨鏈通信上,Polkadot 的中繼鍊為其他平行鏈提供了數據可用性的原生安全保證;而Cosmos IBC 依賴於輕客戶端模型,故確保輕客戶端能夠驗證源鍊和目標鏈的數據可用性至關重要。
模塊化的好處在於可插拔和靈活性,能夠按需為協議做適配:例如卸下以太坊的數據可用性包袱,同時確保安全和信任級別;或是在多鏈生態下提升輕客戶端通信模型的安全級別,降低信任假設。不僅限於以太坊,數據可用性還可以在多鏈生態、甚至未來更多的應用場景下發揮作用。
我們認為:未來的3 至5 年內,區塊鏈的架構必然會由單體化向模塊化演變,各層呈現低耦合狀態。未來可能出現Rollup-as-a-Service(RaaS)、Data Availability-as-a-Service(DAaaS)等許多模塊化組件的提供商,實現區塊鏈體系結構的可組合性樂高。模塊化區塊鍊是支撐下一個週期的重要敘事之一。
其中,執行層的估值巨獸(即Rollup)已經「四分天下」,後來者寥寥;共識層(即各個Layer1)逐鹿中原,在Aptos 和Sui 等公鏈開始嶄露頭角後,公鏈競爭格局雖未塵埃落定,但其敘事已是新瓶裝舊酒,難以尋找合理的投資機會。
而數據可用性層的價值仍然有待被發掘。
參考
儘管自@epolynya 最早的推文以來一直密切關注模塊化區塊鏈模因,但我只是繞著頭 @CelestiaOrg 以及可以用它建造什麼。
我不是專家,可能會在某些地方關閉,但我想我會分享我的筆記以防萬一他們有幫助…… pic.twitter.com/Paz7UsTyBf
— 彼得 | 水庫 (@ptrwtts) 2022 年 4 月 1 日
1/ “模塊化區塊鏈”的想法正在成為圍繞可擴展性和區塊鏈基礎設施的類別定義敘述。 🧵👇https://t.co/4qayl99MnR pic.twitter.com/igCLUoPHXy
— 亞歷克 (@0xAlec) 2022 年 7 月 7 日
https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding
https://vitalik.ca/general/2021/04/07/sharding.html
https://coinmarketcap.com/alexandria/article/what-is-data-availability
https://dankradfeist.de/ethereum/2019/12/20/data-availability-checks.html
https://vitalik.ca/general/2021/04/07/sharding.html
https://www.parity.io/blog/what-is-a-light-client/
https://ethereum.org/en/developers/docs/scaling/validium/
https://forum.celestia.org/t/ethereum-rollup-call-data-pricing-analysis/141
https://ethresear.ch/t/adamantium-power-users/9600
https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view
https://blog.polygon.technology/introducing-avail-by-polygon-a-robust-general-purpose-scalable-data-availability-layer-98bc9814c048/
https://blog.polygon.technology/the-data-availability-problem/
https://blog.celestia.org/ethereum-off-chain-data-availability-landscape/
https://blog.celestia.org/celestiums/