原文作者:Jiawei,IOSG Ventures
原文作者:Jiawei,IOSG Ventures
tl;dr:
原文編輯:Olivia,IOSG Ventures
如果「The Merge」進展順利,分片將成為以太坊在2023 年及之後的開發主軸,而距離2015 年分片被提出,其含義已經發生了很大變化。
圖片來源
圖片來源
引言
圖片來源
轉眼2022 年已走過一半。我們回看Vitalik 在2018 年Devcon 演講中提出的Serenity Roadmap,容易發現以太坊的發展路徑幾經更迭— 對比當前的路線圖,分片被賦予新的含義,eWASM 亦少有人提及。
為了避免潛在的欺詐和用戶誤導問題,今年1 月底,以太坊基金會宣布棄用「ETH2」的說法,而是把當前的以太坊主網改稱為處理交易和執行的「執行層」,把原ETH2的說法改稱為協調和處理PoS 的「共識層」。
圖片來源
圖片來源
圖片來源
本文我們將著重討論分片(Sharding)。原因在於:其一,假定主網合併能夠在年內順利實現,那麼
分片將緊隨其後,作為2023 年以太坊的開發主軸。其二,以太坊分片的概念最早由Vitalik 在2015 年的Devcon 1 中提出,此後GitHub 的Sharding FAQ 中提出了分片的6 個發展階段(如上圖)。然而,隨著以太坊路線圖的更新和相關EIP 的推動,分片的含義和優先級都產生了很大變化。
當我們在討論分片時,需要先確保對其含義的理解達成一致。綜上兩點,梳理清楚分片的來龍去脈是很重要的。本文將著重討論以太坊原分片、 Danksharding 和Proto-Danksharding 的由來、進展和未來路線,而非具體到每個技術細節。關於Danksharding 和Proto-Danksharding 的詳細內容,可參考IOSG 此前的文章:、「擴容殺手鐧Danksharding 會是以太坊分片的未來嗎」。
Quick Review
「EIP4844:即將開啟L2 交易費降低可預見的窪地效應」
這篇文章中將會多次提到Rollup、數據可用性和分片。
圖片來源
圖片來源
圖片來源
以太坊全節點對EVM 的完整狀態進行存儲,並參與所有交易驗證,這樣確保了去中心化和安全性,但隨之而來的是可擴展性的問題:交易線性執行,且需要每個節點進行逐一確認,這樣無疑是低效的。
背景
圖片來源
背景
背景
背景在聊Danksharding 之前我們不妨先花點時間了解其背景。
圖片來源圖片來源
圖片來源此後,Vitalik 在2021 年12 月發表的「Endgame」中描述了以太坊的最終圖景:區塊產出是中心化的,但區塊驗證實現去信任且高度去中心化,同時確保抗審查。
圖片來源
圖片來源
Proto-Danksharding
圖片來源
Proto-Danksharding 提出的背景在於,雖然Rollup 方案對比以太坊主鏈而言顯著降低了交易費用,但還沒有到足夠低的理想程度。這是由於以太坊主鏈上提供數據可用性的CALLDATA 仍然佔據較大的花費(16gas / byte)。在原先的設想中,以太坊提出在數據分片中提供每個區塊16MB 的專用數據空間給Rollup 使用,但距離數據分片的真正實施仍舊遙遙無期。
今年2 月25 日,Vitalik 和DankRad 等提出了EIP-4844(Shard Blob Transactions)提案,也即Proto-Danksharding,旨在以簡單、前向兼容的方式擴展以太坊的數據可用性,使其在Danksharding 推出之後仍然可用。該提案的改動僅發生在共識層上,不需要執行層的客戶端、用戶和Rollup 開發者進行額外的適配工作。
Proto-Danksharding 實際上並未執行分片,而是為將來的分片引入了一種稱為「Blob-carrying Transactions」的交易格式。這種交易格式區別於普通交易在於其額外攜帶了稱為blob 的數據塊(約為125kB),使區塊實際上變大,從而提供比CALLDATA(約為10kB)更加廉價的數據可用性。
然而,「大區塊」的普遍問題是對磁盤空間的要求不斷累加,採用Proto-Danksharding 將使以太坊每年額外增加2.5TB 的存儲量(當前全網絡數據僅為986GB)。因此,Proto-Danksharding 設置了一段時間窗口(例如30 天),在此之後對blob 做刪除操作,用戶或者協議可以在這段時間內對blob 數據進行備份。
即,以太坊的共識層僅僅作為一個高度安全的「實時公告板」,確保這些數據在足夠長的時間裡是可用的,並使其他用戶或協議有足夠的時間來備份數據,而非由以太坊永久保留所有的blob 歷史數據。這麼做的原因是,對存儲來說,每年新增的2.5TB 不在話下,但對以太坊節點卻帶來不小的負擔。
至於可能導致的信任假設問題,實際上只需有一個數據存儲方是誠實的(1 of N),系統就可以正常運作,而不需要實時參與驗證、執行共識的驗證者節點集(N/2 of N)來存儲這部分歷史數據。
那麼,有沒有激勵來推動第三方對這些數據進行存儲呢?筆者暫時沒有發現激勵方案的推出,但Vitalik 本人提出了幾個可能的數據存儲方:
BitTorrent;
針對應用的協議(例如Rollup)。它們可以要求節點存儲與應用相關的歷史數據,如果歷史數據丟失,會對這部分應用造成風險,因此它們有動力去做存儲;
以太坊的Portal Network,這是一個提供對協議的輕量級訪問的平台;
區塊鏈瀏覽器、API 提供者或者其他數據服務商;
圖片來源
圖片來源
圖片來源
在Proto-Danksharding 中我們提到新的交易格式使得區塊實際上變大了,並且Rollup 也累積了大量數據,節點需要下載這些數據來保證數據可用性。
DAS 的想法是:如果可以把數據分為N 個塊,每個節點隨機地下載其中的K 個塊,就能驗證所有數據是否可用,而無需下載所有數據,這樣就能大大減少節點的負擔。但如果某個數據塊丟失了怎麼辦?僅僅通過隨機下載K 個塊很難發現某個塊丟失了。為了實現DAS,引入了糾刪碼(Erasure Coding)技術。
糾刪碼是一種編碼容錯技術,基本原理是把數據分段,加入一定的校驗並使各個數據段之間產生關聯,即使某些數據段丟失,仍然能通過算法將完整的數據計算出來。
如果把糾刪碼的冗餘比例設置為50%,那麼意味著只需要有50% 的區塊數據可用,網絡中的任何人就可以重建所有區塊數據,並且進行廣播。如果攻擊者想要欺騙節點,則必須隱藏掉超過50% 的區塊,但只要進行多次隨機採樣,這種情況幾乎不會發生。 (例如,假設對區塊進行了30 次隨機採樣,這些區塊都恰好被攻擊者隱藏掉的機率是2^(-30) )……
既然節點不下載所有數據,而是依靠糾刪碼來重建數據,那麼首先需要確保糾刪碼被正確編碼,否則用錯誤編碼的糾刪碼當然沒法重建數據。這樣,進一步引入了KZG 多項式承諾(KZG Polynomial Commitments)
,多項式承諾是一個「代表」多項式的簡化形式,用於證明多項式在特定位置的值與指定的數值一致,而無需包含該多項式的所有數據。 Danksharding 中通過採用KZG 承諾來實現對糾刪碼的驗證。如果我們可以把所有數據都放在一個KZG 承諾中當然很省事,但是構建這個KZG 承諾,或者一旦有部分數據不可用,重建這個數據——兩者的資源要求都是巨大的。 (實際上,單個區塊的數據需要多個KZG 承諾來保證)
而同樣為了降低節點負擔從而避免中心化,Danksharding 中把KZG 承諾進行了進一步的拆分,提出了二維KZG 承諾框架。
當我們依次解決上述問題之後,依靠DAS,節點或者輕客戶端只需要隨機下載K 個數據塊,就能夠驗證所有數據是可用的;這樣一來,即便引入「大區塊」之後,也不會過多地加重節點的負擔。
(注:特別地,Danksharding 中採用的糾刪碼算法是Reed-Solomon 編碼;KZG 承諾是由Kate、Zaverucha 和Goldberg 發表的多項式承諾方案。在此暫不做展開,對算法原理感興趣的讀者可自行拓展。此外,確保糾刪碼正確性的方案還有在Celestia 中採用的欺詐證明)
區塊提議者與構建者分離(PBS)
在當前情況下,PoW 礦工和PoS 驗證者既是區塊構建者(Builder),又是區塊提議者(Proposer)——在PoS 中,驗證者可以用MEV 的利潤獲取更多新的驗證者席位,從而有更多機會去實現MEV;此外,大型驗證池顯然比普通驗證人有更強大的MEV 捕獲能力,這樣導致了嚴重的中心化問題。於是,PBS 提出把Builder 和Proposer 進行分離。
PBS 的想法如下:Builder 們構建一個排好序的交易列表,並且把出價提交給Proposer。 Proposer 只需要接受出價最高的交易列表,且任何人在拍賣的獲勝者被選出之前,無法知道交易列表的具體內容。
圖片來源
圖片來源
圖片來源
圖片來源
圖片來源
圖片來源
小結
圖片來源把上述的數據可用性採樣(DAS)、區塊構建者和提議者分離(PBS)以及抗審查列表(crList)組合起來,就得到了完整的Danksharding。
我們發現,「分片」的概念其實已經被淡化了,儘管保留了Sharding 的叫法,但實際上的重點已經放在對數據可用性的支持上。
那麼Danksharding 對比原分片有哪些優勢呢?
(Dankrad 本人在這裡列舉了Danksharding 的10 個優點,我們選取兩個來具體解釋)
在原分片中,每個單獨的分片都有其提議者和委員會,分別對分片內的交易驗證進行投票,並由信標鏈的提議者收集所有投票結果,這項工作很難在單個Slot 內完成。而在Danksharding 中只在信標鏈上存在委員會(廣義的驗證者集,一定時間內隨機重選),由這個委員會來驗證信標鏈區塊和分片數據。這相當於把原來的64 組提議者和委員會簡化為1 組,無論是理論還是工程實現的複雜度都大大降低了。
Danksharding 的另一個優點是,以太坊主鍊和zkRollup 之間有可能實現同步調用。上文我們談到,在原分片中信標鏈需要收集所有分片的投票結果,這會產生確認的延遲。而在Danksharding 中,信標鏈的區塊和分片數據由信標鏈的委員會進行統一認證,也即同個信標區塊的交易可以即時訪問分片的數據。這樣激發了更多可組合性的想像空間:例如StarkWare 提出的分佈式AMM(dAMM),能夠跨L1/L2 進行Swap 或共享流動性,從而解決流動性碎片化的問題。
Closing Thoughts
在Danksharding 得到實施之後,以太坊將變成Rollup 的統一結算層和數據可用性層。
在上圖中,我們對Danksharding 進行一個總結。綜上,我們大致可以看到,未來的2 至3 年內,以太坊路線圖的指向性是非常明顯的——圍繞服務Rollup 而展開。儘管在此過程中路線圖改動與否仍然是未知數:Danksharding 預計將在未來18-24 個月內實現,而Proto-Danksharding 將在6-9 個月內實現。
但至少我們明確了Rollup 作為以太坊的擴容基礎,佔據著一定的主導地位。
根據Vitalik 提出的展望,在此我們也提出一些預測性思考和猜想:
原文鏈接
原文鏈接
參考材料:
https://consensys.net/blog/blockchain-explained/the-roadmap-to-serenity-2/
https://www.web3.university/article/ethereum-sharding-an-introduction-to-blockchain-sharding
https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698
https://twitter.com/pseudotheos/status/1504457560396468231https://ethos.dev/beacon-chain/
https://notes.ethereum.org/@fradamt/H1ZqdtrBF
https://cloud.tencent.com/developer/article/1829995
https://medium.com/coinmonks/builder-proposer-separation-for-ethereum-explained-884c8f45f8dd
https://dankradfeist.de/ethereum/2021/10/13/kate-polynomial-commitments-mandarin.html
https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum