本文來自:以太坊聯合創辦人Vitalik
編譯|Odaily星球日報( @OdailyChina )
譯者|Azuma( @azuma_eth )
在這篇文章中,我將提出一個關於以太坊執行層未來的激進想法,其宏大程度與共識層的Beam Chain 計畫不相上下。該計畫的目標是大幅提升以太坊執行層的效率,解決主要的擴展瓶頸之一,同時也能極大簡化執行層的複雜性—— 事實上,這可能是實現簡化的唯一途徑。
本文的核心觀點是,以RISC-V 取代EVM 作為智慧合約的虛擬機器語言。
重要說明:
帳戶、跨合約呼叫、儲存等概念將完全保留。這些抽象機制運作良好且開發者已習慣使用。類似SLOAD、SSTORE、BALANCE、CALL 等操作碼將成為RISC-V 的系統呼叫。
開發者仍可選擇Solidity 或Vyper。雖然理論上可用Rust 編寫智能合約,但預計大部分開發者會繼續使用Solidity(或 Vyper) ,這些語言將透過適配RISC-V 作為後端編譯目標—— 這是因為Rust 編寫的智能合約可讀性較差,而Solidity 和Vyper 更易理解。開發體驗幾乎不會改變,開發者可能完全感受不到差異。
新舊合約將實現雙向互通。傳統EVM 合約將繼續運行,並能與新型RISC-V 合約完全互動。具體實現方式後文將詳述。
已有先例可循: Nervos CKB VM 本質上就是基於RISC-V 的實現。
為何需要這種改變?
短期內,以太坊Layer 1 擴容的主要瓶頸將透過即將推出的EIP(如區塊等級存取清單、延遲執行、分散式歷史儲存以及EIP-4444)得到解決;中期內,我們將透過無狀態性和ZK-EVM 來解決更多問題;但長期來看,限制以太坊Layer 1 變擴:
資料可用性採樣與歷史儲存協定的穩定性;
維持區塊生產市場競爭性的需求;
ZK-EVM 的證明能力。
本文將論證,以RISC-V 取代ZK-EVM 能突破第2 點及第3 點中的關鍵瓶頸。
以下是Succinct ZK-EVM 用於證明EVM 執行層各環節所需的週期數統計表:
四個主要耗時環節為:「deserialize_inputs」(資料反序列化)、「initialize_witness_db」(見證資料庫初始化)、「state_root_computation」(狀態根計算)和「block_execution」(區塊執行)。
「見證資料庫初始化」和「狀態根計算」都與狀態樹有關,而「資料反序列化」指的是將區塊和見證資料轉換為內部表示的過程。因此,實際上超過50% 的時間與見證資料的大小有關。
透過將目前的「keccak 16-ary Merkle patricia tree」(keccak 十六叉Merkle Patricia 樹)替換為使用證明友善雜湊函數的「binary tree」(二元樹),這些環節可以大幅最佳化。如果我們使用“Poseidon”,我們可以在筆記型電腦上每秒證明200 萬次哈希(相比之下,keccak 為每秒約15000 次哈希)。除了“Poseidon”之外還有許多其他選擇。總的來說,有機會大幅削減這些環節的耗時。此外,我們也可以透過去除「accrue_logs_bloom」來進一步簡化流程。
現在只剩下了“區塊執行”,它大約佔據了目前證明週期的一半。如果我們想將整體證明效率提高100 倍,就必須至少將EVM 證明效率提高50 倍。現有兩種路徑:一是嘗試創建更有效率的EVM 實現,以減少證明週期;二是直接讓開發者使用 ZK-EVM 底層已採用的 RISC-V 虛擬機器。
部分數據顯示,特定場景下效率提升可超 100 倍:
實務中,剩餘證明時間將主要消耗於預編譯合約(precompiles)。若將RISC-V 設為主虛擬機,gas 費用機制將反映實際的證明耗時,經濟壓力將促使開發者減少使用高成本的預編譯。儘管實際收益可能不如理論值,但預期仍將非常顯著。
值得注意的是,常規EVM 執行中也存在類似的「EVM」與「其他環節」 50/50 的耗時分配,我們直觀地認為,移除EVM 作為「中間層」應能獲得相近幅度的效率提升。
實作方法
有多種方法可以實現上述提案。
破壞性最低的方法是支援兩種虛擬機,允許合約選用任一種虛擬機編寫。兩種類型的合約都可以存取相同的功能:持久性儲存(SLOAD/SSTORE)、ETH 餘額管理、發起和接收呼叫等。 EVM 與RISC-V 合約可自由互調:從RISC-V 視角呼叫EVM 合約將被視為攜帶特殊參數的系統呼叫(syscall),而接收呼叫的 EVM 合約則將其解析為普通CALL 指令。
更激進的方案會將現有EVM 合約轉換為呼叫RISC-V 編寫的EVM 解釋器合約來執行其原有的EVM 程式碼。具體而言,假設某EVM 合約包含代碼C,且EVM 解釋器位於位址X,則該合約將被替換為頂層邏輯:當外部以呼叫參數D 發起呼叫時,該邏輯會向X 發送(C, D)請求,等待傳回值並轉送。若EVM 解釋器本身需要呼叫合約以執行CALL、SLOAD 或SSTORE 等操作,合約將直接回應。
折中方案則是在第二種方案基礎上,透過協定層明確支援虛擬機器解釋器概念- 即要求解釋器邏輯必須用RISC-V 編寫。 EVM 將作為首個官方解釋器,未來可能會引入其他類型(例如Move 語言解釋器)。
第二和第三種方案的核心優點在於大幅簡化執行層規範。考慮到即使像是移除SELFDESTRUCT 這類漸進式簡化都困難重重,此類變革可能是實現簡化的唯一現實途徑。 Tinygrad 專案嚴格規定程式碼量永不超1 萬行,理想的區塊鏈基礎層應追求更極致的精簡。 Beam Chain 計畫為以太坊共識層的簡化指明方向,而執行層要實現類似突破,或許只有透過此類根本性變革。