EIP-2242 Transaction Postdata 深度解析:为 Layer 2 数据可用性设计的链上数据发布通道
2026/9/15 18:06:42 网站建设 项目流程

EIP-2242 Transaction Postdata 深度解析:为 Layer 2 数据可用性设计的链上数据发布通道

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

导读

EIP-2242(Transaction Postdata)是 2019 年提出的一项 Ethereum 核心层(Core)共识修改提案,核心思路是在交易中新增一个可选的postdata字段,用于把数据发布到链上、但不允许 EVM 读取。本文基于本仓库 EIPS/eip-2242.md 的完整规范,结合仓库内 EIP-2028、EIP-2718、EIP-4844 等关联提案,从设计动机、交易格式、RLP 编码结构、gas 计费到兼容性与后续演进,系统讲解这条"数据可用性通道"的技术全貌,帮助读者理解"数据上链 ≠ 数据可被合约读取"这一范式的来龙去脉。


一、提案背景:区块链作为"数据可用性与仲裁层"

EIP-2242 的提出背景,源自当时以太坊社区正在发生的一场范式转变。在 Eth 2.0 的研究中,Execution Environments(执行环境) 与 stateless clients(无状态客户端) 概念的兴起,让区块链的角色从"通用计算平台"开始向"安全的数据可用性与仲裁层"转变:

  • 数据可用性层:为上层系统提供一个全球公认的、随时可检索的数据来源;
  • 仲裁层:处理欺诈证明(fraud proofs)或有效性证明(validity proofs),以及数据可用性证明。

作者 John Adler 认为,这一范式同样可以应用到 Eth 1.x 上:不引入 Execution Environments,而是用**信任最小化的侧链(trust-minimized side chains)**来替代。EIP-2242 正是为这种侧链方案提供底层支撑的共识层修改。

值得注意:该提案创建于 2019-08-16,当时采用的字段命名(startGasgasPrice)是 EIP-1559 落地前的传统交易字段风格,反映了其历史语境。


二、动机:遵循"不为用不到的东西付费"原则

2.1 EIP-2028 的铺垫:calldata 降费

提案首先引用了同仓库的 EIPS/eip-2028.md(Transaction data gas cost reduction,状态为 Final)。EIP-2028 将 calldata 的非零字节 gas 成本从 68 gas/字节降至 16 gas/字节,是"鼓励使用历史数据而非状态数据"的正确方向:

  • On-Chain Scalability:calldata 带宽的提升意味着单块可容纳更多数据;
  • Layer 2 扩展:STARKs/SNARKs 证明、欺诈证明的 Merkle 路径传输,以及把数据通过 calldata 发布到主链以作数据可用性(data availability),都能受益;
  • 无状态客户端:同样的模型可用于定价状态访问成本。

2.2 问题:EVM 其实不需要"看到"所有链上数据

EIP-2028 降低的是 calldata 的读取成本,但一个更深层的问题被 EIP-2242 指出:并非所有发布到链上的数据都需要被 EVM 执行逻辑处理。例如,侧链区块的数据只是需要被"证明其可用",而不是被主链合约逐字节解读。

因此,遵循"don't pay for what you don't use"(不为用不到的东西付费)原则,需要一种全新的、独立于 EVM 的数据发布方式——这正是postdata字段的使命。

2.3 适用范围:欺诈证明侧链而非有效性证明侧链

提案对适用场景做了明确界定:

  • 基于欺诈证明的信任最小化侧链:只需要确保侧链区块提议者已证明"某些数据确实可用",数据的真伪可以在欺诈证明流程中事后验证。这类方案可以直接受益于本提案;
  • 基于有效性证明的侧链:要求对发布的数据立即完成认证,因此无法使用本提案的机制,需要留待未来的 EIP 专门处理(即"多线程数据可用性"方向)。

三、规范(Specification):postdata字段的完整设计

