news 2026/9/15 11:59:50

EIP-7623 深度解析:以太坊 calldata 成本上调如何将最大区块大小从 1.79 MB 压至 0.72 MB

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
EIP-7623 深度解析:以太坊 calldata 成本上调如何将最大区块大小从 1.79 MB 压至 0.72 MB

EIP-7623 深度解析:以太坊 calldata 成本上调如何将最大区块大小从 1.79 MB 压至 0.72 MB

【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs

导读:本文以以太坊改进提案 EIP-7623(Increase calldata cost) 为核心,系统拆解其通过"数据密集型交易最低成本下限(floor cost)"机制抑制最大区块膨胀的完整设计——从背景动机、规范公式、区块大小量化分析,到钱包/节点兼容性要求与安全考量,并结合仓库中的 EIP-1559、EIP-2028、EIP-4844 等关联提案及 Pectra 硬分叉元 EIP 佐证其演进脉络。读完本文,你将能准确理解该提案的 gas 计算公式、floor 机制的作用原理,以及它对区块构建、钱包 gas 估算和 DA(数据可用性)定价的深远影响。


一、提案定位:一个已进入 Pectra 升级的 Core 提案

EIP-7623 是一份Standards Track / Core类提案,状态为Final,由 Toni Wahrstätter(@nerolation)与 Vitalik Buterin(@vbuterin)共同撰写,创建于 2024-02-13。它被正式列入 Prague/Electra(Pectra)网络升级的 Core EIP 清单——这一事实可从仓库中的硬分叉元 EIP EIP-7600(Hardfork Meta - Pectra) 直接确认:其 Included EIPs 一节明确列出"EIP-7623: Increase calldata cost"。

与多数引入新功能、新操作码的 EIP 不同,EIP-7623 的目标非常"朴素"却极为关键:通过重新定价 calldata,缩小以太坊区块"平均大小"与"理论上限大小"之间的巨大落差,为未来容纳更多 blob 或提高区块 gas limit 腾出空间。

该提案属于向后不兼容的 gas 重新定价(backwards incompatible gas repricing),必须随一次排定的网络升级(network upgrade)生效,这也是它被归入 Pectra 的原因。


二、背景与动机:为什么 calldata 定价需要重新审视

2.1 平均大小与最大大小的失衡

EIP-7623 的摘要开篇给出了一个刺眼的数据对比:

  • 按当时的 calldata 定价,EL payload(执行层负载)理论上限约为 7.15 MB
  • 实际平均区块大小仅有约 100 KB

两者相差两个数量级。这意味着协议必须为极端情况预留大量带宽与处理能力,而日常根本用不到。这种"最大 vs 平均"的差距,正是限制以太坊进一步扩容(提高 gas limit、增加 blob 数量)的隐形天花板。

2.2 三个关键历史背景

提案的 Motivation 部分点出了三个相互关联的历史事实:

  1. 区块 gas limit 自 EIP-1559 以来未曾提高。EIP-1559 引入了 base fee 机制与动态区块伸缩(target/limit 弹性),但每个区块的 gas 上限本身保持不变,区块大小因此被 gas limit 严格约束。

  2. calldata 成本自 EIP-2028 以来保持不变。EIP-2028 将 calldata 中非零字节的 gas 成本从 68 gas/字节大幅降至 16 gas/字节(零字节仍为 4 gas),初衷是降低 Layer 2(STARK/SNARK 证明、欺诈证明、DA 数据上链)与无状态客户端的成本。但正是这份"便宜",让 calldata 成为 rollup 廉价发布数据的热门通道——区块平均大小因此随 rollup 数据发布量的增长而持续抬升。

  3. EIP-4844(Shard Blob Transactions) 引入了 blob 作为数据可用性(DA)的首选方式。blob 交易携带无法被 EVM 执行访问、但承诺可被访问的大块数据,且带 blob 的区块不会无上限膨胀。这一"数据搬到 blob 上"的范式转移,要求重新评估 calldata 的定价——既然 DA 有了更合适的载体,继续让 calldata 保持"廉价海量数据通道"的定位就不再合理。

2.3 提案的核心思路

EIP-7623 的解法不是简单地把所有 calldata 涨价(那会误伤正常用户),而是引入一个基于"EVM 执行 gas 与 calldata gas 之比"的最低成本下限(floor cost)

