什麼是影子分叉?以太坊合併領導人解讀相關疑問

合併

Kiln 合併到底發生了什麼?

和主網一樣,Kiln 以單獨的PoW 鍊和PoS 鏈啟動。通過合併,它現在完全在PoS 下運行。

Kiln 是否真正遵循了當前主網合併的規範?即它相當於主網合併後的情況嗎?亦即它是否遵循Bellatrix 分叉規範?

是的。 Kiln 上線後,我們確實對規範做了一些小改動,但它們是向後兼容的。當前網絡規範在這裡。

我們預計現在不會有重大的規範更改,強烈建議工具/基礎設施/應用程序開發人員在Kiln 上進行測試,以確保他們的產品在合併後的以太坊環境中按預期工作。

Kiln 測試網的信標鏈似乎存在狀態和智能合約。這與ethereum.org 中關於信標鏈的建議相反。這僅僅是因為我被區塊瀏覽器誤導了嗎?

合併後,信標區塊包含當前PoW 區塊所包含的交易負載。我們在規範中稱其為ExecutionPayload。這裡有一張解釋它運作的圖表。

上圖中,PoW 和信標鏈上的前兩個區塊是合併之前的,後兩個則是合併之後的。詳情請參閱長文。

一旦一個PoW 區塊產生,隨後產生的信標鏈區塊就會包含交易數據。

合併後的區塊處理流程是怎樣的?

  • 選出一個驗證者來提出一個區塊。

  • 該驗證者通過Engine API要求其執行層(EL)向他發送一個ExecutionPayload。

  • EL 將包含最有利可圖的有效交易集合的有效負載返回給共識層(CL)。

  • CL 提出一個包含該有效載荷的區塊,並在信標鏈p2p 網絡上進行傳播。

注意:

  1. 單個交易仍在EL p2p 網絡上傳播,並且EL 只負責維護交易池。完整的區塊會在CL p2p 網絡上傳播。

  2. 驗證者在執行層中指定他們想要接收費用的地址。交易費不會像驗證人的質押和激勵那樣被「鎖定」在信標鏈上。

  • 其他驗證者對區塊進行驗證,如果有效,則在信標鏈p2p 網絡上進行傳播。

合併的測試過程是怎樣的?

我們正在同時進行幾個測試工作。這裡有一個列表。

影子分叉

什麼是影子分叉?

影子分叉是指少數節點被配置為在某個點從以太坊網絡中分叉出去。在合併的情況裡,我們通過啟動設定要比整個網絡更早運行合併的節點來實現。這使我們能夠測試在與影子分叉網絡類似的條件下,升級是如何進行的。但絕大多數節點不會意識到升級已經發生。影子分叉之後,主鏈上有效的交易也可以映射到分叉鏈上,從而模擬原始網絡的吞吐量。 @parithosh_j 在推特上描述了更多細節。

下圖來自其推文,顯示了影子分叉之後網絡的樣子:

Goerli 區塊的上面一行顯示了標準鏈上的一個節點,該節點不知道影子分叉。

Goeli 區塊的中間一行顯示了影子分叉鏈上的一個節點,該節點有一個經過修改的配置,指示它一旦達到TTD(Total Terminal Difficulty)就發生分叉。

最下面一行顯示的是一個僅用於影子分叉的信標鏈:當達到TTD 時,它將為整條鏈提供共識。

達到TTD 之後,標準鏈上的節點繼續正常生產區塊:「對他們而言」什麼都沒發生。

達到TTD 之後,配置修改過的的節點發生分叉,並運行合併。合併之後的首個區塊由信標鏈上的下一位驗證者產生。雖然這個區塊能包含標準鏈上的任何交易,但包含的具體交易或它們的順序不一定與標準鏈上一樣。

為什麼「影子分叉」有用?

