引介


這是去中心化Rollup 訪談系列最後一期,本集從“數據可用性和去中心化存儲” 的角度探討rollup 去中心化。我們邀請到了EthStorage 創始人Qi Zhou ,針對DA 如何重用以太坊主網的安全屬性、EIP-4844 和danksharding、不同DA 模型的安全性對比進行了討論。周老師還向大家介紹了EthStorage 如何在下一次以太坊升級中與EIP-4844 進行結合。



Host: Franci


本期嘉賓:

  • EthStorage 創始人Qi Zhou, twitter @qc_qizhou


往期


第一期:如何去中心化Rollup?

  • Arbitrum 研究員Patrick McCorry


第二期:共享排序器和L2 共識

  • AltLayer Network 創始人Yaoqi Jia

  • Scroll 研究員Toghrul Maharramov

  • Starknet Exploration Lead Abdelhamid Bakhta


第三期: 證明者網絡和zk 硬件加速

  • Scroll 聯合創始人Ye Zhang

  • Cysic 聯合創始人Leo Fan


收聽

點擊訂閱Podcast,了解更多:

https://ecnpodcast.fireside.fm/decentralized-rollups-series-4


Youtube:

https://www.youtube.com/watch?v=fOrVFdo919I


小宇宙:

https://www.xiaoyuzhoufm.com/episode/64a19d287efe63899e65176d


時間戳


- 00:43 嘉賓介紹

- 05:42 數據可用性(DA) 如何保證Rollup 的安全

- 10:53 擴容區塊空間

- 14:07 從網絡帶寬成本和存儲成本的角度來理解DA

- 21:27 EIP-4844 和Danksharding 的關係,以及為什麼需要部署EIP-4844

- 25:21 Danksharding 如何解決區塊空間的擴容問題

- 27:33 EIP-4844 測試網的一些開發與經驗

- 31:00 數據可用性委員會(DAC) 的應用和局限

- 37:17 EthStorage 與DAC 的區別

- 39:50 存儲證明的機制

- 42:22 EthStorage 如何維持無需許可的存儲證明


嘉賓介紹


很高興能夠跟大家來分享一下我們對整個以太坊DA 技術、以及我們在這上面做的去中心化存儲的一些想法。我是18 年全職加入Web3 行業的。之前在谷歌、Facebook 這些大廠做工程師。而且有喬治亞理工(Georgia Institute of Technology) PhD 的學位。自從2018 年,我一直在關注並且從事Web3 基礎設施的工作。主要是因為之前在大廠裡面也是做這方面的事情,包括分佈式系統、分佈式的存儲。另外也是認為這方面在整個區塊鏈還有非常多的可以改進的空間。不管是一開始我們做的各種,比如說像叫做執行分片的技術。那麼這是以太坊的分片1.0,到現在以太坊的分片2.0 的這種叫數據分片的技術,以及後來的數據可用性。其實都是在圍繞整個Web3 基礎設施做證明的一些創新和工作。


所以我們也是緊密地去跟以太坊路線圖,去學習研究,並且以這種社區的方式參與、改進。我們去年年底非常榮幸地拿到了以太坊基金會對我們在“數據可用採樣”的研究的一個支持。幫以太坊基金會做一些偏理論的,danksharding 上的一些研究工作,包括數據如何能夠有效恢復。同時我們也在以太坊的DA 技術基礎上開發EthStorage 這樣一個以太坊的數據層。我們可以使用以太坊的智能合約大規模地去驗證鏈下數據存儲。這個對於以太坊來說也是非常有意義的。所以我今天非常高興能跟大家一起分享,包括EthStorage 如何在DA 技術上去更好地構建數據存儲層的一個網絡。


訪談部分


第一部分:關於DA 定義的討論

數據可用性(DA) 如何保證Rollup 的安全

首先我在研究DA 的過程也是發現很多人對DA 的定義有一些不理解的地方。今天也非常高興能夠討論一下,此前我也跟很多以太坊基金會的成員,像 Dankrad Feist 他們討論DA,以及DA 在整個的以太坊L2 裡面扮演的重要角色。


前面說到了以太坊rollup 的一些基本工作機制,怎麼去把這些鏈上的交易挪到鏈下,然後再通過一系列證明方式(fraud proof 和validity proof) 去告訴L1 的智能合約這些執行結果是可以通過這些證明方式來證明是對的。


