聽以太坊基金會研究員闡釋:以太坊 1.0 與 2.0 將如何實現合併?


以太坊基金會 Eth2 研究員 Hsiao-Wei Wang 在於上海舉辦的以太坊社羣 Meetup 中進行了主題為《以太坊 The Merge 重點摘要》的分享,以下是的 Hsiao-Wei Wang 分享的文字及演示整理,主要講解了以太坊當前最重要的合併工作的細節、大致時間以及相關影響。



我從比較技術的角度來介紹什麼是合併(The Merge)。

從巨集觀的角度來說,大概是這樣。兩個不同系統的融合。


我們過往都稱以太坊的 Proof of Stake 以及 sharding 的研究叫 Eth2。那它們的客戶端開發就叫 Eth2 client。那反而就是反推回來,就是把現在的 Proof of Work 的工作量證明的鏈叫 Eth1。那關於這個品牌的重新命名,我們把它 rebrand 了一番,變成以合併後的功能為名。我們的 Proof of Work 鏈,我們抽取出它的 execution layer,就是這個執行層。Eth2 主要會負責未來的整個核心的共識層,那我們叫 consensus layer。當這兩者真正合二為一,就變成一個完整的以太坊。

那當然了,也許未來會有 Eth3、Eth4,那個就交給後人去設計。

現在來看一下目前區塊,還有未來的區塊有什麼樣的差異?


首先這張圖是 execution layer 的部分。上面的圖就是目前的 Proof of Work 鏈。外面是一層 Proof of Work 的共識層包裹,包住裡面的 execution layer。那其實是稱呼名稱的不同,你可以就把它想象就是 execution layer 的這個核心 engine 就是 EVM, 大家用的 Ethereum Virtual Machine。那裡面有 state root ,去記錄我們每個使用者自己的 account,我們叫做 account state 的記錄。那大家的合約狀態和合約程式碼都會被記錄在這個鏈的歷史資料中。那合併後,我們是將這個 execution layer 的核心抽取出來。我們不需要外層的 Proof of Work 的共識去維護了,以後就是 Proof of Work mining,就挖礦的相關欄位將會被棄用。比如說像這個 mixhash 或者是 difficulty 這些欄位未來會被棄用。未來的欄位會相對簡單一點,就主要都是為了服務 EVM 所需的資料。那可能可以稍微注意一下。就是這個 transation 的邏輯層都是在 EVM 會被解讀出來和執行的。


然後是合併後的區塊。

合併後會有兩個 state root,一個是 consensus layer 的 state root,一個是內層 state。那這個內層 state root 就是 execution layer 的 state root 就是我們目前 EVM 那個 merklized 後的 hash 值。

延伸閱讀  捷足先登的比特幣期貨 ETF,究竟和現貨 ETF 有什麼區別?

這整個 execution layer 就是如上一張圖所示,那外層的這個 state root 則是我們的信標鏈的 state root。信標鏈上並沒有交易的邏輯層。我所說的交易是指比如說 a 轉給 b 10 枚以太坊這種交易。在目前的信標鏈上沒有這個邏輯層,它有的是,比如說我們的驗證投票的記錄,以及一些驗證者指令,比如存款和提款的記錄。

那下面這張表就是比較一下這個 execution layer 和 consensus layer。EL 就是 execution layer,CL 就是 consensus layer。主要功能剛已經講過。關於未來分叉,就是 fork choice (分叉選擇),決定哪一條鏈是我們主鏈的規則,以後會用 LMD-Ghost 去實現。在過往大家都知道,就是最長鏈會主導鏈的走向。那未來就是用 LMD-Ghost。在初期,為了簡化,我們的交易池架構是不會改變的。所以說使用者一樣在送出 transaction 的時候,用一樣的邏輯一樣的 API 就可以和客戶端做溝通。

兩者的 networking 邏輯也不一樣。一個是使用目前的 devp2p 與其他執行層的節點連線,這連線傳送的資料就是 transaction 的廣播。那另外一邊 CL 層,我們會用 libp2p 和其他的 CL 節點做連線。所以說,在初期,至少在第一個版本的合併,客戶端可能會要開比較多的 port 出去,也會接收比較多的 port 回來。

比較重要的是,對於 CL 而言,鏈上區塊會有交易的資料層。這個資料層只有二進位制資料的形式,而不是清楚的業務邏輯,就是像 A 傳給 B 10 枚以太坊這種邏輯,這種邏輯不會被明確寫在 consensus layer 的資料之中,而是會用二進位制資料的方式,然後再去給 execution layer 做解讀。這是一個 execution layer 的抽象化。engine 未來可能不是 EVM,也許是其他未來版本,與未來的設計更相容的設計。

提問:在 merge 以後,比如說我在 DeFi 裡面要去執行一個 transaction,那他的這個記錄我還是可以正常的通過 Etherscan 檢視,顯示的只是 EL 的這個資訊了,對吧?那主流的這種查詢工具會不會把 CL 的這種資訊也展現出來呢?會做區分嗎?

延伸閱讀  Nansen:CryptoPunks 不可阻擋的漲勢背後究竟有哪些推手?

回答:有些欄位可能我們以後未來會新增 upcode 去讀取 CL 的資料。

