
隨著以太坊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。
出塊時間
原文鏈接
參考文獻:
參考文獻:
《原文鏈接》