原文:《一文讀懂數據可用性賽道的發展現狀

作者:0x1

數據可用性(Data Availability)主要存在於輕客戶端節點相對全節點的語境下。對於輕客戶端節點的數據可用性問題,行業內已經達成共識——採用糾刪碼(erasure codes)來解決。

不僅輕客戶端節點有數據可用性問題,Layer1+Layer2的敘事也好,Modular Blockchain的敘事也罷,都會存在數據可用性問題。

目前來看,行業裡針對數據可用性問題,主要有以下三個方面的方案:

一、在L1鏈上存放數據的降成本方案——EIP-4488和EIP-4844

以太坊用Rollup擴容時做一筆交易,主要有三類費用:執行費用(網絡中所有節點執行交易並且驗證其有效性的費用)、存儲/狀態費用(更新新狀態的費用)、數據可用性費用(將數據發佈到L1的費用)。其中,數據可用性費用佔大頭。

目前Rollup上傳數據到L1是以Calldata的形式,這種方式非常貴。所以提出了EIP-4488,可以將每個非0字節的Calldata成本從16Gas降低到3Gas,但其實這個費用仍然挺高的。

然後,又提出了EIP-4844提案,即Proto-Danksharding。引入了一種稱為Blob carrying Transactions的交易格式。這種交易格式與普通的交易格式相比,多了一個Blob的位置可以用來存放L2的數據。而且,Blob數據在一個月後會被節點刪除,從而大幅節省了存儲空間。

Blob這種交易格式能夠提供比Calldata更廉價的數據可用性。主要有兩方面原因:一方面,Callda存在於Execution Payload中,而Blob數據存儲於Prysm節點或者Lighthouse節點中(而不是在Geth中),相比而言Calldata需要被合約讀取時所消耗的資源要多很多;另一方面,Blob數據是短期存儲,一個月後節點會刪除Blob數據。

總而言之,這可以理解為Ethereum在L1鏈上降低數據可用性成本的一個方案。

另外,也提了一個配套的驗證數據可用性的方案——數據可用性抽樣(DAS,Data Availability Sampling),節點通過DAS檢查,可以只下載一些隨機選擇的塊來驗證一個塊是否已發布。由於DAS可以對區塊數據做並行化驗證,所以未來數據分片(Data Sharding)的數量即使很多,也不會增加單個驗證節點的負擔,反而會刺激更多驗證節點加入,從而保證驗證節點的充分去中心化。為了實現DAS,引入了糾刪碼技術;同時為了確保糾刪碼被正確編碼,又引入了KZG多項式承諾(KZG Polynomial Commitments)。

上述一系列解決方案之後,Ethereum節點(或者輕客戶端)只需要隨機下載一部分數據塊,就能驗證所有數據是可用的。

二、執行層Rollup推出的數據可用性方案

目前頭部的執行層Rollup也有自己的數據可用性解決方案,以StarkEx、zkSync2.0、Polygon zkEVM等為例。

StarkEx

StarkEx是一個用於創建許可的、特定於應用程序的擴容解決方案框架。目前有包括dYdX、Immutable、Sorare、DeversiFi、Reddio等項目採用StarkEx解決方案。

StarkEx具有多種數據可用性模式:Rollup、Validium、Volition。這三種模式都是基於有效性證明。在Rollup模式中,所有數據都在鏈上提交(data on-chain);在Validium模式中,數據保持在鏈外(data off-chain),只有對最近狀態的承諾以及該狀態的有效性證明提交到鏈上;Volition模式是一種混合模式,在這種模式下用戶可以自行選擇單個交易粒度的數據存儲模式是鏈上還是鏈下。

由於Validium的數據保持在鏈外,只需要把最近狀態的承諾和證明提交上鍊,所以Validium交易費用更低,同時TPS也更高,但代價是StarkEx Validium的運營商(Operators)可以凍結用戶的資金。 StarkEx引入了一個獲得許可的數據可用性委員會(DAC,Data Availability Committees) ,DAC必須通過其法定人數對狀態的每次更新進行簽名來確認它已收到數據。目前在StarkEx中,DAC由8名參與者組成。

zkSync

zkSync2.0引入了一個新的整體架構,提供zkRollup和zkPorter兩種賬戶的混合。但這兩部分也是可組合和可互操作的:zkRollup端的合約和賬戶能夠與zkPorter端的賬戶無縫交互,反之亦然。從用戶的角度來看,唯一明顯的區別是zkPorter賬戶的費用便宜100倍。

解讀數據可用性賽道:如何講好模塊化區塊鏈的敘事?

zkRollup狀態具有鏈上數據可用性,zkPorter則採用鏈下數據可用性。具體而言zkRollup的數據可用性在L1,zkPorter的數據可用性在L2。其中,zkRollup的交易數據通過Calldata發佈到Ethereum,這個就是常規操作,有特色的是zkPorter的數據可用性方案。

zkPorter通過結合zkRollup和分片思想的混合方法來處理數據可用性。它可以支持任意多個分片,每個分片都有自己的數據可用性策略,由分片的智能合約定義。分片的選擇在個人賬戶級別進行控制。相當於把數據可用性委託給各個分片,這些分片可以自由選擇不同的解決方案。

zkPorter的分片主要包括:Shard 0、Guardians Shard和Protocol X Shard。

解讀數據可用性賽道:如何講好模塊化區塊鏈的敘事?

Shard 0是一個簡單的zkRollup shard,具有底層以太坊L1的完整數據可用性和安全保證。所以Shard 0是zkPorter內部運行成本最高的分片,大約是在主網上交易成本的1/100。

