Alert Source Discuss
⚠️ Draft Standards Track: Core

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 成本规则。 具体来说:

  1. 钱包:必须更新使用 eth_estimateGas 的钱包,以确保它们正确考虑更新后的 TOTAL_COST_FLOOR_PER_TOKEN 参数 15。 如果不这样做,可能会导致 gas 估算不足,从而导致交易失败。

  2. 节点软件:诸如 eth_estimateGas 之类的 RPC 方法必须包含更新后的 gas 计算公式以及新的最低成本值。

用户可以保持其通常的工作流程而不进行修改,因为钱包和 RPC 更新将处理这些更改。

测试用例

此 EIP 的测试应验证新的 calldata 成本下限 15/60 gas 每零/非零字节的正确应用:

  1. 数据密集型交易:验证具有最小 EVM 执行的交易是否支付 15 gas 每个 calldata 代币的最低成本
  2. EVM 密集型交易:确认具有大量计算的交易继续使用标准的 4/16 gas 每字节
  3. 边缘情况:测试执行 gas 等于或超过最低成本边界的交易
  4. Gas 估算:验证 eth_estimateGas 是否正确计算新的 TOTAL_COST_FLOOR_PER_TOKEN
  5. 无效交易:确保正确拒绝 gas 限制不足的交易

安全考虑

由于与 EIP-7623 相比,最大可能的区块大小进一步减小,因此除了原始提案中已解决的那些问题之外,没有引入其他安全问题。

EIP-7623 中的相同交易捆绑考虑因素适用:

  1. 交易捆绑已经成为可能,并且仍然如此
  2. 捆绑不会损害区块大小减少的目标
  3. 实际限制(信任、协调)继续限制广泛的捆绑

增加的最低成本加强了选择适当的数据可用性方法的激励结构,而不会引入新的攻击媒介。

版权

版权和相关权利通过 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.