那麼有個非常重要的核心是,他們希望能夠復用以太坊本身網絡的安全性,但同時又能夠對以太坊整個計算能力進行極大的擴容。剛才說計算能力擴容,實際上是把鏈上計算放到鏈下,那麼怎麼能夠同時實現以太坊的安全性。


比如在Optimistic Rollup 情況下,怎麼保證有人能夠挑戰sequencer 在做惡意的事情,這裡面很重要一點是需要知道鏈下具體的原始交易是長什麼樣子的。如果鏈下具體的原始交易都無法獲得的話,那我就無法找到原始交易記錄去鏈上對sequencer 進行挑戰。所以DA 能夠保證安全性,就是因為它需要讓每一筆鏈下交易的元數據可以拿到鏈上。


擴容區塊空間

因為我們所有的交易數據都要上鍊,即便不需要計算,但我們還是會產生巨大的交易數據。那麼它要解決的核心問題,大家可以理解它是一種非常有效的技術,來擴充區塊的空間。大家如果對整個區塊鏈的結構非常了解的話,每個區塊裡麵包含了很多交易內容。這個交易的區塊本身,我們把它叫做區塊空間。


當前以太坊每一個區塊的空間大概是2、300 KB。但是這樣的數目很明顯無法滿足接下來以太坊擴容的需求。在這裡可以做一個非常快速的計算:200 kB 的空間,除以每個交易大概是100 個字節數目的話,得到2000 筆交易的數目。 2000 筆再除以以太坊的區塊時間12,也就是說以太坊的TPS 上限就被限制在100 左右。那麼這其實對於整個以太坊擴容計劃來說還是一個非常小的數目。


所以,以太坊L2 關心的是如何保障安全的同時,怎麼能夠把大量的區塊數據放到block space 裡面去。然後使得不管是欺詐證明還是有效性證明都能夠重用以太坊的區塊空間裡面的數據去做相應的檢查。最後讓鏈下交易的計算結果的安全性能夠得到以太坊的保證。那麼這基本上就是DA 跟以太坊的安全性之間的一些關係。


從網絡帶寬成本和存儲成本的角度來理解DA

DA 主要的成本是兩個方面,一個叫做網絡帶寬的成本,另一個是存儲成本。


從網絡帶寬成本來說,比如在P2P 網絡中,就是比特幣和以太坊當前的區塊廣播的方式,是通過gossip (廣播) 給所有P2P 節點,去告訴大家我有一個新的區塊,長這個樣子的。那麼這樣的網絡方式的好處是,它非常安全,所有網絡節點最終會接收到一個備份。


不好的地方就是,它對網絡的帶寬和延遲都會有很大的一個開銷。我們知道以太坊是12 秒出一個區塊,經過POS 升級之後。那麼如果這個區塊過大導致它可能會超過12秒的話,大量的區塊都無法出塊,最後使得整個網絡帶寬還是下降到一個大家無法接受的程度。所以你可以認為DA 是解決區塊鏈大量數據上鍊的帶寬問題。


那麼第二個就是它的存儲成本,這方面其實以太坊基金會有非常多的討論。核心解決方案的設計中,它不會讓整個DA 上傳的區塊數據一直被保存。


這引出另外一個問題。當我有這麼多數據上了鏈,但是一個星期或者兩個星期之後,會被以太坊的協議丟棄。那麼這個過程,我們有沒有一些更好的去中心化方案能夠來保存這些DA 的數據。


這也是我們在設計EthStorage 時的一個初衷。第一方面,很多Rollup 它需要有更長時間去保存數據。第二方面,有了這些數據之後,我其實可以通過DA 更好去完成一些全鏈上的應用。舉例來說全鏈的NFT,或者是很多DApp 的前端,甚至包括一些像社交網絡裡面的大家的寫的大量文章或者評論。那麼這些都可以通過DA 的網絡,通過更低的成本去上傳到整個區塊鏈,並且能獲得跟以太坊L1 一樣的安全保障。


這是我們在研究以太坊DA 的整個技術,包括跟以太坊很多的核心人員討論之後,發現在這方面,以太坊需要有一個存儲層,而且是一個去中心化的、不需要對以太坊本身的協議進行升級的一個存儲層,或者我們叫模塊化的存儲層來解決數據的長期保存問題。