也許會存一些比如在 CL 上叫 black root,在 EL 上是原本的 black hash,也許 EVM 可以讀取一些 black hash 的資料。也許未來會增加 CL 上的 black root 上去。類似這種 upcode,如果有需要,未來可能有 EIP 擴充。

回到演講。


這張圖是 merge transition 的過程。

那我們可以看到上面是目前正在執行中的 Proof of Work。

左下前面兩個區塊就是合併之前的信標鏈。請注意裡面是空空的,那在某個時間點,就是客戶端準備好後,我們會去設定一個指定 terminal total difficulty 的值。那客戶端就會依據這個值去判斷什麼時間點合併會發生在哪一個區塊中。

合併之後,Proof of Work 鏈是直接被包裹在整個信標鏈之中的。

所以它沒有消失,只是被包了起來。


這裡大概講一下 API 介面。剛剛也有提到就是兩個信標節點,主要是 CL 的部分,和下面 execution engine 會有不同的 p2p 介面。

以開發者的角度來看,可能會看的是這個 web3 library。原則上幾乎不會去改動到這個 web3.eth 的 API,反而是新增信標鏈的 API。然後兩個系統之間會用 RPC call 去傳送 request 和 response。主要是信標節點會向 execution engine 做請求,請 execution engine 回傳比如說處理過 state root,類似這種要求。

下面是一些大家可能比較關心的問題的總結。


第一個就是什麼時候合併,大家都期待了已經好幾年了。我們其實今年真的有蠻多重大進展的。那在今年十月的時候,我們用的一個初次凍結的規範,interop 就是說 Eth1 和 Eth2 客戶端能不能夠建接起來,Eth1 和 Eth2 都有附屬的客戶端讓你選擇,那這些全部的客戶端是否能夠變成一個測試網路。那在 interop 中是頗為成功的,就是大部分的客戶端都有加入這個測試網。

目前進行中的是這個叫做 Pithos 的測試鏈。大家有興趣的話,也可以試著嘗試加入。

那我們預計應該下個月會再凍結一版的就規範,在可能趕在節日之前吧。這一版會修正一些 interop 中發現的一些小問題。我們再請客戶端去做下一個版本的測試網路。

目前大家。保守預估就是大概 2022 年上半年還是蠻有機會去做硬分叉的。難度炸彈也延遲到了明年年中的時間,這是大眾所期待的目標。但是還是要以實際的開發,尤其是測試的狀況為主,去不斷修正這個時間軸。

延伸閱讀  ZK Rollup 改進思路:無需交易歷史資料,以提升效率和隱私

那剛才提到的這個第一次硬分叉,在 EIP 或是規範上,我們都希望能夠最小化修改架構啊,為了就是要減少開發者去 debug。也許一次可能我們不會新增太多 EIP,那後續才會再有一個進一步清理這些沒有做到完美的地方的修正。比如說像是剛剛講過有一些 Proof of Work 的 mining 欄位,在未來其實是不需要的。那可能會在 merge 之後的下一次硬分叉把這些欄位清理出來。

那再來是大家都非常非常關注的就是到底什麼時候可以提款出來。這個部分設計也會在合併後硬分叉完成。


作為以太坊使用者,在合併後的使用體驗會有什麼差異。那首先第一個就是維護的架構會稍微複雜一點。但相信開發者也會封裝成比較容易使用的 container。

對於 DApp 開發者來說基本上是不會有太大差異的。那我記得剛剛聽上一個 panel,陳平有提到有些人正在使用 difficulty 欄位,那未來怎麼辦?那首先第一點就是說。如果要用這個欄位來產生亂數,如果是龐大的 DeFi 專案的話,即使是硬分叉之前的,也請不要再用。這其實並不是很安全的亂數產生欄位。我們未來可能會有 EIP 去把欄位職能直接用信標鏈的 randao 欄位取代。它一樣有亂數的功能,但是邏輯上它並不是真的這個難力度的值。所以希望是能夠較為滑順地轉移這個使用者體驗。

那對於 DApp 服務提供者來說,可能要注意的是,工作量證明和權益證明對最終確定性會有所不同。在工作量證明,我們傳統上它只是機率上的最終確定性。比如說我們可能類似 Etherscan,也許它設定所有的 block 會從確認中慢慢變成一個一個綠色打勾的模式。就是也許十二個區塊對於這個鏈來說幾乎是完全安全的。但是這其實都是機率上,因為你隨時可能會有一條更長的鏈去分叉。那整個鏈可能會重組過去。

而對於權益證明,我們有三分之二的驗證者確認的話,就可以有最終確定性了。那一般情況來說,大概十二分鐘會有最終確定性。但服務提供者可能就要根據這些服務的內容去決定到底百分之多少的投票驗證了這條交易,可以算是 ok,大家通過的點。


好,那大概就到這邊。要了解更多的話,可以去參考這些資料。

提問:到時開放提款是提到執行層還是共識層?

回答:目前應該是有功能會直接讓使用者轉移到 EVM 上使用者的餘額裡,也許會可以讓信標鏈上的驗證者互相轉賬,但目前應該是優先讓使用者可以直接提到 EVM 的狀態上,這樣使用者的使用會比較有彈性。當驗證者存款時,可以在提款憑證裡指定未來提款到 Eth1 的地址。所以說如果你在存款的時候已經設定好的話,提款的時候就可以直接提到那個地址。

Scroll to Top