Alert Source Discuss
🚧 Stagnant Standards Track: Core

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 限制在 02^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.