第二部分:關於不同DA 方案的討論

EIP-4844 和Danksharding 的關係,以及為什麼需要部署EIP-4844


Proto-danksharding 又叫做EIP-4844,我認為可以算是以太坊接下來一個非常重大的升級。為什麼要做4844,有一個非常重要的原因,以太坊基因會在估計以太坊分片的升級路線,也就是Danksharding 的時間的時候,他們認為整個的升級時間相當長,比如說可能需要三年到五年。當時是2021、2020 年的時候。


那麼在這個過程中,他們預測很快會有非常多的Rollup 在以太坊上面在跑,但是因為Danksharding 它提供的數據接口,和現在Rollup 使用的Calldata 數據接口是完全不一樣的。這會導致以太坊大量的應用會因為新的接口使得他們無法快速升級,並且能夠無縫地獲得Danksharding 給他們帶來的好處。


我去參加去年的Devcon 時,Vitalik 他也提到了希望能夠讓以太坊更好地為這些Layer 2 提供服務,使得他們可以在使用一樣的Danksharding 接口的情況下開發他們的合約。當Danksharding 在升完級之後,他們就可以直接繼承Danksharding 提供的新好處,而不需要再去升級他們已有的,並且已經測試好了的合約。


所以EIP-4844 它實際上是一個超級簡化版的Danksharding,它提供了一個跟Danksharding 一樣的應用接口,包括一個新的opcode 叫Data Hash;以及新的一個數據對象叫Binary Large Objects,也就是Blob。


這些數據對像是為了設計能夠讓rollup 提前去兼容Danksharding 提供的數據結構,也就是說Danksharding 會提供一樣的Data Hash 和Blob 這樣類似的概念。但是通過EIP-4844,他們就提前把這些想法在以太坊接下來的升級中實現。所以在整個EIP-4844 的設計功能中,大家可以去看他們的接口以及比如說Pre-compile 和新加的指令,那麼都已經可以隱隱看到整個Danksharding 的未來,在以太坊上面怎麼去跟應用層交互的一個過程。


那麼這方面以太坊也是從應用角度去思考,怎麼能夠提前通過一些升級讓應用更好地去享受在以太坊上面的各種擴容技術,並且不需要有額外的升級成本。


但是有一個問題就是EIP-4844 並不解決整個區塊空間的擴容問題,Danksharding 才能解決。當前以太坊區塊空間大概是200 KB。到了Danksharding 之後,在規範中計劃的大小是32 兆,將近是100 倍的提升。那麼現在的EIP-4844 其實並沒有解決區塊上鍊的帶寬問題。


Danksharding 如何解決區塊空間的擴容問題


4844 的設計下,數據在上鍊的廣播過程中,還是使用跟之前calldata 一樣的方式,是通過P2P 的網絡進行廣播。那麼這種廣播方式最終還是會受到整個P2P 網絡帶寬的物理瓶頸的限制。而Danksharding 的設計方式改變了P2P 網絡廣播,然後通過數據採樣技術,使得大家不需要去下載所有區塊數據的同時,也知道這些區塊數據能夠被下載到。


其實某種意義上來說,有點像ZK 的方式,通過數據採樣方式,我知道網絡裡麵包含了( 32 兆字節/區塊)大小的由Danksharding 帶來的區塊數據。但是我不需要去下載所有32 兆的數據,去保存到本地。如果有足夠的機器帶寬和足夠的存儲空間性能,也可以這麼做,但對於普通的驗證者來說,他是不需要去下載全部32 兆的數據。


EIP-4844 測試網的一些開發與經驗


我們最近已經把我們內部的EIP-4844 的測試網跑起來,並且部署相應的合約去測試,包括blob 的數據上傳、合約的調用以及數據驗證,我們都已經完全走通。所以EIP-4844 一旦上線,我們就可以在第一時間把我們的合約部署上去。


同時我們也是希望能夠通過我們現在和以太坊一些開發者的合作,以及我們的已經開發好的一些合約,能夠為以太坊接下來各種rollup 開發還有學習以及各種工具的時間。


所以我們最近提交了非常多的代碼到以太坊,針對EIP-4844 的工具集,包括新的智能合約去支持opcode,因為solidity 現在還不能支持data hash 這個opcode。那麼所有的一些工作,我們其實都已經在跟以太坊基金會的一些開發者進行同步。


