header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

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

閱讀本文需 14 分鐘
Tim Beiko 對 Kiln 合併、影子分叉、提款、分片的相關答疑。

原文標題:《Ethereum Roadmap FAQ》
原文作者:Tim Beiko
原文編譯:0x9F、0x22D,律動 BlockBeats


合併


Kiln 合併到底發生了什麼?


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


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


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


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


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


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




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


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


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


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


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


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


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


注意:
a. 單個交易仍在 EL p2p 網絡上傳播,並且 EL 只負責維護交易池。完整的區塊會在 CL p2p 網絡上傳播。
b. 驗證者在執行層中指定他們想要接收費用的地址。交易費不會像驗證人的質押和激勵那樣被「鎖定」在信標鏈上。


5. 其他驗證者對區塊進行驗證,如果有效,則在信標鏈 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 中有詳細說明。


這也將爲在單獨的點對點層上全面實施分片奠定基礎。此處解釋了目前提出的全分片模型。


原文鏈接


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交