隨著以太坊Merge 時間節點將至,今天我們將探討以太坊合併之後會面臨哪些監管問題和應用層問題。
2022 年8 月16 日,以太坊聯合創始人Vitalik Buterin(V 神)在推特上參與討論「若監管通過某些協議(如Lido、Coinbase 等)的驗證者者對以太坊進行協議級別的審查,以太坊社區將如何反應」這一話題時表示,會將這種審查視為對以太坊的攻擊,並選擇通過更廣泛共識(social consensus)將這些驗證者的質押權益進行銷毀。
引起這個討論的導火索在於:近期,美國財政部海外資產控制辦公室(OFAC) 將與Tornado Cash 有關的以太坊地址添加到製裁實體的名單中。但是目前對其的製裁都是處於中心化層面的操作,對於涉及到去中心化的智能合約部分,尚無法進行技術制裁。
這表明如果美國要想要徹底制裁Tornado cash ,就必須要控制底層的以太坊鏈。那麼就引出一個問題,假如美國政府對以太坊進行監管,會面臨什麼?
簡單來說,簡單來說,
簡單來說,就是監控被制裁地址發出的所有請求,並將所有包含被制裁地址事務的區塊進行拒絕出塊即可,當一個區塊無法通過66% 以上權益驗証投票通過時,該區塊的所有事務請求將會進行回滾,這也就意味著被制裁的地址將無法進行任何操作,並且驗證者不會面臨任何懲罰。
圖片描述
圖片描述
圖源自Dune Analytics
針對可能出現的上述情況,在以太坊社區在Twitter 上發起了一項投票討論,如果OFAC 通過驗證節點對以太坊實施監管該怎麼做。 V 神支持將上述情況視為對以太坊的攻擊,並通過更廣泛共識將這些節點的質押權益進行銷毀。
下面,我們再來聊一聊應用層的問題。
我們在上一篇曾提到:按照計劃,以太坊的Merge 以「最小破壞」原則進行,使原來運行的應用客戶端可以無感地切換到PoS。也就是說,儘管是「最小破壞」,但在這個過程中,有一些小的變化仍然值得我們注意。本節就主要從應用開發的角度介紹在合併後,我們應該關注的方面。
合併後,當前的Eth1 和Eth2 客戶端將成為以太坊的執行層和共識層(或引擎)。圖片描述正文
圖片描述
合併後客戶端架構. 圖源自Danny Ryan
區塊結構
當合併發生時,信標節點將監視當前的PoW 鏈並等待它達到預定義的total difficulty 閾值,該值被稱為TERMINAL_TOTAL_DIFFICULTY。即一旦PoW 鏈產生了一個帶有total difficulty >= TERMINAL_TOTAL_DIFFICULTY 的塊,它將被視為鏈上最後的一個PoW 塊。
隨後,PoW 塊包含的數據將成為信標鏈塊的數據組成部分,而信標鏈則可以被視作為以太坊新的PoS 共識層,取代之前的PoW 共識層。
同時在進行共識驗證時,信標節點將與其執行引擎(升級前的以太坊客戶端)通信,並要求它生成或驗證ExecutionPayloads。 ExecutionPayloads 包含了父哈希、狀態根、基本費用和要執行的交易列表等信息。
圖片描述
圖片描述
圖源自Danny Ryan
執行引擎
合併之後,執行引擎主要負責狀態管理,區塊創建和驗證功能,而不再包含與共識相關的任何操作。因此,執行引擎被進行了部分修改,這些修改在EIP-3675 中進行了描述,主要包含以下三點:
首先,修改了區塊的部分數據字段。將原有區塊中幾個僅與PoW 相關的字段設置為0(或其數據結構的等效項),具體包括與挖礦相關(difficulty, mixHash, nonce)、 叔塊獎勵相關(ommers, ommersHash )。此外,extraData 的長度在主網上也將被限制為32 字節。
其次,由於只有合併後的信標鏈才能進行出塊,因此執行引擎將停止處理區塊和叔塊獎勵。但交易手續費仍由其進行處理,即當執行引擎創建一個ExecutionPayload 時,需確保所有交易的發起者至少能夠支付當前baseFeePerGas 的費用,並且將剩餘的交易手續費發送到feeReceipient。注意,feeReceipient 指的是升級前的以太坊地址,而不是信標鏈驗證者地址。
最後,一旦PoS 取代PoW,執行引擎將不再負責廣播區塊,但仍會通過p2p 網絡進行交易的廣播。圖片描述
圖片描述
圖源自Danny Ryan
BLOCKHASH DIFFICULTY 操作碼更改
合併後,BLOCKHASH 操作碼仍可使用,但由於它不再通過工作量證明生成對應的Hash 值,所以此操作碼提供的偽隨機性將被大大減弱。
與此同時, DIFFICULTY 操作碼(0x44) 將會更名為RANDOM 並返回由信標鏈提供的隨機數值。因此,該值將替代BLOCKHASH 成為應用程序開發人員可使用的更好隨機源(儘管仍然存在偏差)。
圖片描述
圖片描述
圖源自Danny Ryan
合併前,我們看到0x44 操作碼返回區塊頭裡的difficulty 字段。合併後,負責生成隨機數的RANDOM 操作碼則指向原有mixHash 字段,該字段被重名為random。
出塊時間
原文鏈接
參考文獻:
參考文獻:
《原文鏈接》