隨著以太坊Merge 時間節點將至,今天我們將探討以太坊合併之後會面臨哪些監管問題和應用層問題。
在我們推出“以太坊大合併”系列的第一篇文章裡,主要為大家介紹了以太坊升級的原因、路線和當前進展。 (深度| 以太坊“大合併”之後,能治好Web3的精神內耗嗎?)
隨著以太坊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/