对于主要用来发布数据的交易,calldata 成本从 4/16 gas 每字节提高到 10/40 gas 每字节; 对于包含大量 EVM 计算的交易,calldata 成本维持 4/16 gas 每字节不变。

这样既能把"纯数据型"大负载交易挤出区块空间,又不影响绝大多数常规用户。


三、规范详解:参数、公式与交易有效性

3.1 核心参数

EIP-7623 的 Specification 只定义了两个参数,极简但关键:

ParameterValue
STANDARD_TOKEN_COST4
TOTAL_COST_FLOOR_PER_TOKEN10

3.2 tokens_in_calldata:把 calldata 折算成"token"

规范定义了"token"(代币化计费单元)这一中间量,统一了零字节与非零字节的计价:

tokens_in_calldata = zero_bytes_in_calldata + nonzero_bytes_in_calldata * 4

即:1 个零字节 = 1 token,1 个非零字节 = 4 token。这与现行定价"零字节 4 gas、非零字节 16 gas"的 1:4 比例完全一致——STANDARD_TOKEN_COST = 4正是每 token 的标准 gas 价格。

3.3 交易 gas 计算:从单一公式到 max() 双轨公式

在 EIP-7623 之前,单笔交易的总 gas 消耗(tx.gasUsed)由四部分构成:

tx.gasUsed = ( 21000 + STANDARD_TOKEN_COST * tokens_in_calldata + execution_gas_used + isContractCreation * (32000 + INITCODE_WORD_COST * words(calldata)) )

其中:

  • 21000:每笔交易的内置基础 gas(intrinsic gas);
  • STANDARD_TOKEN_COST * tokens_in_calldata:calldata 数据费用;
  • execution_gas_used扣除 gas 退款(refund)后的 EVM 执行 gas;
  • isContractCreation * (32000 + INITCODE_WORD_COST * words(calldata)):合约创建交易额外负担——32000是 EIP-3860 之前的创建成本部分,而INITCODE_WORD_COST = 2正是 EIP-3860 定义的 initcode 每 32 字节计费常量(该提案同时将 initcode 大小上限设为2 * MAX_CODE_SIZE = 49152)。

EIP-7623 的改动在于:对上述计算结果与"按 token 数计算的最低成本下限"取最大值:

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 ) )

关键在TOTAL_COST_FLOOR_PER_TOKEN * tokens_in_calldata这一项:它等于10 × tokens,折算到字节层面即零字节 10 gas/字节、非零字节 40 gas/字节

floor 何时生效?当交易数据量很大、而 EVM 执行消耗的 gas 相对很少时(典型的"纯 DA 发布"交易),execution_gas_used贡献微乎其微,第一项 ≈STANDARD_TOKEN_COST * tokens,会低于第二项的 10×tokens,于是max()取到 floor,交易被按 10/40 计价。反之,若交易包含大量 EVM 计算(DeFi 交互、Token 转账、NFT 操作等),第一项中execution_gas_used足够大,仍由第一项主导,calldata 维持 4/16 的廉价定价。

3.4 交易有效性下限:floor 必须在 gas limit 中预留

规范还明确了一条交易合法性约束:

任何 gas limit 低于21000 + TOTAL_COST_FLOOR_PER_TOKEN * tokens_in_calldata,或低于其内在 gas 成本(取两者较大值)的交易,均视为无效(invalid)

这条规则的逻辑是:交易必须仅凭其数据就足以覆盖 floor 价格,而不能依赖执行环节产生的 gas 消耗来"补足"。因为存在合法的场景——比如执行中途REVERT或实际执行 gas 很少——此时gasUsed会低于 floor,但 floor 必须在交易的 gas limit 中预先保留,交易才能合法进入区块。

这一约束直接改变了区块构建者的工作方式:正如 EIP-7873 中所述,EIP-7623 为交易的 gas limit 建立了新的下限,区块构建者需要确保不会把不满足该下限的无效交易打包进区块。


四、原理与效果:区块大小究竟被压到了多少

Rationale 部分是理解该提案价值的核心,其中给出了完整的量化推演链:

4.1 现状:最大 EL payload 有多大

  • 标准构造下,最大 EL payload 约为1.79 MB,即30_000_000 / 16(30M gas limit ÷ 非零字节 16 gas)。
  • 使用全零字节填充可以构造出膨胀到7.15 MB的 payload(30_000_000 / 4)。
  • 然而,由于 P2P 层区块通常经过Snappy 压缩,零字节密集的 payload 一般会被压缩到 1.79 MB 以下。
  • EIP-4844 上线后,引入了 blob 相关的区块载荷,最大可能压缩区块大小升至约 2.54 MB

