Alert Source Discuss
⚠️ Draft Standards Track: Core

EIP-7960: EOF - 扩展类型部分

使用额外的类型参数扩展 EOF 容器的类型部分。

Authors Wei Tang (@sorpaas)
Created 2025-05-28
Discussion Link https://ethereum-magicians.org/t/eip-series-evm64/23794
Requires EIP-3540

摘要

此 EIP 使用额外的 type 参数扩展了 EOF 格式(EIP-3540)中 types_section 的定义。

动机

额外的 type 参数允许 EOF EVM 解释器识别代码部分的“类型”。 这允许解释器以不同的方式“解释”每个代码段,允许 EOF 函数调用,例如,调用纯 EVM64 代码,甚至以后支持 RISC-V。

规范

EIP-3540 中定义的 types_section 更改为以下格式 (type, reserved, inputs, outputs, max_stack_increase)typeuint8reserved 是 24 位,inputsoutputsmax_stack_increase 分别定义为 uint8uint8uint16,与之前相同。 此 EIP 中定义的唯一有效 type0x01。 可以为其他代码 section type 定义其他 EIP。

EIP-3540 中定义的 version 更改为 0x02,以避免第三方链已经在生产环境中部署了 EOF 时的向后兼容性问题。

在 EOF 容器中,添加以下验证规则:

  • 如果 types_section 中的 type 不是已知类型,则验证失败。
  • types_section 中的 reserved 必须全部为零。

理由

新的 type 参数允许合约“调度”到不同变体的解释器,以更好地满足其需求。

  • 主要与以太坊地址、余额、存储交互的代码部分可以运行“正常”的 EVM。
  • 计算量大的代码部分可以运行更快的 EVM64,但会失去直接与以太坊地址和余额交互的能力。

允许为每个代码段定义此 type,确保合约保持简洁——它可以快速切换其计算需求和系统/运行时需求。

添加 reservedtypes_section 以保持适当的填充。 types_section 中的每个项目现在总共 64 位。

向后兼容性

据我们所知,EOF(包括 EIP-3540)非常接近部署,之后才决定退出 Fusaka。 为了避免某些第三方链已经在生产环境中部署了 EOF 的问题(考虑到 EOF 的状态,我们可以认为这很可能),我们将 EOF 的 version 提升到 0x020x01 现在无效。

未发现其他向后兼容性问题。

测试用例

待添加。

参考实现

待添加。

安全注意事项

需要讨论。

版权

根据 CC0 放弃版权和相关权利。

Citation

Please cite this document as:

Wei Tang (@sorpaas), "EIP-7960: EOF - 扩展类型部分 [DRAFT]," Ethereum Improvement Proposals, no. 7960, May 2025. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7960.