EIP-2242 提出一项自FORK_BLKNUM起生效的共识修改。以下内容完整继承自 EIPS/eip-2242.md 的规范章节。

3.1 序列化交易的新格式

在现有交易上追加一个可选字段postdata,序列化后的交易格式为:

"from": bytes20, "to": bytes20, "startGas": uint256, "gasPrice": uint256, "value": uint256, "data": bytes, "nonce": uint256, ["postdata": bytes],

要点:

  • postdata可选字段(方括号表示可选),仅在需要时追加到交易末尾;
  • 见证人(witness,即签名者)对上述结构的 RLP 编码 进行签名——即postdata也纳入被签名的数据范围;
  • postdata中的数据被发布到链上,供 Layer 2 系统后续按历史数据检索,主链 EVM 不参与解读。

3.2postdata的内部 RLP 结构

postdata本身是一个 RLP 编码的两元组(twople)

postdata = RLP(version: uint64, data: bytes)
  1. version:版本号,当前规范要求取值为0。引入版本号是为了给未来扩展留出空间——不同的version值可以由未来的 EIP 定义不同的数据解释方案;
  2. data:一个 RLP 编码的二进制数据列表。本 EIP不解释data的任何内部结构,仅将其视为二进制大块(binary blob)原样上链。

3.3 Gas 成本规则

postdata的 gas 计费规则非常简洁:

  • 发布数据的成本为1 gas/字节
  • 该成本从交易的startGas扣除
  • 若扣除后剩余 gas非正(non-positive),交易立即以out of gas 异常回滚(revert)。

对比可见:1 gas/字节远低于 EIP-2028 降价后的 calldata 成本(非零字节 16 gas、零字节 4 gas),体现了"仅发布、不计算、不读取"的定价逻辑——正因为 EVM 无需处理这些数据,其 gas 成本可以显著更低。


四、设计权衡(Rationale)

EIP-2242 的设计哲学在 Rationale 一节中概括为:以对现有 EVM 和交易格式"最小且无破坏性"的方式实现目标,同时通过版本号(version)机制为未来可能的扩展(如多线程数据可用性方案)保留兼容空间。

具体体现为三点设计取舍:

设计决策权衡考量
可选字段而非必填字段现有交易完全不受影响,实现向后兼容;只有需要数据发布能力的 Layer 2 系统才追加该字段
独立字段而非复用 calldataEVM 无需为无法读取的数据消耗 calldata 的 gas 与处理路径,符合"不为用不到的东西付费"
版本号先行当前version=0不解释数据,未来 EIP 可基于不同版本号引入新的数据解释/认证方案,避免规范反复改动

五、向后兼容性(Backwards Compatibility)

EIP-2242 明确给出了兼容性边界:

  • 向后兼容(backwards compatible):新的postdata字段只是可选追加到现有交易末尾,不改变既有交易的编码与语义,因此旧客户端视角下交易格式不变;
  • 不向前兼容(not forwards-compatible):该改动属于共识层修改,必须通过硬分叉(hard fork)引入,无法在软分叉框架内完成。

六、从仓库看 EIP-2242 的思路延续与演进脉络

EIP-2242 虽然最终停留在 Stagnant 状态,但"数据上链但 EVM 不可读"的思路在以太坊后续提案中被以更成熟的形态继承和发展。以下关联提案均可在本仓库EIPS/目录下找到原文:

6.1 EIP-2718:类型化交易信封(Typed Transaction Envelope)

EIPS/eip-2718.md(状态 Final)定义了TransactionType || TransactionPayload的交易信封结构,用首字节类型标识符区分不同交易类型。它解决了 EIP-2242 时代"新字段只能通过位打包塞进旧编码"的困境——后续所有新交易类型(包括 blob 交易)都基于此信封演进。

6.2 EIP-4844:Shard Blob Transactions——思路的最终实现

