作者: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)
聲明:文章僅代表作者個人觀點意見,不代表區塊客觀點和立場,所有內容及觀點僅供參考,不構成投資建議。投資者應自行決策與交易,對投資者交易形成的直接間接損失作者及區塊客將不承擔任何責任。