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)
。 type
是 uint8
,reserved
是 24 位,inputs
、outputs
、max_stack_increase
分别定义为 uint8
、uint8
、uint16
,与之前相同。 此 EIP 中定义的唯一有效 type
是 0x01
。 可以为其他代码 section type
定义其他 EIP。
EIP-3540 中定义的 version
更改为 0x02
,以避免第三方链已经在生产环境中部署了 EOF 时的向后兼容性问题。
在 EOF 容器中,添加以下验证规则:
- 如果
types_section
中的type
不是已知类型,则验证失败。 types_section
中的reserved
必须全部为零。
理由
新的 type
参数允许合约“调度”到不同变体的解释器,以更好地满足其需求。
- 主要与以太坊地址、余额、存储交互的代码部分可以运行“正常”的 EVM。
- 计算量大的代码部分可以运行更快的 EVM64,但会失去直接与以太坊地址和余额交互的能力。
允许为每个代码段定义此 type
,确保合约保持简洁——它可以快速切换其计算需求和系统/运行时需求。
添加 reserved
到 types_section
以保持适当的填充。 types_section
中的每个项目现在总共 64 位。
向后兼容性
据我们所知,EOF(包括 EIP-3540)非常接近部署,之后才决定退出 Fusaka。 为了避免某些第三方链已经在生产环境中部署了 EOF 的问题(考虑到 EOF 的状态,我们可以认为这很可能),我们将 EOF 的 version
提升到 0x02
。 0x01
现在无效。
未发现其他向后兼容性问题。
测试用例
待添加。
参考实现
待添加。
安全注意事项
需要讨论。
版权
根据 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.