合併之後,會有哪些新的事項產生?速覽本文。

封面: Photo by Pawel Czerwinski on Unsplash

在我們推出 “以太坊大合併” 系列的第一篇文章裡,主要為大家介紹了以太坊升級的原因、路線和當前進展。

隨著以太坊 Merge 時間節點將至,今天我們將探討以太坊合併之後會面臨哪些監管問題和應用層問題。

2022 年 8 月 16 日,以太坊聯合創始人 Vitalik Buterin(V 神)在推特上參與討論 “若監管通過某些協議(如 Lido、Coinbase 等)的驗證者者對以太坊進行協議級別的審查,以太坊社區將如何反應” 這一話題時表示,會將這種審查視為對以太坊的攻擊,並選擇通過更廣泛共識(social consensus)將這些驗證者的質押權益進行銷毀。

引起這個討論的導火索在於:近期,美國財政部海外資產控制辦公室(OFAC)將與 Tornado Cash 有關的以太坊地址添加到製裁實體的名單中。但是目前對其的製裁都是處於中心化層面的操作,對於涉及到去中心化的智能合約部分,尚無法進行技術制裁。

這表明如果美國要想要徹底制裁 Tornado cash ,就必須要控制底層的以太坊鏈。那麼就引出一個問題,假如美國政府對以太坊進行監管,會面臨什麼?

如果美國政府要對以太坊進行監管,最大的可能是要求大型 PoS 質押服務商對以太坊進行協議級別的交易審查。這並不是驗證者 “作惡”,而是驗證者對鏈上地址的” 針對性制裁 “。

簡單來說,就是監控被制裁地址發出的所有請求,並將所有包含被制裁地址事務的區塊進行拒絕出塊即可,當一個區塊無法通過 66% 以上權益驗証投票通過時,該區塊的所有事務請求將會進行回滾,這也就意味著被制裁的地址將無法進行任何操作,並且驗證者不會面臨任何懲罰。

截至目前,以太坊全網質押的以太幣數量大約為 1300 多萬 ETH,而通過 Lido 質押的以太幣數量已經佔了約 30.9%,Coinbase 佔了約 14.7%,Kraken 佔了約 8.5%。

如果美國政府要求 Lido、Coinabse、Kraken 為代表的大型節點驗證者(服務商)對以太坊進行協議級別的交易審查,作為具有美國法律實體的質押服務商很難拒絕類似要求。

圖片
圖源自 Dune Analytics

針對可能出現的上述情況,在以太坊社區在 Twitter 上發起了一項投票討論,如果 OFAC 通過驗證節點對以太坊實施監管該怎麼做。V 神支持將上述情況視為對以太坊的攻擊,並通過更廣泛共識將這些節點的質押權益進行銷毀。

下面,我們再來聊一聊應用層的問題。

我們在上一篇曾提到:按照計劃,以太坊的 Merge 以 “最小破壞” 原則進行,使原來運行的應用客戶端可以無感地切換到 PoS。也就是說,儘管是 “最小破壞”,但在這個過程中,有一些小的變化仍然值得我們注意。本節就主要從應用開發的角度介紹在合併後,我們應該關注的方面。

合併後,當前的 Eth1 和 Eth2 客戶端將成為以太坊的執行層和共識層(或引擎)。這意味著 Eth1 或信標鏈客戶端的節點運營商將需要運行堆棧的 “另一半” 以獲得完全驗證的節點。下圖顯示了合併後完整的以太坊客戶端架構。

  • 客戶端架構
圖片
合併後客戶端架構. 圖源自 Danny Ryan

區塊結構

當合併發生時,信標節點將監視當前的 PoW 鏈並等待它達到預定義的 total difficulty 閾值,該值被稱為 TERMINAL_TOTAL_DIFFICULTY。即一旦 PoW 鏈產生了一個帶有 total difficulty >= TERMINAL_TOTAL_DIFFICULTY 的塊,它將被視為鏈上最後的一個 PoW 塊。

隨後,PoW 塊包含的數據將成為信標鏈塊的數據組成部分,而信標鏈則可以被視作為以太坊新的 PoS 共識層,取代之前的 PoW 共識層。

