EIP-4803: 将交易 gas 限制为最大值 2^63-1
有效交易必须具有合理的 gas 限制
Authors | Alex Beregszaszi (@axic) |
---|---|
Created | 2022-02-02 |
Discussion Link | https://ethereum-magicians.org/t/eip-4803-limit-transaction-gas-to-a-maximum-of-2-63-1/8296 |
摘要
将交易 gas 限制在 0
和 2^63-1
之间。
动机
交易中的 gas 限制字段被指定为任意长的无符号整数,但各种客户端对该值设置了限制。此 EIP 将一个合理的限制引入到共识中。
规范
从创世区块开始追溯引入一项新限制:任何 gas 限制超过 2^63-1
的交易都是无效的,不能包含在区块中。
理由
2^63-1
vs 2^64-1
选择 2^63-1
是因为它允许将 gas 值表示为有符号整数,因此超 gas 检查可以在减法后作为简单的 “小于零” 检查来完成。
考虑 2^31-1
另一种选择是考虑较低的限制,因为这可以在 Javascript 中轻松处理,因为它将数字作为浮点数处理(实际的上界是 2^53-1
)。
当前限制
由于 RLP 编码的性质,该值没有固定的上限,但大多数实现将其限制为 256 位。此外,大多数客户端实现(例如 geth)在内部将 gas 作为 64 位值处理。
向后兼容性
虽然这是一个突破性的变化,但不应看到实际效果。
在 EIP-1559 之前,可以包含 gasPrice = 0
的交易,因此 gasLimit * gasPrice <= accountBalance
的计算可能允许任意大的 gasLimit
值。但是,交易列表不能超过区块 gas 限制的规则,以及关于区块 gas 限制如何更改的严格规则,阻止了任意大的 gasLimit
值出现在历史状态中。
安全注意事项
无。
版权声明
根据 CC0 放弃版权及相关权利。
Citation
Please cite this document as:
Alex Beregszaszi (@axic), "EIP-4803: 将交易 gas 限制为最大值 2^63-1 [DRAFT]," Ethereum Improvement Proposals, no. 4803, February 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-4803.