作者:Jiawei,IOSG Ventures
- 如果「The Merge」進展順利,分片將成為以太坊在 2023 年及之後的開發主軸,而距離 2015 年分片被提出,其含義已經發生了很大變化。
- 在 Vitalik Buterin 提出「以 Rollup 為中心的以太坊路線圖」和以太坊的「Endgame」之後,以太坊的大方向發生了事實上的轉變——「退居幕後」,作為 Rollup 的安全性保證和數據可用性層。
- Danksharding 和 Proto-Danksharding 是一系列的技術組合,表現形式在於「發現問題」、引入或提出新技術來「解決問題」的一套組合拳。
- 時間線拉長到未來幾年,Rollup 的整體價值將變大:以太坊上呈現多 Rollup 的發展格局、跨 Rollup 基礎設施高度完善、 Rollup 生態高度繁榮——甚至超越以太坊本身。
引言
轉眼 2022 年已走過一半。我們回看 Vitalik 在 2018 年 Devcon 演講中提出的 Serenity Roadmap,容易發現以太坊的發展路徑幾經更迭— 對比當前的路線圖,分片被賦予新的含義,eWASM 亦少有人提及。
為了避免潛在的欺詐和用戶誤導問題,今年 1 月底,以太坊基金會宣布棄用「ETH2」的說法,而是把當前的以太坊主網改稱為處理交易和執行的「執行層」,把原 ETH2 的說法改稱為協調和處理 PoS 的「共識層」。
當前,以太坊官方的路線圖涵蓋了三部分內容:信標鏈、合併與分片。
其中,信標鏈(Beacon Chain)作為以太坊向 PoS 遷移的前置工作,以及共識層的協調網絡,於 2020 年 12 月 1 日啟用,迄今已運行近 20 個月。
合併(The Merge)指當前以太坊主網與信標鏈的最終合併,也即執行層與共識層的統一,標誌著以太坊正式遷移到 PoS,當前以太坊 Ropsten 與 Sepolia 測試網成功完成了合併,緊接著是 Goerli 的合併;如果一切順利,意味著我們離主網合併不遠了。
本文我們將著重討論分片(Sharding)。原因在於:
其一,假定主網合併能夠在年內順利實現,那麼分片將緊隨其後,作為 2023 年以太坊的開發主軸。
其二,以太坊分片的概念最早由 Vitalik 在 2015 年的 Devcon 1 中提出,此後 GitHub 的 Sharding FAQ 中提出了分片的 6 個發展階段(如上圖)。然而,隨著以太坊路線圖的更新和相關 EIP 的推動,分片的含義和優先級都產生了很大變化。當我們在討論分片時,需要先確保對其含義的理解達成一致。
綜上兩點,梳理清楚分片的來龍去脈是很重要的。本文將著重討論以太坊原分片、 Danksharding 和 Proto-Danksharding 的由來、進展和未來路線,而非具體到每個技術細節。關於 Danksharding 和 Proto-Danksharding 的詳細內容,可參考 IOSG 此前的文章:「擴容殺手鐧 Danksharding 會是以太坊分片的未來嗎」、 「EIP4844:即將開啟 L2 交易費降低可預見的窪地效應」。
Quick Review
這篇文章中將會多次提到 Rollup 、數據可用性和分片。
我們在這裡快速回看一遍三者的基本概念。
當前主流 Rollup 分為 zkRollup 和 Optimistic Rollup 。前者基於有效性證明,即批量執行交易,依賴密碼學證明 SNARK 來保證狀態轉換的正確性;後者「樂觀地」假設所有狀態轉換是正確的,除非被證偽;即需要一段時間窗口來確保錯誤的狀態轉換能夠被發現。
數據可用性對 zkRollup 和 Optimistic Rollup 都非常重要。對前者而言,用戶可以基於數據可用性重建二層的所有交易,以確保抗審查;對後者而言,需要使二層的所有數據都被發布,沒有被隱藏任一交易。至於當前數據可用性面臨的瓶頸與相應的解決方案,在下文中會提到。
以太坊全節點對 EVM 的完整狀態進行存儲,並參與所有交易驗證,這樣確保了去中心化和安全性,但隨之而來的是可擴展性的問題:交易線性執行,且需要每個節點進行逐一確認,這樣無疑是低效的。
此外,隨著時間推移,以太坊網絡數據不斷積累(當前達 786GB),運行全節點的硬件要求隨之水漲船高。全節點數量下降將引發潛在的單點故障,並削弱去中心化的程度。
直觀地看,分片相當於分工合作,即對所有節點進行分組,每筆交易只需要由單組節點進行驗證,並定期向主鏈提交交易記錄,以此實現交易的並行處理(比如有 1000 個節點,原來每筆交易都必須由每個節點進行驗證;如果把他們分為 10 組,每組 100 個節點來驗證交易,效率顯然大大提升了)。採用分片使得在提高可擴展性的同時,也降低了單組節點的硬件要求,從而解決上述兩個問題。
原分片
以太坊原方案中有 64 個分片,每個分片中都有獨立的提議者和委員會,提議者是被隨機選擇的一個驗證者,收集交易並進行排序;委員會是一組驗證者的集合(至少由 128 個驗證者組成),每隔一定時間被隨機分配到各個分片上,並驗證交易的有效性,如果委員會的 2/3 投票通過,則調用驗證者管理合約(VMC)向信標鏈提交交易記錄。區別於下述的「數據分片」,這種分片也被稱為「執行分片」。
背景
在聊 Danksharding 之前我們不妨先花點時間了解其背景。個人猜想,Danksharding 推出的社群氛圍基礎主要來自 Vitalik 的兩篇文章。這兩篇文章為以太坊的未來發展方向定下了基調。首先,Vitalik 於 2020 年 10 月發表了「以 Rollup 為中心的以太坊路線圖」,提出以太坊需要在中短期內對 Rollup 進行集中支持。其一,以太坊基礎層擴容將聚焦於擴大區塊的數據容量,而非提高鏈上計算或 IO 操作的效率。即:以太坊分片旨在為數據 blob(而非交易)提供更多空間,以太坊無需對這些數據進行解釋,只確保數據可用。其二,以太坊的基礎設施進行調整以支持 Rollup(如 ENS 的 L2 支持、錢包的 L2 集成和跨 L2 資產轉移)。長遠來看,以太坊的未來應該作為安全性高的、人人可處理的單一執行分片,以及可擴展的數據可用性層。
此後,Vitalik 在 2021 年 12 月發表的「Endgame」中描述了以太坊的最終圖景:區塊產出是中心化的,但區塊驗證實現去信任且高度去中心化,同時確保抗審查。底層鍊為區塊的數據可用性提供保證,而 Rollup 為區塊的有效性提供保證(在 zkRollup 中,通過 SNARK 來實現;在 Optimistic Rollup 中,只需有一個誠實參與者運行欺詐證明節點)。類似於 Cosmos 的多鏈生態,以太坊的未來將是多 Rollup 共存的——它們都基於以太坊提供的數據可用性和共享安全性。用戶依賴橋在不同 Rollup 之間活動,而無需支付主鏈的高額費用。
上述兩篇文章基本確定了以太坊的發展方向:優化以太坊的基礎層建設,為 Rollup 服務。以上論點也許基於這樣一個看法:既然 Rollup 已經被驗證有效並且得到良好的採用,那麼「與其將花上幾年時間等待一個不確定且複雜的擴容方案(注:指原分片),不如將注意力放在基於 Rollup 的方案上」。
在此之後,Dankrad 提出了新分片方案 Danksharding 。以下我們把 Danksharding 的具體技術組成拆分出來理解。
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 本人提出了幾個可能的數據存儲方:
1 、針對應用的協議(例如 Rollup)。它們可以要求節點存儲與應用相關的歷史數據,如果歷史數據丟失,會對這部分應用造成風險,因此它們有動力去做存儲;
2 、 BitTorrent;
3 、以太坊的 Portal Network,這是一個提供對協議的輕量級訪問的平台;
4 、區塊鏈瀏覽器、 API 提供者或者其他數據服務商;
5 、個人愛好者或者從事數據分析的學者;
6 、 The Graph 等第三方索引協議。
Danksharding 數據可用性採樣(DAS)
在 Proto-Danksharding 中我們提到新的交易格式使得區塊實際上變大了,並且 Rollup 也累積了大量數據,節點需要下載這些數據來保證數據可用性。
DAS 的想法是:如果可以把數據分為 N 個塊,每個節點隨機地下載其中的 K 個塊,就能驗證所有數據是否可用,而無需下載所有數據,這樣就能大大減少節點的負擔。但如果某個數據塊丟失了怎麼辦?僅僅通過隨機下載 K 個塊很難發現某個塊丟失了。
為了實現 DAS,引入了糾刪碼(Erasure Coding)技術。糾刪碼是一種編碼容錯技術,基本原理是把數據分段,加入一定的校驗並使各個數據段之間產生關聯,即使某些數據段丟失,仍然能通過算法將完整的數據計算出來。
如果把糾刪碼的冗餘比例設置為 50%,那麼意味著只需要有 50% 的區塊數據可用,網絡中的任何人就可以重建所有區塊數據,並且進行廣播。如果攻擊者想要欺騙節點,則必須隱藏掉超過 50% 的區塊,但只要進行多次隨機採樣,這種情況幾乎不會發生。
既然節點不下載所有數據,而是依靠糾刪碼來重建數據,那麼首先需要確保糾刪碼被正確編碼,否則用錯誤編碼的糾刪碼當然沒法重建數據。
這樣,進一步引入了 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 只需要接受出價最高的交易列表,且任何人在拍賣的獲勝者被選出之前,無法知道交易列表的具體內容。
這種分離和拍賣的機制引入了博弈和 Builder 之間的「內捲」:畢竟每個 Builder 捕獲 MEV 的能力不盡相同,Builder 需要權衡潛在的 MEV 利潤、以及拍賣出價之間的關係,這樣實際上減少了 MEV 的淨收入;而無論最終 Builder 提交的區塊是否能夠順利產出,都需要向 Proposer 支付競價的費用。這樣一來,Proposer(廣義上是所有驗證者集,一定時間內隨機重選)相當於分享了一部分 MEV 的收入,削弱了 MEV 的中心化程度。
以上介紹了 PBS 在解決 MEV 方面的優勢,而引入 PBS 還有另一個原因。在 Danksharding 中,對 Builder 的要求是:在 1 秒左右計算出 32MB 數據的 KZG 證明,這需要 32-64 核的 CPU;並且在一定時間內以 P2P 的方式廣播 64MB 的數據,這需要 2.5Gbit/s 的帶寬。顯然驗證者無法滿足這樣的要求。
於是 PBS 把兩者分開,Proposer 仍然作為一般驗證者節點,負責選擇交易列表,並廣播區塊頭;而 Builder 作為一個專門的角色,負責上述工作和構建交易列表。
去年 10 月,Vitalik 提出了雙 Slot PBS 方案(注:每個 Slot 為 12 秒,是信標鏈的時間單位),但具體的 PBS 方案仍然在討論中。
抗審查列表(crList)
但 PBS 也帶來一個問題,如果某個 Builder 總是出最高價(甚至寧願承擔經濟損失)來贏得拍賣,那麼他實際上有了審查交易的能力,可以選擇性地不把某些交易包含在區塊中。
為此,Danksharding 進一步引入了抗審查列表 crList(即 Censorship Resistance List),即 Proposer 有權利指定一個交易列表,這個交易列表必須被 Builder 所包含;在贏得拍賣後,Builder 需要證明 crList 中的交易都已經被包含在內(或區塊已滿),否則該區塊將被視為無效。
小結
把上述的數據可用性採樣(DAS)、區塊構建者和提議者分離(PBS)以及抗審查列表(crList)組合起來,就得到了完整的 Danksharding 。我們發現,「分片」的概念其實已經被淡化了,儘管保留了 Sharding 的叫法,但實際上的重點已經放在對數據可用性的支持上。
那麼 Danksharding 對比原分片有哪些優勢呢?
(Dankrad 本人在這裡列舉了 Danksharding 的 10 個優點,我們選取兩個來具體解釋)
在原分片中,每個單獨的分片都有其提議者和委員會,分別對分片內的交易驗證進行投票,並由信標鏈的提議者收集所有投票結果,這項工作很難在單個 Slot 內完成。而在 Danksharding 中只在信標鏈上存在委員會(廣義的驗證者集,一定時間內隨機重選),由這個委員會來驗證信標鏈區塊和分片數據。這相當於把原來的 64 組提議者和委員會簡化為 1 組,無論是理論還是工程實現的複雜度都大大降低了。
Danksharding 的另一個優點是,以太坊主鍊和 zkRollup 之間有可能實現同步調用。上文我們談到,在原分片中信標鏈需要收集所有分片的投票結果,這會產生確認的延遲。而在 Danksharding 中,信標鏈的區塊和分片數據由信標鏈的委員會進行統一認證,也即同個信標區塊的交易可以即時訪問分片的數據。這樣激發了更多可組合性的想像空間:例如 StarkWare 提出的分佈式 AMM(dAMM),能夠跨 L1/L2 進行 Swap 或共享流動性,從而解決流動性碎片化的問題。
在 Danksharding 得到實施之後,以太坊將變成 Rollup 的統一結算層和數據可用性層。
Closing Thoughts
在上圖中,我們對 Danksharding 進行一個總結。
綜上,我們大致可以看到,未來的 2 至 3 年內,以太坊路線圖的指向性是非常明顯的——圍繞服務 Rollup 而展開。儘管在此過程中路線圖改動與否仍然是未知數:Danksharding 預計將在未來 18-24 個月內實現,而 Proto-Danksharding 將在 6-9 個月內實現。但至少我們明確了 Rollup 作為以太坊的擴容基礎,佔據著一定的主導地位。
根據 Vitalik 提出的展望,在此我們也提出一些預測性思考和猜想:
- 一是類似 Cosmos 的多鏈生態,未來以太坊上將出現多 Rollup 的競爭格局,由以太坊為它們提供安全性和數據可用性的保證。
- 二是跨 L1/Rollup 基礎設施將成為剛需。跨域 MEV 將帶來更加複雜的套利組合,類似上述提到的 dAMM 帶來更豐富的可組合性。
- 三是多 Rollup 的生態應用將超越以太坊本身。由於以太坊的定位退居其次,作為 Rollup 的數據可用性層,我們猜測更多的應用會遷移到 Rollup 上面去做(若第二點成立);或者至少在以太坊和 Rollup 上面同時做應用。
(以上內容獲合作夥伴 MarsBit 授權節錄及轉載,原文連結 | 出處:IOSG Venture)
聲明:文章僅代表作者個人觀點意見,不代表區塊客觀點和立場,所有內容及觀點僅供參考,不構成投資建議。投資者應自行決策與交易,對投資者交易形成的直接間接損失作者及區塊客將不承擔任何責任。