其他分片則是在自己的智能合約上定義自己的數據可用性策略。 zkPorter的分片交換鏈上數據可用性,使交易成本進一步降低10-100倍,TPS增加超過基礎分片。 zkPorter引入了一種可選的驗證器機制——zkPorter Guardians——這種機制使得協議能夠邀請協議利益相關者作為協議分片上的數據可用性保證人。

zkPorter的數據可用性由zkSync代幣持有人(監護人)保護。他們通過簽署區塊來跟踪zkPorter端的狀態,以確認zkPorter賬戶的數據可用性。監護人使用zkSync代幣參與權益證明(PoS)。這也就是所謂的數據可用性的加密經濟保證。

Polygon zkEVM

Polygon zkEVM是一種基於加密證明的去中心化以太坊Layer2擴容方案,可為交易提供驗證和快速確定性。和Polygon Avail一樣都是Polygon推出的擴容方案,側重點有所不同。雖然他們推出了Polygon Avail這種通用的數據可用性方案,但Polygon zkEVM還是設置了自己的數據可用性方案。

Polygon zkEVM也是採取混合模式的數據可用性,可以選擇Validium或者Volition。 Validium模式下,數據存儲在鏈下,只有有效性證明在鏈上發布;Volition模式下,對於某些交易,數據和有效性證明都保留在鏈上,對於其餘交易則只有證明在鏈上。

Scroll

當然,也有尚未設計自己的數據可用性方案的zkRollup,比如Scroll。

其CTO Ye Zhang在接受鏈捕手採訪時表示,“Scroll暫時沒有設計專門的數據可用性方案。對以太坊技術的時間線還是比較樂觀的,不論是Danksharding還是Proto-Danksharding。其次,引入額外的數據可用性方案會讓系統整體的安全性有一定的妥協,所以我們認為長期來看最好還是用以太坊作為原生的數據可用層。”

三、數據可用性的通用解決方案

除了Ethereum L1和Rollup L2在解決數據可用性問題及降低數據可用性成本外,還有一些項目也在嘗試推出數據可用性的通用解決方案。這類項目有望在未來的模塊化區塊鏈中承擔起數據可用性層的重要作用。目前主要有Celestia和Polyon Avail兩個項目。

Celestia

Celestia是一個模塊化區塊鏈,專注於數據可用性層。 Celestia DA層有兩個關鍵特徵:數據可用性採樣(DAS)和命名空間默克爾樹(NMT)。 DAS使輕節點無需下載整個區塊即可驗證數據可用性;NMT使Celestia上的執行和結算層能夠下載僅與它們相關的交易。

Celestia要成為一個獨立的數據可用性層,有三個核心事項:

  • Rollup將所有交易數據傳遞給Celestia;
  • Celestia在其網絡上發布所有這些數據;
  • Ethereum確認Celestia已經存儲和發布了這些數據,並且可以隨時訪問。

總而言之,Celestia通過糾刪碼(Erasure Code)+欺詐證明+經濟約束和激勵機制實現了這個通用的數據可用性解決方案。

Polygon Avail

Polygon是一個生命力很強的項目,其團隊規劃和研發能力非常強。 Polygon經歷了擴容技術方案從狀態通道、Plasma到Optimstic Rollup、zk Rollup的演變,Polygon團隊內部也探索了多種擴容方向,現在也仍然保持著多個擴容方向的推進,比如:Polygon Avail、Polygon Zero 、Polygon Miden、Polygon zkEVM等。 Polygon就像是一個Layer2聚合器,聚合了多種擴容方案。

Polygon Avail是一個旨在解決以太坊擴容方案的數據可用性的項目。官方在官網上將Polygon Avail定義為一個模塊化區塊鏈,對應數據可用性層。

Avail可以為任何輕客戶端提供數據可用性的高保證,當然在官方文檔中也直言“並不比任何其他網絡為輕客戶端提供更高的DA保證”。 Avail專注於通過利用KZG多項式承諾、糾刪碼和其他技術來允許輕客戶端高效且隨機地小樣本採樣,從而證明區塊數據可用而無需下載全部區塊以驗證其完全可用性。

與Celestia一樣,Polygon Avail也是一個通用的數據可用性解決方案。與Celestia不同的是,Celestia採用欺詐證明確保糾刪碼正確,而Polygon Avail則採用KZG承諾。 Celestia 實現起來比較簡單,但由於其糾刪碼和輕節點採樣數據的規模較大,因此需要的通信帶寬略高。 Avail 涉及相對複雜的加密實現,難度稍大。它的優點是糾刪碼規模小,輕節點採樣數據量小,帶寬要求低。

總結

以上三個方面的方案都是旨在解決鏈上數據可用性問題,或在L1上引入存放數據的新方式,或以模塊化的視角看待區塊鏈的發展然後去做通用的數據可用性層,或在L2上設計Data off-chain的廉價數據可用性方案。

解讀數據可用性賽道:如何講好模塊化區塊鏈的敘事?

我感覺這些方案在未來很長一段時間會共存。 Layer1+Layer2的架構下,“Blob”取代“Calldata”承接Layer2的數據可用性,Validium、Volition、zkPorter則以有限相關方範圍內的經濟約束和激勵機制確保Layer2本身也具備數據可用性解決方案。模塊化區塊鏈的敘事下,Polygon Avail和Celestia類通用的數據可用性方案則以相對更加去中心化的方式,在未來承擔起DA層的責任。

同時,更希望能看到更多優秀的創業團隊在數據可用性領域的探索。現有的這些數據可用性解決方案是探路人,但我總感覺這些方案還是差些興奮點。