EIPS/eip-4844.md(状态 Final)是这一范式的直接继承者:引入"携带 blob 的交易(blob-carrying transactions)",其中包含大量 EVM 执行无法访问、但其承诺(commitment)可以被访问的数据。其动机陈述与 EIP-2242 一脉相承——Rollup 需要低成本的数据可用性空间,blob 交易提供了目标约 0.375 MB/块、上限约 0.75 MB/块的专用数据空间。

对比可见 EIP-2242 与 EIP-4844 的核心一致性:

维度EIP-2242postdataEIP-4844blob
EVM 可读性不可读,仅发布不可访问,仅承诺(KZG 承诺)可读
用途信任最小化侧链的数据可用性Rollup 的数据可用性
计费1 gas/字节(固定)独立 blob gas 市场(EIP-1559 风格费用机制)
状态StagnantFinal(已随 Deneb 升级上线)

需要说明的是,这是从仓库两份提案文本中可确认的事实性对应关系;EIP-2242 本身并未在正文中预告 EIP-4844,二者分别成文于 2019 与 2022 年,属于同一研究脉络下的先后演进。

6.3 EIP-7623:calldata 成本调整的后续

EIPS/eip-7623.md(状态 Final)在 2024 年进一步调整 calldata 定价,以压缩区块最大尺寸、引导 Rollup 从 calldata 迁移到 blob。它引用 EIP-2028 指出"calldata 成本自 EIP-2028 以来未变",并明确 EIP-4844 的 blob 已成为首选的 DA 方案——从侧面印证了"独立于 EVM 的数据发布通道"这一方向的最终落地形态正是 blob,而非交易内嵌字段。


七、状态评估与未完成项

7.1 Test Cases 与 Implementation 均为 TODO

EIP-2242 规范中的Test CasesImplementation两个章节均标注为TODO

  • Test Cases 缺失:提案未给出任何测试向量(如postdata的 RLP 编码示例、gas 扣除边界的测试用例),这使其规范难以被客户端实现直接验证;
  • Implementation 缺失:未提供任何客户端(如 Geth、Parity)的参考实现链接,也没有交易池、签名验证、RLP 解码等层面的实现草案。

这两项空白是提案长期停留在草案状态的重要原因——缺少可执行验证路径的共识提案难以进入评审流程。

7.2 Stagnant 状态的含义

根据本仓库 EIPS/eip-1.md(EIP Purpose and Guidelines)对状态机的定义:

Stagnant- Any EIP inDraftorRevieworLast Callif inactive for a period of 6 months or greater is moved toStagnant. An EIP may be resurrected from this state by Authors or EIP Editors through moving it back toDraftor its earlier status.

即:任何处于 Draft / Review / Last Call 状态、超过 6 个月无活动的 EIP 会被移入 Stagnant 状态;作者或编辑可将其移回 Draft 或更早状态以"复活"。EIP-2242 目前即处于该状态,FORK_BLKNUM从未被任何以太坊网络采用。读者在引用时应将其视为历史性研究提案,而非已生效的共识规范。


八、总结

EIP-2242 Transaction Postdata 是一个设计上"小而美"的共识层提案:以最小侵入性的方式(追加可选字段)实现了"数据发布与 EVM 计算解耦"的目标,用 1 gas/字节的低成本定价和版本号机制,为信任最小化侧链提供了数据可用性通道。尽管它因缺少测试用例与参考实现而停滞(Stagnant),但其核心洞察——区块链的价值不仅在于计算,更在于作为不可篡改的全球数据可用性层——深刻影响了以太坊后续的数据可用性演进路线:从 EIP-2028 的 calldata 降费,到 EIP-2718 的类型化交易信封,再到最终落地为 EIP-4844 的 blob 交易与 EIP-7623 的定价收敛。阅读 EIP-2242,是理解以太坊 DA 路线图历史逻辑的一条重要线索。

本提案版权依据 LICENSE.md(CC0)声明放弃相关权利。

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询