EIP-7976: 进一步增加 calldata 成本
进一步增加 calldata 成本至 15/60 gas 每字节,以减少最大区块大小
Authors | Toni Wahrstätter (@nerolation) |
---|---|
Created | 2025-06-18 |
Discussion Link | https://ethereum-magicians.org/t/eip-7976-further-increase-calldata-cost/24597 |
Requires | EIP-7623 |
摘要
在实施 EIP-7623 之后,本 EIP 提议进一步调整 calldata 的定价,将最低成本从 10/40 提高到 15/60 gas 每零/非零字节。此更改旨在进一步减少最大区块大小和方差,同时保持与涉及大量 EVM 计算的常规用户交易的兼容性。
动机
虽然 EIP-7623 通过为数据密集型交易引入 10/40 gas 每字节的最低成本,成功地减少了最大可能的区块大小,但 gas 限制的持续增加需要进一步优化。当前的最低成本仍然允许相对较大的数据密集型负载,从而导致区块大小的差异。
通过将最低成本增加到 15/60 gas 每字节,本提案旨在:
- 进一步减少数据密集型交易的最大可能区块大小
- 为潜在的区块 gas 限制增加提供额外的空间
- 保持与具有大量 EVM 计算的交易相同的豁免
规范
参数 | 值 |
---|---|
STANDARD_TOKEN_COST |
4 |
TOTAL_COST_FLOOR_PER_TOKEN |
15 |
设 tokens_in_calldata = zero_bytes_in_calldata + nonzero_bytes_in_calldata * 4
。
设 isContractCreation
是一个布尔值,指示相应的事件。
设 execution_gas_used
是用于 EVM 执行的 gas,减去 gas 退款。
设 INITCODE_WORD_COST
为 2,如 EIP-3860 中定义。
用于确定每笔交易使用的 gas 的公式从 EIP-7623 的实现更改为:
tx.gasUsed = (
21000
+
max(
STANDARD_TOKEN_COST * tokens_in_calldata
+ execution_gas_used
+ isContractCreation * (32000 + INITCODE_WORD_COST * words(calldata)),
TOTAL_COST_FLOOR_PER_TOKEN * tokens_in_calldata
)
)
任何 gas 限制低于 21000 + TOTAL_COST_FLOOR_PER_TOKEN * tokens_in_calldata
或低于其内在 gas 成本(取这两个计算中的最大值)的交易都被认为是无效的。 存在此限制是因为交易必须支付其 calldata 的最低价格,而无需依赖交易的执行。 在某些有效情况下,gasUsed
将低于此最低价格,但需要在交易 gas 限制中预留最低价格。
原理
通过 EIP-7623 的实施,数据密集型交易的成本为 10/40 gas 每零/非零字节,从而将最大可能的 EL 负载大小减少到大约 0.72 MB (30_000_000/40
)。 本 EIP 进一步将其减少到大约 0.47 MB (30_000_000/60
)(对于零字节),并保持非零字节的比例成本。
通过将数据密集型交易的 calldata 成本从 10/40 增加到 15/60 gas 每字节,此 EIP 提供:
- 增强的区块大小减少:最大数据密集型负载大小降至约 0.47 MB
- 维持用户体验:参与 DeFi、代币转移和其他 EVM 密集型操作的普通用户仍然不受影响
- 更好的 blob 激励:更高的 calldata 成本进一步鼓励迁移到 blob 使用以实现数据可用性
最低成本机制确保涉及大量 EVM 计算的交易继续为 calldata 支付标准的 4/16 gas 每字节,从而保留了普通以太坊操作的用户体验。
向后兼容性
这是一个向后不兼容的 gas 重新定价,需要计划内的网络升级。
钱包开发者和节点运营商必须更新 gas 估算处理,以适应新的 calldata 成本规则。 具体来说:
-
钱包:必须更新使用
eth_estimateGas
的钱包,以确保它们正确考虑更新后的TOTAL_COST_FLOOR_PER_TOKEN
参数 15。 如果不这样做,可能会导致 gas 估算不足,从而导致交易失败。 -
节点软件:诸如
eth_estimateGas
之类的 RPC 方法必须包含更新后的 gas 计算公式以及新的最低成本值。
用户可以保持其通常的工作流程而不进行修改,因为钱包和 RPC 更新将处理这些更改。
测试用例
此 EIP 的测试应验证新的 calldata 成本下限 15/60 gas 每零/非零字节的正确应用:
- 数据密集型交易:验证具有最小 EVM 执行的交易是否支付 15 gas 每个 calldata 代币的最低成本
- EVM 密集型交易:确认具有大量计算的交易继续使用标准的 4/16 gas 每字节
- 边缘情况:测试执行 gas 等于或超过最低成本边界的交易
- Gas 估算:验证
eth_estimateGas
是否正确计算新的TOTAL_COST_FLOOR_PER_TOKEN
值 - 无效交易:确保正确拒绝 gas 限制不足的交易
安全考虑
由于与 EIP-7623 相比,最大可能的区块大小进一步减小,因此除了原始提案中已解决的那些问题之外,没有引入其他安全问题。
EIP-7623 中的相同交易捆绑考虑因素适用:
- 交易捆绑已经成为可能,并且仍然如此
- 捆绑不会损害区块大小减少的目标
- 实际限制(信任、协调)继续限制广泛的捆绑
增加的最低成本加强了选择适当的数据可用性方法的激励结构,而不会引入新的攻击媒介。
版权
版权和相关权利通过 CC0 放弃。
Citation
Please cite this document as:
Toni Wahrstätter (@nerolation), "EIP-7976: 进一步增加 calldata 成本 [DRAFT]," Ethereum Improvement Proposals, no. 7976, June 2025. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7976.