EIP-7516: BLOBBASEFEE 指令
返回当前数据 blob 基本费用的指令
Authors | Carl Beekhuizen (@carlbeek) |
---|---|
Created | 2023-09-11 |
Requires | EIP-3198, EIP-4844 |
摘要
添加一个 BLOBBASEFEE (0x4a)
指令,该指令返回其执行所在的当前区块的 blob 基本费用值。它与 EIP-3198 (BASEFEE
操作码) 相同,只是它返回 EIP-4844 规定的 blob 基本费用。
动机
预期用例是合约获取 blob 基本费用的值。此功能使 blob 数据用户能够以编程方式计算 blob gas 价格,例如:
- 允许 rollup 合约以可信的方式计算 blob 数据使用成本。
- Blob gas 期货可以基于此实现,从而允许 blob 用户平滑数据 blob 成本。
规范
添加一个操作码为 0x4a
的 BLOBBASEFEE
指令,gas 成本为 2
。
Op | Input | Output | Cost |
---|---|---|---|
0x4a | 0 | 1 | 2 |
BLOBBASEFEE
返回 EIP-4844 §Gas accounting 中定义的 get_blob_gasprice(header) -> int
函数的结果。
理由
Gas 成本
处理数据 blob 交易需要 blob 基本费用的值。这意味着它的值在运行 EVM 代码之前已经可用。
该指令没有增加额外的复杂性和额外的读/写操作,因此选择了 2
的 gas 成本。这也与 EIP-3198 (BASEFEE
操作码) 的成本相同,因为它只是提供了 header 中的数据。
向后兼容性
此指令不存在已知的向后兼容性问题。
测试用例
标称情况
假设在当前区块的 header 上调用 get_blob_gasprice(header)
(如 EIP-4844 §Gas accounting 中定义) 返回 7 wei
:
BLOBBASEFEE
应该将值 7
(左侧填充的 byte32) 推送到堆栈。
字节码:0x4900
(BLOBBASEFEE, STOP
)
Pc | Op | Cost | Stack | RStack |
---|---|---|---|---|
0 | BLOBBASEFEE | 2 | [] | [] |
1 | STOP | 0 | [7] | [] |
输出:0x
消耗的 gas:2
综合测试套件
一个完整的测试套件可以在 这里 找到。
安全注意事项
blob 基本费用的值并不敏感,并且可以在区块 header 中公开访问。此指令不存在已知的安全隐患。
版权
在 CC0 下放弃版权及相关权利。
Citation
Please cite this document as:
Carl Beekhuizen (@carlbeek), "EIP-7516: BLOBBASEFEE 指令," Ethereum Improvement Proposals, no. 7516, September 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7516.