Standards Track: Core
EIP-3198: BASEFEE 操作码
EIP-3198: BASEFEE 操作码
Authors | Abdelhamid Bakhta (@abdelhamidbakhta), Vitalik Buterin (@vbuterin) |
---|---|
Created | 2021-01-13 |
Requires | EIP-1559 |
简单总结
添加一个操作码,使 EVM 能够访问区块的基础费用。
摘要
添加一个 BASEFEE (0x48)
,它返回当前执行区块的基础费用值。
动机
预期用例是让合约获取基础费用的值。此功能将启用或改进现有用例,例如:
- 需要为任何人设置赏金以使用交易“戳”它们的合约可以将赏金设置为
BASEFEE + x
或BASEFEE * (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.