Alert Source Discuss
Standards Track: Core

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 成本。

规范

添加一个操作码为 0x4aBLOBBASEFEE 指令,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 weiBLOBBASEFEE 应该将值 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.