BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

詳解以太坊2.0如何與1.0合併

巴比特
特邀专栏作者
本文約5102字,閱讀全文需要約8分鐘
以太坊2.0和以太坊1.0到底什麼關係,這篇文章告訴你答案。
AI總結
以太坊2.0和以太坊1.0到底什麼關係,這篇文章告訴你答案。

編者按:本文來自巴比特資訊(ID:bitcoin8btc)編者按:本文來自

巴比特資訊(ID:bitcoin8btc)

巴比特資訊(ID:bitcoin8btc)

圖片描述

(圖片來自:tuchong.com)<-> eth2 二級標題圖片描述

注:原文作者是以太坊2.0協調員Danny Ryan(djrtwo),在這篇文章中,他詳細介紹了以太坊1.0將如何與以太坊2.0合併,根據他的介紹,在eth1+eth2組合客戶端中,eth2客戶端可以處理PoS和分片共識的複雜性,而附屬eth1客戶端可以成為一個eth1引擎,它可以處理狀態、交易、虛擬機等事物的複雜性。

圖片描述

(圖片來自:tuchong.com)

以太坊1.0和以太坊2.0客戶端的關係

二級標題

自從Vitalik在2019年12月提出一個早期eth1

二級標題

本文旨在更明確地區分eth2客戶端和附屬eth1引擎之間的職責,以便為會話、規範編寫及原型提供更好的基礎。注意,文章並不會定義協議的具體細節(例如eth1 客戶端調用eth2引擎的精確方法),並且文中包含的任何示例,都只是用於幫助描述及後續討論。

二級標題

二級標題

分工明確

概括地說,我們今天所認為的eth2客戶端會處理核心PoS以及分片共識。本質上,eth2協議及eth2客戶端被設計成非常擅於在一堆“東西”上產生及達成共識,而這些東西,就是很多充滿數據和(最終)狀態的分片鏈。與當今eth1的PoW共識層相比,eth2的“共識層”要先進的多,同時也複雜的多。

二級標題

今天,eth1客戶端具有相對簡單且較薄的共識層,它只有一條鏈,並且PoW可處理協議外硬件中的大部分複雜性。 eth1客戶端的大多數複雜性及優化,都位於用戶層(包括狀態存儲/管理、狀態同步、虛擬機執行、交易處理、交易池等)。

當eth1作為一個分片被納入eth2時,這種關注點分離就可實現很好的配對,eth2客戶端可以處理PoS和分片共識的複雜性,而附屬eth1客戶端可以成為eth1引擎,它可以處理狀態、交易、虛擬機以及更接近用戶層事物的複雜性。

  • 二級標題

  • 最小的改變,實現本地通信

  • 如何將eth1和eth2客戶端軟件組合在一起,有很多可能的途徑(比如完全合併、將eth1作為庫導入、通過兩者之間的通信協議等),但在本文當中,我們會重點介紹一個最具微創性和和模塊化的方法—— 一種eth2客戶端與簡化eth1引擎之間的本地通信協議。

  • 考慮到eth1和eth2客戶端實現的多樣性,這種方法可以防止客戶端軟件在任一側鎖定,允許客戶端團隊保持獨立,並專注於他們自己的研發工作,使軟件項目在很大程度上保持穩定,以便進行快速原型製作。

  • 那它會是什麼樣子的呢?

大致上,一個eth1+eth2組合客戶端會是下面這個樣子的:

  • 其中eth2引擎和eth1引擎一起運行,通過eth2客戶端驅動的RPC進行本地通信。

  • 以太坊2.0客戶端

  • 以太坊1.0引擎

  • 信標鍊和信標狀態(構建系統其餘部分的核心共識對象);

  • Mempool操作[未顯示](證明(Attestation)、存款(deposit)、退出出口( exit)等)

P2P接口(1、共識層信息,2、包括eth1分片區塊gossip);

以太坊1.0引擎

二級標題

EVM虛擬機(eth1分片區塊的執行與驗證);

二級標題

共識

二級標題

二級標題

共識

具體來說,附加的eth1引擎必須能夠訪問eth2客戶端,因為它不能維護自己的共識。在今天以太坊的PoW中,eth1客戶端檢查工作量證明,形成一個樹狀結構,並運行分叉選擇規則來查找鏈的頂端。在eth2中,這些機制要大不相同,這需要對eth2的核心共識有深入的了解。 eth2客戶端提供有關eth1分片鏈頭部(head)的最新信息,以便eth1引擎可以維護eth1狀態的準確視圖。

二級標題

由於eth1引擎完全依賴eth2客戶端推動共識,因此我們提議eth2客戶端與eth1引擎之間的通信,都是eth2客戶端調用的eth1引擎上的所有方法(例如addBlock, getBlockProposal等)。這將強制執行一個leader/follower關係,以降低系統推理的複雜性,並限制eth1引擎所需的業務邏輯。

狀態

網絡

下面討論了和eth2客戶端相關的eth1狀態的不同情況:

網絡

ENR

3、帶有狀態eth1引擎的eth2客戶端要運行可產生eth1 分片區塊的驗證者,必須使用附加的eth1引擎和完整的eth1狀態運行eth2協議(研發者們正在探索無狀態的區塊產生方法,但為簡單起見,我們不對其進行討論)。然後,可以使用本地狀態和交易存儲池(TX mempool)按需形成新的有效區塊(在下文中有更多討論)。

網絡

二級標題

網絡

二級標題

eth2客戶端和eth1引擎可以訪問相同的discv5 DHT,但是可獨立地找到具有適當功能的對等節點並獨立地維護連接。

二級標題

二級標題

eth1功能(狀態、交易等)由ENR中的現有eth(或新eth1)key表示。

eth2功能(核心共識)在ENR中用eth2 key表示。

每種協議的存在,都意味著節點能夠且願意識別底層網絡協議的類別。

Wire協議

二級標題

1、eth2協議1、eth2請求/響應(1、狀態,2、信標區塊同步,3、分片區塊同步); 2、核心共識gossip(1、Beacon區塊,2、證明,3、分片區塊,包括eth1分片, 4、其它驗證者操作);2、eth1協議1、eth1 wire協議的子集(1、交易gossip,2、同步方法,例如getnodedata或新方法, 3、獲取收據receipt )

當驗證者正在將eth1分片區塊叉聯到信標鏈時,eth2客戶端將再次調用eth1引擎來執行和驗證該區塊。

區塊生產

交易gossip和存儲池mempool

二級標題

區塊生產

二級標題

區塊生產

二級標題

  • 二級標題

  • 區塊生產

  • 對於信標區塊和非eth1分片區塊,eth2客戶端具有生成有效區塊所需的一切。

  • 二級標題

  • 對於eth1分片區塊,eth2客戶端立即/隨時訪問eth1狀態、交易和其它底層eth1結構,以生成有效區塊。相反,當指定驗證者生成eth1區塊時,eth2客戶端從eth1引擎請求一個可行的eth1區塊數據(TX、狀態根等)。然後,eth2客戶端將此eth1區塊數據打包到完整的分片區塊中(添加slot、positer_index、positer_signature等),並將該區塊廣播至網絡。

eth1引擎之所以能夠生成有效/可行的eth1區塊數據,是因為它採用了今天以太坊主網所使用的相同方式來管理eth1交易存儲池,並且它通過eth2客戶端的更新來維護eth1頭狀態的最新信息。

ETH
歡迎加入Odaily官方社群