同時在進行共識驗證時,信標節點將與其執行引擎(升級前的以太坊客戶端)通信,並要求它生成或驗證 ExecutionPayloads。ExecutionPayloads 包含了父哈希、狀態根、基本費用和要執行的交易列表等信息。

一旦這些數據被生成或驗證,信標節點將與 p2p 網絡上的其他節點共享它們。

而對於終端用戶和應用程序開發人員來說,這些原來 PoW 鏈上的 ExecutionPayloads 仍然是他們與以太坊進行直接交互的位置,事務仍將由執行層客戶端處理,這使得他們可以無感切換到 PoS 鏈。下圖顯示了這種關係:

圖片
圖源自 Danny Ryan

執行引擎

合併之後,執行引擎主要負責狀態管理,區塊創建和驗證功能,而不再包含與共識相關的任何操作。因此,執行引擎被進行了部分修改,這些修改在 EIP-3675 中進行了描述,主要包含以下三點:

首先,修改了區塊的部分數據字段。將原有區塊中幾個僅與 PoW 相關的字段設置為 0(或其數據結構的等效項),具體包括與挖礦相關(difficulty, mixHash, nonce)、 叔塊獎勵相關(ommers, ommersHash)。此外,extraData 的長度在主網上也將被限制為 32 字節。

圖片

其次,由於只有合併後的信標鏈才能進行出塊,因此執行引擎將停止處理區塊和叔塊獎勵。但交易手續費仍由其進行處理,即當執行引擎創建一個 ExecutionPayload 時,需確保所有交易的發起者至少能夠支付當前 baseFeePerGas 的費用,並且將剩餘的交易手續費發送到 feeReceipient。注意,feeReceipient 指的是升級前的以太坊地址,而不是信標鏈驗證者地址。

最後,一旦 PoS 取代 PoW,執行引擎將不再負責廣播區塊,但仍會通過 p2p 網絡進行交易的廣播。具體過程為,首先用戶將交易通過本地的 RPC 請求發送到共識客戶端,在那裡它們將被打包到信標塊中。然後,共識客戶端將在他們的 p2p 網絡中廣播信標塊。

下圖表明了以太坊合併時的過程:首先停止 PoW 出塊,其次信標鏈塊在合併後開始持有 ExecutionPayload。

圖片
圖源自 Danny Ryan

BLOCKHASH&DIFFICULTY 操作碼更改

合併後,BLOCKHASH 操作碼仍可使用,但由於它不再通過工作量證明生成對應的 Hash 值,所以此操作碼提供的偽隨機性將被大大減弱。

與此同時, DIFFICULTY 操作碼 (0x44) 將會更名為 RANDOM 並返回由信標鏈提供的隨機數值。因此,該值將替代 BLOCKHASH 成為應用程序開發人員可使用的更好隨機源(儘管仍然存在偏差)。

RANDOM 值將存儲在 ExecutionPayload 中原有 mixHash 的位置,該值與工作量證明計算相關。升級後該值被重命名為 random。

下圖解釋了合併前後 DIFFICULTY 和 RANDOM 操作碼的工作原理:

圖片
圖源自 Danny Ryan

合併前,我們看到 0x44 操作碼返回區塊頭里的 difficulty 字段。合併後,負責生成隨機數的 RANDOM 操作碼則指向原有 mixHash 字段,該字段被重名為 random。

出塊時間

合併將影響以太坊的平均區塊時間。目前在 PoW 下,平均每約 13 秒產出一個區塊,但實際區塊間隔時間會由於網絡擁堵的情況,而存在相當大的差異。但在 PoS 下,區塊間隔為固定的 12 秒,除非發生某些極端情況,如:驗證者離線或未及時提交區塊而錯過了某個插槽。

綜上,升級後網絡的平均出塊時間將減少近 1 秒,這提高了交易的速率。注意:如果智能合約中存在與特定平均出塊時間相關的邏輯,則在計算時開發人員需要考慮到這一點。

好了,今天的分享就結束了,下一篇,我們探討以太坊合併之後將面臨的安全問題,歡迎持續關注我們的分享。

參考文獻:

《升級前夕,以太坊社區面臨監管擔憂》https://www.defidaonews.com/media/6772646

《How The Merge Impacts Ethereum's Application Layer》https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer/

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。本文內容僅用於信息分享,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。