4.2 提案生效后:数据密集交易被大幅限流

在 floor 规则下,对于"EVM 计算 gas 未超过阈值"的数据密集交易,calldata 成本变为 10/40 gas 每字节:

  • 纯零字节交易:30_000_000 / 10 = 3 MB
  • 纯非零字节交易(最坏情况):30_000_000 / 40 = 0.72 MB

因此,EIP-7623 将数据密集交易能塞进单个区块的 payload 上限降到约 0.72 MB。不过规范也诚实地指出,对抗性(adversarial)区块构造仍可达到约1.26 MiB的不可压缩 EL payload——但这相比此前的 7.15 MB 理论值已是数量级的收窄。

4.3 谁不受影响

提案特别强调两点:

  1. 常规用户不受影响:发送 ETH/Token/NFT、参与 DeFi、社交、再质押(restaking)、桥接(bridging)等日常操作,其 calldata 占比较小、EVM 计算占比较大,floor 不会触发,成本维持原样。
  2. 高计算量交易不受影响:涉及大量 EVM 计算、calldata 只是"附带"的交易,仍按 4/16 gas 每字节计价。

换言之,EIP-7623 的定价杠杆精准地只落在"主要靠 calldata 发数据"的少数交易类型上,实现了"压低上限、不动平均"的效果——这正是它被选入 Pectra 的关键原因:在不打扰绝大多数用户的前提下,为后续扩容(更多 blob、更高 gas limit)释放安全余量。


五、向后兼容性与升级要求:钱包与节点必须同步更新

EIP-7623 明确这是一次向后不兼容的 gas 重新定价,需要排定的网络升级配合。更重要的是,它给出了针对生态各方的强制要求(MUST):

5.1 钱包:必须正确估算 floor

使用eth_estimateGas的钱包MUST更新其 gas 估算逻辑,以正确计入TOTAL_COST_FLOOR_PER_TOKEN。若钱包沿用旧公式估算:

  • 对数据密集交易可能低估 gas
  • 低估会导致交易因 gas limit 低于 floor 而被判无效,最终表现为交易失败

5.2 节点软件 / RPC:必须采用新公式

eth_estimateGas等 RPC 方法MUST采用更新后的 gas 计算公式,节点开发者MUST确保与新的 calldata 定价逻辑兼容。

5.3 最终用户:无需任何操作

用户无需修改任何工作流——钱包与 RPC 的升级会透明地处理这些变化。

值得一提的是,EIP-7623 的 floor 机制并非孤立存在,它已成为后续协议设计的基础设施:例如 EIP-3298(关于退款机制的重新设计)就明确指出退款后的tx_gas_used仍受 EIP-7623 calldata floor 约束,收据中的cumulative_gas_used使用 floor 后的值;EIP-7778 则在区块级 gas 记账中采用block.gas_used += max(tx_gas_used, calldata_floor_gas_cost)以纳入该 floor;EIP-7886 也规定 inclusion gas 必须取"常规 intrinsic gas 与 EIP-7623 calldata floor 成本"两者的最大值。这些都印证了 floor 已成为协议 gas 账本的通用构件。


六、安全考虑:交易捆绑(Transaction Bundling)不成问题

由于最大可能区块大小被显著压低,EIP-7623 本身未引发新的安全顾虑("no security concerns have been raised")。

规范额外讨论了一个直觉上可能的规避手段:把两笔交易合并成一笔,例如把"重度依赖 calldata、几乎不耗 EVM 资源"的交易与"正好相反"的交易捆绑,从而摊薄 floor 成本。提案给出三点反驳:

  1. 这种捆绑今天就已经可行——合并多笔交易本就可省掉后续每笔的 21,000 gas 基础费,且是 ERC-4337 明确支持的账户抽象特性,并非 EIP-7623 引入的新漏洞;
  2. 此类捆绑不会削弱本提案的区块大小压缩目标——区块总数据量并不会因此变大;
  3. 实践中捆绑往往不可行——它要求多方之间的信任与协调,门槛极高。

综合来看,交易捆绑不会对提案目标构成实质威胁。