影子分叉讓我們能夠在不破壞標準鏈的情況下,僅使用少量節點來查看節點在合併發生時的反應。影子分叉給了我們一個比啟動新測試網更真實的測試環境,因為現有的測試網上已經有交易發生了,而且有大量的狀態和歷史,比起新的測試網,這會讓節點承受更多壓力。因此,我們得以獲得節點在「真實世界」的性能指標,而不用影響標準網絡的運作。

你們能影子分叉主網嗎?

是的,而且我們現在做了。影子分叉主網非常有用,因為它向我們展示了節點在狀態和歷史巨大、交易最複雜的惡劣條件下如何反應。主網影子分叉後,我們還可以測試節點在嘗試加入分叉網絡時的穩定性、同步程度如何等等。這不僅提供了有關過渡本身的數據,還提供了新節點在合併後狀態下加入網絡的行為數據。

過程中的哪一階段屬於影子分叉?

影子分叉給了我們升級按預期工作的信心。一旦它們在所有升級過程中都能順利進行,我們就有自信通過合併運行現有的測試網。值得注意的是,影子分叉中的節點由一小部分運營商控制:一些公共測試網擁有更廣泛的驗證者集合。一旦測試網升級並穩定下來,我們就可以計劃在主網上進行合併了。

提款

質押提款將如何完成?我找到了幾種規範,但沒有發現其中一種產生了特別明確的共識。檢查質押合約後,我發現只有一個可寫入的method,那就是deposit(存款)。目前基本沒有關於提款邏輯的說明。

以太坊合併不會啟用質押提款功能,它們將在之後的分叉中上線(此處為當前規範)。

注:目前將提款引入執行層的方法確定為EIP-4895。

提款其實並不「經過」存款合約,它們從信標鏈中被推回執行層,並以與礦工獎勵相同的分發方式被完成。這意味著計算循環供應量會稍微複雜一些,因為存款合約的中的餘額不會隨著提款而「減少」。

提款密鑰如何工作? eth2-deposit-cli 這個工具默認不會自動生成BLS 提取密鑰。密鑰具體如何工作?會只用到派生路徑(derivation path)的第0 個索引嗎?

在EIP-2334 中對此進行了說明。

如果你使用一個eth1 提款密鑰,你只能提款到那個密鑰對應的地址嗎?還是說提款密鑰只是用來簽署提款交易,你可以向任意地址提出ETH?

要從信標鏈中提出ETH,你必須指定一個eth1 地址作為「目標」接收者。你不需要用這個帳戶簽署任何內容,因為如果只從執行層來看,你會發現提款是自動發生的,就像目標賬戶在提款區塊後突然多出了額外的ETH。

如果你使用BLS 密鑰提款,ETH 會去哪裡?我的理解是共識層中不會有狀態或賬戶。因此,是否只需指定一個執行層地址以接受提出的ETH?還是說未來共識層中將含有狀態?

在提款時,你要指定一個執行層地址,並以Gwei 為單位填寫要提出的金額(請參閱規範)。需要明確的是,你不能使用BLS 提款密鑰進行提款。在合併後的分叉中,我們將進行一項操作來更改你在共識層上的存款憑據。

分片

對於未來的分片會是什麼樣子,目前有什麼共識嗎?似乎執行分片已被完全放棄,取而代之的則是Rollups。

執行分片已被「棄用」,有利於以Rollups 為中心的執行層擴容方案。數據分片是目前正在研究和實施的主要分片。

Rollups 如何在合併後實際工作?它們是否仍然位於eth1/執行層之上?還是他們會直接建立在共識層之上?

他們繼續像今天一樣工作,部署在執行層上,但可以利用共識層的決定性。

數據分片目前在哪裡?什麼是數據分片?隨著Rollups 變得越來越流行,數據分片將只會是解決數據可用性的一種方法嗎?

目前的計劃是首先通過一種新的交易類型公開它,如EIP-4844 中有詳細說明。

原文標題:《Ethereum Roadmap FAQ》

原文作者:Tim Beiko

原文編譯:0x9F、0x22D,律動BlockBeats

Total
0
Shares
Related Posts