距離合併還需要做哪些工作?這些工作分別實現什麼目的?
作者: Tim Beiko
封面: Ethereum(Viktor Hachmang)
原用標題(譯後):以太坊核心開發者會議更新 011⛓
從影子分叉到主網🗺
在 Rayonism 第一次構建出原型的一年後,我們現在在所有以太坊客戶端上都有了強勁的合併實現。
從我們今天的進度到完全過渡到以太坊權益證明的道路現在已經非常清晰了。我們需要:
- 幾次不出現問題的主網影子分叉
- 客戶端都通過各種合併測試套件
- 在現有的公共測試網中順利部署
就這些了!一旦這些情況都達成了,並且我們觀察到它們在幾週內是穩定的,我們就可以準備主網合併了!
讓我們逐一展開。
影子分叉👻
在過去的一年裡,我們在網絡升級過程中增加了一個新步驟:影子分叉 (Shadow Forks)。
已經有一些關於影子分叉的釋義性文章了。簡單來說,影子分叉是通過用少量節點分叉一個實時網絡而創建的新開發者測試網。影子分叉與主鏈有相同的狀態、歷史數據和鏈 ID。
運行這些影子分叉測試網使得我們可以觀察客戶端在盡可能接近公共網絡的條件下的表現。在影子分叉網絡的節點上,合併有效發生。之後,主網上的交易可以在分叉上重放,使得我們可以看到節點在主網條件下的表現。我們還可以同步新的節點到影子分叉上,以確保它們仍然按預期加入網絡。
在這些影子分叉過程中,每種執行層 (EL) 和共識層 (CL) 組合都會被測試,我們的目標是每對客戶端組合都能過渡並在之後保持平穩運行。我們有 4 個執行層客戶端和 5 個共識層客戶端,也就是有 20 對組合需要測試!
到目前為止,我們已經有多個 Goerli 影子分叉和兩個主網影子分叉。第二個主網影子分叉 (MSF2) 幾乎完美進行。另一個,MSF3,準備在這週進行。如果 MSF3 沒有什麼問題,並在之後保持穩定,我們就可以對現有的測試網進行升級。為了安全起見,在測試網部署之前 (甚至期間) 我們將繼續定期進行影子分叉。
與此同時,我們也在加倍努力進行其他一些測試工作。
合併測試🗜
對於測試來說,合併是一次獨特的升級,因為它跨越了以太坊的執行層和共識層。雖然對於每一層我們都有很多單獨的測試工具,但大量用於測試跨層交互的新基礎設施是必要的。
Hive 測試
Hive 是一個集成測試平台,我們以前用於執行層的測試。在過去的幾個月裡,我們已經為它添加了模擬共識層行為的能力,並用它測試各個執行層客戶端。這有助我們測試這個執行層和共識層用於通信的新 Engine APIs。為了測試 PoW -> PoS 的過渡,還需要添加模擬執行層行為的模擬器。
客戶端團隊目前正優先支持 Hive,並確保它們通過所有的測試套件,同時測試團隊專注於為其添加執行層模擬。
Kurtosis
除了我們現有的測試基礎設施外,我們還與 [Kurtosis] ( https://www.kurtosistech.com/ ) 合作,我們用它每天自動搭建啟動一個短暫的網絡來運行合併的過程。
這些工具幫助我們發現各個客戶端的實現問題,監測各種網絡健康指標。隨著在這方面情況逐漸穩定,我們下一步是創造更惡劣的網絡條件,看看客戶端會如何恢復。例如,就在過渡前暫停執行層或共識層客戶端,然後在合併後取消暫停;或者合併後移除數據庫,並查看它們是如何處理同步的。
... 還有其他所有東西!
除了改良 Hive 和與 Kurtosis 合作,由客戶端、研究和測試團隊構建的一長串測試工具幫助我們發現每個可能的臨界情況。它們包括模糊測試工具、壞塊生成器、執行層/共識層模擬器、調試 API 和更多的模糊測試工具。這裡有一個其他工具的願望清單。
我們的首要任務是讓客戶端都通過單元/規範測試,以及在 Hive 和 Kurtosis 裡的集成測試。但是,上文提到的這些其他工具可以幫助我們發現和調試我們漏掉的臨界情況,隨後我們會把它們納入常規測試套件裡。
在人的方面,合併測試大大增加了跨團隊的協調與合作。共識層和執行層客戶端團隊第一次必須彼此緊密合作,確保他們的軟件與另一層上的每個客戶端能配合運行。這使得我們整個測試基礎設施有更多和更深入的合作😁
公共測試網🏗
一旦影子分叉順利進行,所有客戶端都通過了測試套件,我們將準備在現有的公共測試網上部署合併,即 Ropsten、Goerli 和 Sepolia。
儘管公共測試網不像主網影子分叉般對客戶端進行那麼多的壓力測試,但它們需要在以太坊生態系統內進行更廣泛的協作。
與以前的以太坊升級相比,合併需要更多的節點運行者。在過去的升級裡,在執行層上的節點運行者和礦工只需要對一個軟件進行升級:他們的執行層客戶端。而在合併升級裡,他們將需要下載、配置和同時運行一個共識層客戶端。
在共識層方面,我們一直強烈建議在運行驗證者時也運行一個執行層節點。儘管合併前,執行層節點的運行可以外包給第三方服務提供商。但合併時,質押者將需要運行一個執行層節點來驗證區塊的有效性,以及在提議區塊時接收交易費 (把執行層節點運行外包的話可能會收不到交易費!)
節點運營商、質押者和基礎設施提供商應該確保他們的配置會在 Kiln 上測試,為在測試網上部署做準備。關於如何做到這一點,EthStaker 還發布了各種教程。
一旦 Ropsten、Goerli 和 Sepolia 完成分叉並穩定下來了 (假設沒有發現進一步的問題) ,那麼我們就可以準備為主網設置合併的日期了!
主網🍾
以太坊主網過渡到權益證明的過程將與測試網上的過程相同。也就是說,值得再次強調的是,過渡分三步進行:
- 客戶端發布支持合併的軟件版本,並開始 “監聽” 一個在工作量證明鏈上被觸達的特定總難度值,即終結總難度 (TTD)。
- 一旦觸達了 TTD,下一個區塊會由被分配到下一個信標鏈 slot 的驗證者打包。這個區塊將是合併後的第一個區塊,包含終端用戶的交易以及權益證明共識數據 (即證明、存款、罰沒等)。
- 第一個合併後的區塊被最終敲定。此時,工作量證明不再構成以太坊分叉選擇規則的一部分。換句話說,我們已經完全轉向 PoS 了🎉
下面 Danny Ryan 製作的圖說明了這個過程:
最左邊的區塊顯示了執行層和共識層在合併前平行運行的情況,其中 PoW (執行層) 區塊包含交易而信標鏈 (共識層) 區塊包含權益證明的共識數據。
左邊的第二個 PoW 區塊是當 TTD 被觸達或超過時的情況。下面第三個區塊是合併後第一個區塊,包含權益證明共識數據和執行層交易。
第四個區塊以及後續的區塊都與工作量證明沒有關係了。一旦這些區塊被最終敲定了,網絡只能被從那一點之後類似於工作量證明下 51% 攻擊的情況破壞。
換句話說,到那時,我們已經完成合併了🍾!
合併是迄今為止我們為以太坊計劃過最複雜的一次升級。團隊和個人貢獻者已經不知疲倦地工作了一年多了,現在終於看到終點線了。
儘管每個人都為看到以太坊過渡到權益證明感到興奮,但現在不是偷工減料的時候:為以太坊用戶和在網絡上構建的豐富生態確保一個安全且無縫的過渡才是我們的首要任務。我們快到了😁!
什麼時候合併?🔜.
感謝 Trent Van Epps、Danny Ryan、Mario Vega 和其他人對此次更新的評論和補充。
ECN 的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及 ethereum.cn,若需長期轉載,請聯繫 eth@ecn.co 進行授權。
免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。