數據可用性委員會(DAC) 的應用和局限


因為現在L2 用戶支付的開銷其中可能有90% 以上的費用都是支付給數據可用的費用,很多L2 為了能夠更好地降低數據的上傳成本,一些項目方包括ZKSync 出了ZKPorter,還有像Arbitrum做了Arbitrum Nova。他們通過提供自己的DAC 數據可用性委員會來提供自己的數據層。


這個數據委員會會帶來一些額外的信任,才能達到以太坊一樣的額外的安全級別。所以他們在挑選數據委員會的時候,一般都會挑選一些比較大牌的比如說數據服務商,或者是大牌的公司去參與這個數據的保存。但是其實也會受到很多挑戰和質疑,因為大家覺得這其實是違背了去中心化的無准入的原則,也就是說大家都能夠去參與。但是現在的情況是大部分數據委員會都是幾個跟Layer2 項目方非常緊密的一些組織。


像Arbitrum Nova,我上次看的時候,可能有六七個這樣的節點。比如說跑在谷歌的雲上面,或者跑在Amazon 的雲上面的數據委員會節點去保存這個數據,並且他們都能夠提供所有在Arbitrum Nova 上面的執行成本。這樣的一個好處是使得他現在的執行成本是以太坊的大概千分之一。因為他不需要把所有的數據都去寫到以太坊的Layer1上面去。但是現在還是相對偏中心化,所以比較高價值的應用相對還會有比較大的擔憂,因為如果是有大量的資金,上千萬或上億的資金,那麼他必然要相信數據委員會的數據是可用的。


所以我們在設計EthStorage 的時候,其實是沒有任何數據委員會的概念。在設計過程中,我們希望所有人都能夠去參與,成為一個數據提供商。而且他們是通過加密的證明,去證明他們確實存了這一份數據。因為理論上來說數據委員會的這個模型,雖然我說我有七個和八個數據委員會節點,但是實際上,我完全可以只保存一份物理數據,但是我可以表現出來我有七八個地址都能提供這個數據。


然後怎麼去證明我這個數據有足夠多的物理副本來保證數據的安全性。其實是我們在做EthStorage 時一個非常重要的創新,也是我們去跟以太坊基金會ESP (生態支持計劃) 去宣講的時候重點強調的地方。我們通過EthStorage 使用的ZK 加密技術,去保障Layer2 數據提供的節點。他們能夠無准入加入並且能夠證明他們有這麼多的存儲副本,並且能更好保證數據的安全。


所以我覺得DAC 的確現在是一個非常臨時去解決數據上傳到Layer1 的成本的方案。我們相信我們通過EthStorage 的一些加密技術,再加上一些Layer1 基於以太坊的這種合約上面的一些證明驗證方式,能夠提供更好的數據保存的方案。接下來我們也是隨著以太坊的4844 上線,會主動把這些創新的內容,以及它在網絡上面跑的結果給大家分享。


EthStorage 與DAC 的區別


EthStorage 其實是一個以太坊存儲rollup,Storage rollup。那麼我們可以假設現在一個Layer 2 不是一個執行以太坊EVM,而是一個非常大的數據庫,或者叫key value database。它可以是上10 TB,上百TB,甚至上千,就是PB 級別的這樣一個數據庫。


那怎麼保證我的數據庫的數據能夠獲得以太坊一樣的安全保障。首先第一步,我們需要把數據庫裡面這些大規模的數據全部都要通過DA 發佈到以太坊Layer 1 上面去,使得大家都能夠看到這些數據在以太坊的整個DA 層是可以拿到的。但是我們不能保證它能夠永久的拿到,因為以太坊DA 會在兩個星期或者四個星期左右的時間裡丟棄掉這些數據。


第二步就是我們把這些數據上傳之後,接著去保存在我們Layer 2 的節點上。這跟DAC 不一樣,我們的數據保存節點是無需許可的,任何人都可以參與。並且它證明它的存儲,然後拿到相應的回報。這種方式是通過我們建立的一套存儲證明機制,當然這個存儲證明機制也是受到了像Filecoin、Arweave 這些系統的存儲證明的一些設計方案的啟發。但是我們需要專門針對以太坊的DA 框架以及以太坊智能合約去做相應的存儲證明的一個網絡和證明的系統。所以這方面的話,我們相信我們在以太坊整個生態,甚至整個去中心化存儲方面,我們是有一個非常獨特的貢獻的。


