2020 年10 月,Vitalik 發布了文章《以Rollup 為中心的以太坊路線圖》,確定了為L2 rollup 擴容協議保駕護航的基本思路:將執行層和數據層分離,以太坊共識層為其提供安全保障。隨後,以太坊分片技術也基於這個路線圖進行了幾次變更。圍繞擴容和分片,以太坊社區逐漸浮現出了各種各樣的術語與提案:模塊化結構、數據可用性、EIP-4844、EIP-4488、data blob、Danksharding 等等讓人應接不暇。他們之間的關係是什麼?如何提高rollup 的擴容效率?


在本期節目中,我們邀請了imToken Labs 的研究員和開發者、前以太坊基金會研究團隊開發者Nic Lin 來為大家介紹EIP-4844 的基本邏輯,以及它與以太坊分片技術開發路線、 Rollup 擴容之間的關係。


注:節目中嘉賓與主持人討論到的資料/資料可用性指的是data/data availability。


點擊收聽Podcast,了解更多:

ecnpodcast.fireside.fm



﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊


時間戳


00:41 - 引入

01:54 - 嘉賓介紹

04:22 - The Surge

06:29 - 以太坊分片設計發展史

16:07 - 以rollup 為中心的路線圖與模塊化

19:26 - 數據可用性/資料可用性與Calldata

25:45 - EIP-4488

30:09 - Shard blob transaction 的特點

34:31 - Rollup 如何使用4844

46:50 - Proto-danksharding 為rollup 和完整分片的發展有什麼影響

55:00 - 回顧

56:08 - 對這個提案的疑慮與期待


﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊


精彩摘錄


Q:在Rollup 的語境下, DA 到底指的是什麼呢?以及為什麼Rollup 需要上傳DA 到L1?


A:如果目前我們已經熟悉的1.0 這條鏈的話,我們其實根本不會意識到DA 這個問題,因為資料本身就是全都在鏈上。我們每個區塊、每一筆交易的資料都是在每個節點,都會看到這些資料。所以我們根本不會意識到,資料不可用這個問題。因為我們拿到完整的資料。


但是,比如說L1 的Block time 就是固定12秒、13秒,然後它的gas limit 就像現在3,000 萬,最多就是這樣。所以如果你要能夠達成擴容的話,你不可能叫所有dApp、所有的團隊都把交易在L1 執行。所以從很早以前就的Scaling solution,擴容方案就是說我們進到L2,我們把執行、把資料搬到鏈下去,我們不要在L1,因為L1 太貴太慢,要跟大家去競爭,資源很稀少。所以我們把交易跟資料都搬到鏈下去,所以過去就有很多不同的擴容,比如像sidechain 像plasma,然後到Rollup。


中間其實有幾個關鍵的改進,我自己會習慣單看side chain、plasma 跟rollup 的話,我把它看作一個演進的路線圖,就是sidechain 是現在相比來說是最不安全的。 Plasma 針對sidechain 的改變就是他把中心化權力很大的operator 的角色去掉,然後換成智能合約。後來rollup 相對它而解決的問題就是,plasma 其實把資料都是交給operator,operator 雖然不能任意的把錢拿走,或者說他如果做壞事的話,你可以自己離開plasma,這是他的優點,因為他都把這些規則寫在智能合約裡面。但是他最大的問題就是,你的資料其實是交在operator 的手上, operator 今天把資料藏起來的話,你就不能自己來產生一些證明,這個證明就是說我在plasma 上有多少錢,因為你要這些實際的交易資料,你才能算得出來說我現在有多少錢,但是我這些資料都在一個中心化角色手上的話,它就還是有攻擊的風險,我把資料藏起來不讓你看到。


所以說rollup 要解決的問題就是說,我們要怎麼解決資料不可用的問題。所以它的解決方法就是,我們乾脆把資料都上傳到L1,但是它雖然把資料都上傳到L1 上面,但是它不在L1 上去執行交易,而是在鏈下去執行交易,所以基本上就是把交易的執行搬到鏈下,搬到L1 這樣。它是用這個方法去解決資料可能性。


Q:EIP-4844 所引入的shard blob transaction 有什麼特點?


A:基本上這個shard blob transaction 其實就是為了rollup 所設計的。因為主要就是calldata,它的目的不符合rollup 的目的,然後它的成本又太高,對rollup 來說。所以我們就乾脆設計一個新的交易類型,專門給rollup 來放他們的資料這樣。


所以在shard blob transaction 裡面,它比一般的我們熟悉的transaction 多了一個欄位,就是Bob 欄位。這個blob 欄位就是讓rollup 來放它們的資料。這個blob 有兩個特性,第一個就是blob 的資料不像calldata 一樣能夠被合約存取到;然後再就是它是有一個保存期限,它不會像calldata,你一把資料放到calldata 之後,所有節點就必須要永遠的保存它這樣。所以它有兩點特性,第一點就是智能合約讀取不到,然後另一點就是它有保存期限。


Q:在Devcon VI 的一場由Ethereum Magicians 負責的協議路線圖會議中,Vitalik 提到4844 引入了點取值和blob 的概念,這使得L2 可以設置代碼一次後就能寫入並發布……以及無論我們以後如何胡亂設計分片,只要我們符合參數,rollup 都可以輕鬆做一些調整而不再需要做重新架構。怎麼理解他所說到這一點, rollup 方案集成這個交易類型之後會對它有一些什麼長期的影響?


A:所以他這邊講的可能就是,proto-danksharding 是danksharding 的一個準備。當切換到的danksharding 之後,proto-dansharding 已經為L2 做好了一些必要的準備,L2 其實不會受影響。

那你未來L1 不管怎麼設計,你做到怎樣的sharding、danksharding 或者是你最後又有新的sharding 出來,你L1 怎麼改變,其實對我L2 來說沒有那麼在意,根本就是跟我無關。我只需要你確保這些資料真的可以用就好了。


所以我們今天先在proto-danksharding 裡面先做好了一些改變,這些改變就包含引進shard blob transaction,讓rollup 知道說,你未來放資料不必再把資料放到calldata,而是放到blob 裡面就好了。剩下就是,我會幫你確保說這些blob 都會是可用的。


未來L1 怎麼去改變設計,我只要能確保說blob 資料是可用的,L2 就不用再做任何改變了,因為你已經提前做好了改變,把資料放到blob 就好。應該說L2 就是future-proof 的,你不必擔心說還要搭配未來sharding 設計,再去看把你的資料上傳到哪裡,會不會有什麼安全性的影響這樣。


﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊﹋﹊


訂閱ECN Podcast


訪問ecnpodcast.fireside.fm 收聽Podcast 以及獲取節目的其他詳細信息。你也可以通過泛用型播客客戶端Apple Podcasts、Pocket Casts、Castro、Google Podcasts、Spotify 等訂閱我們的節目。