🚧 Stagnant
Standards Track: Core
EIP-7825: 交易 Gas 限制上限
EIP-7825: 交易 Gas 限制上限
引入一个协议级的交易最大 gas 用量上限,设为 3000 万。
Authors | Giulio Rebuffo (@Giulio2002) |
---|---|
Created | 2024-11-23 |
Discussion Link | https://ethereum-magicians.org/t/eip-7825-transaction-gas-limit-cap/21848 |
摘要
本提案引入了一个协议级的单个交易最大 gas 用量上限,设为 3000 万 gas。通过实施此限制,以太坊可以增强其对某些 DoS 向量的抵抗力,提高网络稳定性,并为交易处理成本提供更高的可预测性,尤其是在提高 Gas Limit 的背景下。
动机
目前,理论上交易可以消耗高达整个区块 gas 限制的 gas,这带来了一些风险:
- DoS 攻击:单个交易消耗大部分或全部区块 gas 可能会导致负载分配不均,并影响网络稳定性。
- 状态膨胀风险:高 gas 交易通常会导致更大的状态更改,增加节点的负担并加剧以太坊状态增长问题。
- 验证开销:高 gas 交易可能导致更长的区块验证时间,从而对用户体验和网络去中心化产生负面影响。
通过将单个交易限制为最多 3000 万 gas,我们的目标是:
- 降低单笔交易 DoS 攻击的风险。
- 促进区块内交易之间更公平的 gas 分配。
- 通过减轻极端的区块验证时间,确保节点之间更好的同步。
规范
Gas 上限
- 对任何单个交易强制执行协议级别的最大 3000 万 gas 限制。
- 此上限适用于矿工或验证者设置的区块 gas 限制,不受其影响。
- 指定 gas 限制高于 3000 万 gas 的交易将被拒绝,并显示相应的错误代码(例如,
MAX_GAS_LIMIT_EXCEEDED
)。
EVM 行为的变更
- Txpool 验证:在交易验证期间,如果发送者指定的
gasLimit
超过 3000 万,则交易无效(不包括在 txpool 中)。 - 区块验证:作为处理前的区块验证的一部分,任何具有
gasLimit
> 3000 万的交易的区块都被视为无效并被拒绝。
协议调整
- 客户端实现中交易的
GAS_LIMIT
参数将被限制为 3000 万。 - 此上限与区块 gas 限制无关,区块 gas 限制仍然可以超过此值。
理由
为什么是 3000 万?
提议的 3000 万 gas 上限基于当今以太坊区块的典型大小,通常在 3000 万到 4000 万 gas 之间。此值足够大,可以允许复杂的交易,例如合约部署和高级 DeFi 交互,同时仍然为区块内的其他交易保留空间。
与当前 Gas 动态的兼容性
- 向后兼容性:gas 使用量低于 3000 万的交易不受影响。现有的工具和 dApp 只需要进行少量更新即可实施新的上限。
- 对验证者的影响:验证者可以继续处理 gas 限制超过 3000 万的区块,前提是单个交易符合上限。
向后兼容性
此更改与指定 gas 限制超过 3000 万的交易不向后兼容。具有如此高限制的交易将需要拆分为更小的操作。 预计此调整将影响最少数量的用户和 dApp,因为今天的绝大多数交易都远低于提议的上限。
安全注意事项
- DoS 缓解:固定上限降低了由过高的 gas 交易引起的 DoS 攻击的风险。
- 区块验证稳定性:通过限制单个交易,区块的验证变得更加可预测和统一。
- 边缘情况:某些高度复杂的交易,例如大型合约部署,可能需要重新架构以适应 3000 万 gas 的上限。
版权
通过 CC0 放弃版权和相关权利。
Citation
Please cite this document as:
Giulio Rebuffo (@Giulio2002), "EIP-7825: 交易 Gas 限制上限 [DRAFT]," Ethereum Improvement Proposals, no. 7825, November 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7825.