存儲證明的機制


基本上所有存儲證明的機制,包括像Filecoin、Arweave 都需要首先對用戶的元數據作一個編碼。但是這個編碼的過程是需要根據數據提供商的地址來進行編碼,也就是說每一個數據提供商他都需要有自己的不同地址,然後根據它的地址和元數據進行編碼之後保存一個叫做unique replica (唯一副本) 的東西。比如hello world 這個數據,在傳統中心化數據庫裡面,或者是傳統化的分佈式系統裡面,可能保存四五個到不同的物理機器上面去,每個保存都是hello world。但是在EthStorage 裡面,它保存四五個或者是十個二十個,它的hello world 都會根據每一個數據提供商的地址去編碼成為不同的數據,然後保存在不同的地方。


這樣的好處是,我們能夠通過密碼學的機制來證明有這麼多的不同地址,就是不同的存儲提供商。他們對這些數據進行了編碼,並且根據編碼數據做了相應的存儲證明。基本上Filecoin、Arweave 都是類似這樣的。但是他們只針對靜態數據,我們現在是針對以太坊DA 的熱數據。並且是可以通過以太坊智能合約去驗證,這份數據有這麼多的物理副本。也就是說每個編碼好的數據,我們去證明這些編碼好的數據保存在這個網絡,而且每個編碼數據對應的數據本身是不一樣的,因為它是由不同的存儲提供商的地址去編碼出來的。


所以基本上我們在設計的過程中去對現在已有的去中心化存儲的一些思路進行優化和改進。但是同時我們也需要對以太坊的DA 方案做很多優化,包括動態數據的修改,怎麼能夠在以太坊的合約上有效地證明和優化gas 開銷。那麼這裡面有非常多前沿的技術和研究需要完成。


EthStorage 如何維持無需許可的存儲證明


以太坊有種節點叫歸檔節點,會保存以太坊的所有交易的歷史記錄,包括世界狀態。但接下來Danksharding 裡面的一個巨大挑戰是Danksharding 計劃會在一年產生大概80TB 的數據。那麼假設以太坊跑了三到四年,它會產生200 到300TB 的數據,而且會不斷增加。那麼這其實會對歸檔節點有不少的挑戰,因為在運行歸檔節點過程中,它是沒有額外的代幣學經濟來激勵大家去保存這個數據的。


EthStorage 首先需要解決數據的永久保存的代幣學激勵的問題。這方面實際上我們也是採用了Arweave 的discounted cash flow 的模型來去實現激勵。並且同時非常有效地去讓它在整個智能合約上執行。


第二就是它的無需許可的方式。因為我們激勵設計裡面是鼓勵10 個、50 個甚至100 個節點在網絡裡面保存數據。所以對於任何一個節點來說,它都能夠去聯繫其中的任何一個節點,同步相應的數據,之後它就能夠成為數據存儲方。可能還會有更多數據激勵的一些優化設計。


第三個,存儲節點因為它一次性要保存所有的數據,可能是好幾百TB 甚至長期來說很有可能達到一個PB 級別的數據。那麼這樣的話對於單個節點來說,成本是非常高的。所以我們在這裡面再進一步做了一個叫做data sharding 的東西。這樣的話,對於普通節點,它只需要有4 TB 這樣的容量空間(我們現在設計是4 TB,當然後面可能會升級到比如8 TB) 它就可以去保存網絡中歸檔數據中的一部分,但我們又通過一些激勵機制保證大家最後把所有這些數據都拼在一起之後,都能夠在我們的layer2 網絡裡面保存。


所以在這裡面有非常多的問題,比如歸檔節點造成的各種數據太大的問題;代幣的激勵問題;還有去中心化的准入問題...這些問題我們就可以通過以太坊的智能合約部署在layer1 自動去實現的。那麼對我們來說,我們只是去提供數據網絡,使大家只要有足夠的數據成本就可以去下載數據並且生成存儲證明,提交到以太坊網絡裡面去,然後達到相應的回報。我們整個合約基本上已經設計完畢,並且已經在以太坊的4844 Devnet 上面開始進行調試。