七、在以太坊演进中的位置:从 calldata 廉价时代到多维定价时代

从仓库中可梳理出一条清晰的定价演进主线:

  1. EIP-2028(2019,Final):非零 calldata 字节从 68 gas 降到 16 gas,开启"calldata 作为 DA 廉价通道"时代;
  2. EIP-4844(2024,Final):引入 blob,DA 获得专属空间,calldata 的 DA 定位开始让位;
  3. EIP-7623(2024,Final,Pectra):用 floor 机制约束 calldata 的极端用量,压低最大区块大小;
  4. 后续探索并未止步:EIP-7706(Separate gas type for calldata,Stagnant)提议为 calldata 建立独立的 basefee 与 gas limit 费用市场(多维 gas 定价),其动机一节与 EIP-7623 如出一辙——理论最大区块过大限制扩容;EIP-7976(要求 EIP-7623)则在 10/40 基础上进一步探讨 64/64 的更高 floor 定价,将数据密集 payload 上限进一步压缩(在 45M gas limit 假设下从约 1.07 MB 降至约 0.67 MB),并指出 10 MiB 的不可压缩执行 payload 在 64/64 定价下需要约 6.71 亿 gas(对比 10/40 定价下约 1.05 亿 gas)。

这条脉络说明:EIP-7623 是"以太坊从统一 gas 市场走向多维资源定价"过程中的关键一环——先用最小侵入的 floor 机制解决最迫切的区块膨胀问题,再逐步演进到更精细的分维计价。


八、总结

EIP-7623 用一组极简参数(STANDARD_TOKEN_COST = 4TOTAL_COST_FLOOR_PER_TOKEN = 10)和一个max()公式,完成了对以太坊区块大小分布的一次"削峰":

  • 数据密集交易被按 10/40 gas 每字节重新计价,最大 EL payload 从理论上限 7.15 MB 压至约 0.72 MB(对抗性构造约 1.26 MiB);
  • 常规用户与高计算量交易完全不受影响,仍享受 4/16 的 calldata 定价;
  • 钱包与节点必须同步升级 gas 估算逻辑(eth_estimateGas),否则数据密集交易可能因 gas 低估而失败;
  • 作为 Pectra 的 Core 提案,它为后续 blob 扩容与 gas limit 提升扫清了"区块过大"这一障碍,也为 EIP-7706 的多维定价、EIP-7976 的更高 floor 等后续设计奠定了范式基础。

对于协议开发者、钱包工程师、区块构建者以及 rollup 团队而言,理解 EIP-7623 的 floor 机制及其在 gas 账本中的贯通应用(参见 EIP-3298、EIP-7778、EIP-7886 的引用),是在 Pectra 时代正确估算 gas、构建区块与设计数据发布策略的必备前提。

【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 11:59:46

JDK28值类与Spring Boot4.1响应式升级实战指南

1. 这不是一份“新闻简报”,而是一份JVM生态实战者的手记Java周刊2026W35这个标题,表面看是时间戳版本号的堆砌,但如果你真在一线写业务、搭平台、调性能,就会立刻意识到:这一期不是更新日志,而是JVM技术栈…

作者头像 李华
网站建设 2026/9/15 11:59:16

用WeChatMsg导出微信聊天记录并生成年度报告

用WeChatMsg导出微信聊天记录并生成年度报告 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 换手机或者…

作者头像 李华
网站建设 2026/9/15 11:55:26

MongoDB 中升级 SpiderMonkey WASM 引擎的完整操作指南

MongoDB 中升级 SpiderMonkey WASM 引擎的完整操作指南 【免费下载链接】mongo The MongoDB Database 项目地址: https://gitcode.com/GitHub_Trending/mo/mongo 本指南以 spider-monkey/README.md 的官方升级流程为骨架,结合当前仓库中的 Bazel 仓库规则、版…

作者头像 李华
网站建设 2026/9/15 11:55:25

dede如何手机网站和电脑网站的数据同步更新:3个关键步骤与5大注意事项

dede如何手机网站和电脑网站的数据同步更新:3个关键步骤与5大注意事项 网站被黑挂马不知道怎么办?这不仅是安全危机,更是数据同步断裂的前兆。很多站长发现手机端内容滞后,往往是因为忽略了后台的 注意事项 ,导致数据孤岛。DedeCMS(织梦)虽然强大,但移动端适配常让新手头疼。…

作者头像 李华