newsence
來源篩選

Meta: Stop extending the EVM with Precompiles, Use Opcodes

Ethereum Magicians

A compiler developer argues that future EVM extensions should use opcodes instead of precompiles to reduce gas costs, minimize bytecode size, and avoid breaking existing contract logic.

newsence

Meta:停止使用預編譯合約擴展 EVM,應改用操作碼

Ethereum Magicians
1 天前

AI 生成摘要

身為 EVM 編譯器開發者,我呼籲未來 EVM 的擴展應使用操作碼而非預編譯合約,因為預編譯合約會導致更高的 Gas 成本與更大的字節碼,且操作碼在擴展時對現有合約的破壞性更小。

作為一名開發 EVM 編譯器(Huff 以及現在的新語言「Plank」)且偶爾會手寫 EVM 字節碼的人,我想發出請求:希望未來 EVM 的擴展應使用 操作碼 (Opcodes) 而非 預編譯合約 (Precompiles)

我的理由如下:

  • 預編譯合約作為一種接口,其成本比單純使用操作碼要高得多,且會導致字節碼體積更大。

預編譯合約的行為類似於「合約」,要求所有輸入必須先放入記憶體中,這需要多次 MSTORE,即使輸入的大小或數量是固定的也是如此。

  • 調用預編譯合約需要一條 (STATIC)CALL 指令,EVM 對此收取 100 gas。

  • 輸出需要使用 MLOAD 指令從記憶體中讀取,即使輸出的大小或數量是固定的。

  • EVM 指令表中還有大量未使用空間可用於定義新操作碼。

  • 透過操作碼擴展 EVM 的破壞性可以說比預編譯合約更小:

要讓一個新操作碼對現有合約產生破壞性影響,需要合約中包含一個可達的未定義指令,而非明確的 INVALID 操作碼。

  • 相比之下,預編譯合約會使一個新地址變成有效的調用目標,並可能帶來任意的行為或返回特性。

          1 則貼文 - 1 位參與者      [閱讀完整主題](https://ethereum-magicians.org/t/meta-stop-extending-the-evm-with-precompiles-use-opcodes/27851)