原文標題:《以太坊核心開發者會議更新006》
這次更新與以往的有點不同。首先,我決定轉移到Mirror 發布更新。使用這個用於1559 NFT 項目的平台是很不錯的體驗,而且我一直在找機會再次使用它。我會在HackMD 保留更新列表,這樣便於在一個地方輕鬆找到它們。
第二,由於我們現在的工作重點在合併(The Merge) 上,本文其實不算是一篇「更新」,而是對走到當前架構選擇的路線圖演變的深入探討。幾週後,會有一篇類似的文章,詳細介紹以太坊網絡在合併後將如何運作。
合併史前史
合併將把以太坊目前的工作量證明(PoW) 共識算法轉為在信標鏈上運行的權益證明(PoS) 機制。這個設計是「以太坊2.0」路線圖多次迭代的結果。讓我們回顧一下過去幾年路線圖的變化吧。
階段0,1,2
幾年來,權益證明和分片的研發是彼此獨立的。在2018 年台北的一次研討會上,大家決定將這兩項研究計劃統一起來,形成一個分三個階段的「以太坊2.0」路線圖。 Ben Edginton 在這篇文章裡對當時的研討會和總的理念作了非常好的總結。正是在這次活動中,Hsiao-Wei 展示了這張現在廣為人知的「以太坊2.0」簡圖:
來源:https://docs.google.com/presentation/d/1G5UZdEL71XAkU5B2v-TC3lmGaRIu2P6QSeF8m3wg6MU/edit#slide=id.g3c326bb661_0_298
這張圖展示了當時新路線圖的每個階段將交付的內容:
-
階段0 將帶來信標鏈
-
在階段1,會加入數據分片
-
在階段2,在每個分片加入虛擬機,以在系統裡實現計算。
分片的數量最初定為100,然後提高到1024,最近又調低到64。
提早合併
隨著信標鏈的工作在2018 年開啟,很明顯,這個分三個階段的以太坊2.0 路線圖將需要幾年時間才能完全交付。伴隨著使用以太坊人數的快速增長帶來的成長陣痛,這帶來了工作量證明區塊鏈研究計劃的複蘇。在2018 年的Devcon IV 上,「Ethereum 1.x」這個術語被提出,用於涵蓋這些研究計劃。其中最重大的一項是無狀態以太坊(Stateless Ethereum),這個範式會把未被訪問的狀態從網絡中移除,以限制狀態的膨脹速度。
一方面有越來越多的關注放在讓PoW 鏈變得長期可持續上,另一方面開發者們意識到信標鏈可以比以太坊2.0 路線圖的其他部分更早實現,結合兩者後出現了一個「提早合併」的提案。這份提案把現有的EVM 鏈作為以太坊2.0 系統的「分片0 」來啟動。這樣不僅會加快搬到權益證明的速度,還會使應用層的過渡更順滑,因為搬到權益證明不需要在應用層上做遷移。
這提案出來不久,Danny Ryan 在他的《Eth1+Eth2 客戶端關係(Eth1+Eth2 client relationship)》的文章裡探索了我們可以如何通過利用現有Eth1 客戶端實現提早合併。這將大大減少交付一個合併後系統和利用客戶端的開發工作,因為Eth1 客戶端已經在主網上久經沙場了。按這條路走下去還可以給研究者更多時間解決階段1 和2 的開放性問題(請看這裡),和無狀態以太坊(這仍然是非常活躍的研究領域)。
以Rollup 為中心的路線圖
很快到了2020 年末:階段0 此時的進度已經達到99%,信標鏈很快就要啟動了。儘管在階段1 的工作進展順利,但將在階段1 引入的分片上實現計算功能的階段2 仍然有很多未解決的問題:
-
如何從當前的EVM 鏈順滑過渡到分片的虛擬機?
-
從性能上看,有哪些替代虛擬機能被部署?
-
我們要如何確保各種虛擬機是真的安全?
-
如何協調所有虛擬機上的狀態和余額?
-
……
同時,rollup (例如二層的擴容方案) 方面正發生非常快速的進展。多個團隊公佈要上測試網,且取得令人鼓舞的早期成果。
大約在這個時候,Vitalik 在Ethereum Magicians 論壇上發表了長文,論述我們應該把短期和中期的擴容工作集中在rollup 上。它們不僅會在階段2 完成前上主網,還會是階段1 的最大受益者。 Rollup 會生成大量數據,而分片可以為它提供比EVM 鏈消耗更低的存儲。下面是文章的截圖:
這種方法將對階段0-2 路線圖產生幾方面的影響。具體如下:
-
階段0 (信標鏈) 當時正處於部署主網前在測試網上運行的階段,一旦PoW 鏈準備好,信標鏈就可以成為共識層引擎,而不需要等到階段2 以後;
-
階段1 (數據分片) 的實現還需要幾年時間,它從擴容的關鍵障礙變成一項增量改進,它會減少已經開發出來的擴容方案(例如rollup) 的開銷;
-
階段2 (分片執行) 是有最多開放性研究問題且更複雜的功能,它可以在幾年後推出,或完全取消,對擴容路線圖沒有任何影響。
研究社區快速就這個提案聚集起來,並在一個月內發表了一篇ethresear.ch 文章,詳細介紹了當前這個合併計劃!
當前& 未來的路線圖
可執行信標鏈
當前的合併架構在首次於2020 年11 月由Mikhail Kalinin 發表的《可執行信標鏈(Executable Beacon Chain)》上得到詳細說明。簡言之,它結合了多次迭代的以太坊2.0 路線圖的洞見:
-
信標鏈已經啟動了,現在可以作為共識引擎來使用;
-
Rollup 是擴展計算的最佳短期解決方案;
-
當前的Eth1 客戶端是作為合併後執行層的最佳基礎;
-
搬到權益證明可以通過對當前運行的應用影響最小的方式實現
Mikhail 提議中的一個重大變更是,與其讓當前的EVM 鏈成為」分片0」,不如直接與信標鏈連接。
這是一個簡單但重要的見解——Eth1 執行層客戶端已經是以共識算法可換的方式構建的。主網使用工作量證明,而測試網和私人以太坊網絡使用的是權威證明(proof of authority) 共識算法(clique、IBFT 等)。
在文章裡,Mikhail 提議直接把權益證明作為客戶端使用的新共識算法。換句話說,就是把當前的工作量證明鏈與信標鏈合併。下面由Trent Van Epps 製作的這張圖很好地說明這個變化:
來源:https://twitter.com/trent_vanepps/status/1415741658067517441/photo/1
這種方法將最大程度地減少PoW 鏈上客戶端團隊要做的工作,同時仍然帶來「提前合併」和「以Rollup 為中心路線」的所有好處 [1]。
Rayonism 項目
為了驗證可執行信標鏈架構的可行性,在名為Rayonism 的長達一個月的黑客松裡,客戶端進行了原型設計。
在幾週內,Eth1 和Eth2 客戶端的各種混合組合作為合併後的客戶端在EVM 上運行交易,通過信標鏈達成共識。
高度概括來說,現在的Eth2 節點變成作為網絡的共識層,而現在的Eth1 節點則作為其執行層。共識層的功能擴展為把最新的鏈頭信息發送給執行層,並向執行層請求區塊。執行層仍然負責處理區塊、廣播交易、存儲和管理狀態,和處理JSON RPC 請求。
這個實驗驗證了可執行信標鏈的架構是合理的,且可以用作過渡到權益證明的基礎,現在這個過程被稱為合併。
PoW -> PoS 的過渡
Rayonsim 項目裡沒有測試的是從真正的PoW 網絡過渡到運行中的Pos 網絡。經過幾次迭代後,現在已經大致敲定了一份規範。
為了實現從工作量證明到權益證明的過渡,在客戶端裡需要設置一個TERMINAL TOTAL DIFFICULTY (終結總難度)。當發現區塊上的難度超過了工作量證明鏈的難度時,客戶端會進入過渡模式,它們會開始監聽權益證明層的信息來達成共識。一旦共識層最終敲定的一個區塊的難度超過了TERMINAL TOTAL DIFFICULTY,執行層將完全停止監聽和廣播PoW 區塊信息。這樣,合併就完成了!
對於應用,這不會對合約和用戶造成任何影響。有一些操作碼需要更新,但就僅此而已。對於信標鏈節點的運行者,在合併中需要選擇一個執行引擎。同樣地,如果你在工作量證明網絡運行一個節點,在合併中需要選擇一個共識客戶端。隨著合併工作的開展,你可以預期會有多個開發者測試網、教程和會議來討論這些問題。
接下來的工作
儘管合併的總體方案已經確定了,客戶端團隊還有一長串的事情需要在未來幾個月內完成。大部分要做的事都可以在這裡追踪到,值得關注的包括確定合併後的同步協議、為整個過程設置創建集成測試、上線開發者測試網並在不利條件下運行它們,以及為過渡期間的各種意外情況做計劃。
如果你想深入了解實際的規範,EIP-3675 詳細列出執行層客戶端需要的變化,而共識規範中的merge folder 詳細列出了共識層的變化。
當事情稍微穩定下來,請期待另一篇深入以太坊客戶端在合併後將如何工作的文章。謝謝你的閱讀,下次再見!
感謝Danny Ryan、Trent Van Epps 和Mikhail Kalinin 對本文草稿的反饋。
[1] 一個值得注意的變更是「無狀態以太坊」不再是過渡到權益證明的先決條件。
[2] 在過渡階段根據總難度而不是區塊或slot 號可以更好處理重組情況。想了解更多,請參見EIP-3675 裡的”Transition process (過渡過程)” 部分。
撰文:Tim Beiko
翻譯:ETH 中文站