Alert Source Discuss
Standards Track: Core

EIP-3198: BASEFEE 操作码

Authors Abdelhamid Bakhta (@abdelhamidbakhta), Vitalik Buterin (@vbuterin)
Created 2021-01-13
Requires EIP-1559

简单总结

添加一个操作码,使 EVM 能够访问区块的基础费用。

摘要

添加一个 BASEFEE (0x48),它返回当前执行区块的基础费用值。

动机

预期用例是让合约获取基础费用的值。此功能将启用或改进现有用例,例如:

  • 需要为任何人设置赏金以使用交易“戳”它们的合约可以将赏金设置为 BASEFEE + xBASEFEE * (1 + x)。这使得该机制更加可靠,因为无论市场情况如何,它们总是支付“足够”的费用。
  • Gas futures 可以基于它来实现。这将比 gastokens 更精确。
  • 提高状态通道、plasma、optirolls 和其他欺诈证明驱动解决方案的安全性。将 BASEFEE 作为输入允许您在看到 BASEFEE 较高时自动延长挑战期。

规范

(0x48) 添加一个 BASEFEE 操作码, gas 成本为 G_base

Op Input Output Cost
0x48 0 1 2

原理

Gas 成本

处理交易需要基础费用的值。这意味着它的值在运行 EVM 代码之前已经可用。 该操作码没有增加额外的复杂性和额外的读/写操作,因此选择 G_base gas 成本。

向后兼容性

此操作码不存在已知的向后兼容性问题。

测试用例

标称情况

假设当前区块基础费用为 7 wei。 这应该将值 7(左填充 byte32)推送到堆栈。

字节码:0x4800 (BASEFEE, STOP)

Pc Op Cost Stack RStack
0 BASEFEE 2 [] []
1 STOP 0 [7] []

输出: 0x 消耗的 gas: 2

安全注意事项

基础费用的值并不敏感,并且可以在区块头中公开访问。此操作码不存在已知的安全隐患。

版权

通过 CC0 放弃版权及相关权利。

Citation

Please cite this document as:

Abdelhamid Bakhta (@abdelhamidbakhta), Vitalik Buterin (@vbuterin), "EIP-3198: BASEFEE 操作码," Ethereum Improvement Proposals, no. 3198, January 2021. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-3198.