EIP-2242: 交易后数据
Authors | John Adler (@adlerjohn) |
---|---|
Created | 2019-08-16 |
Discussion Link | https://ethereum-magicians.org/t/eip-2242-transaction-postdata/3557 |
简单总结
添加一个额外的、可选的交易字段用于“后数据(postdata)”,这些数据被发布在链上,但无法从EVM中读取。
摘要
以太坊 2.0 最近在使用方式上出现了一种范式转变,随着 执行环境 (EEs) 和 无状态客户端 的兴起。这种转变涉及区块链作为安全的数据可用性和仲裁层,即,它们提供了一个全球公认的可用数据源,并处理欺诈/有效性和数据可用性证明。同样的范式可以应用于以太坊 1.x,用 信任最小化的侧链 替换 EEs。
动机
虽然 EIP-2028 降低了 calldata 的 gas 成本,并且是朝着鼓励使用历史数据而不是状态数据的正确方向迈出的一步,但 EVM 实际上并不需要看到所有发布在链上的数据。遵循“不为你不使用的东西付费”的原则,需要一种不同的方式来将数据发布在链上,但实际上不能在 EVM 中使用。
对于 具有欺诈证明的信任最小化侧链,我们只需要确保侧链区块提议者已经证明 某些 数据是可用的。如果数据最终无效,则可以作为欺诈证明的一部分执行身份验证。请注意,具有有效性证明的信任最小化侧链 无法利用此 EIP 中提出的更改,因为它们需要立即对发布的数据进行身份验证。这将是 未来 EIP 的主题。
规范
我们提出了一个共识修改,从 FORK_BLKNUM
开始:
在交易中添加了一个额外的可选字段 postdata
。序列化的交易现在具有以下格式:
"from": bytes20,
"to": bytes20,
"startGas": uint256,
"gasPrice": uint256,
"value": uint256,
"data": bytes,
"nonce": uint256,
["postdata": bytes],
见证人对上述 RLP 编码 进行签名。 postdata
是发布在链上的数据,供第2层系统以后进行历史检索。
postdata
是一个 RLP 编码的二元组 (version: uint64, data: bytes)
。
version
是0
。data
是二进制数据的 RLP 编码列表。此 EIP 不以任何方式解释数据,只是将其视为二进制 blob,但未来的 EIP 可能会为不同的version
值引入不同的解释方案。
发布数据的 gas 成本是 每字节 1 gas
。此成本从 startGas
中扣除;如果剩余 gas 非正数,则交易立即因 gas 不足异常而恢复。
理由
所提出的更改尽可能地最小化,并且不对现有的 EVM 和交易格式产生干扰,同时还通过版本代码支持可能的 未来扩展。
向后兼容性
新的交易格式是向后兼容的,因为新的 postdata
字段是可选地附加到现有交易的。
所提出的更改不向前兼容,并且需要硬分叉。
测试用例
待办
实现
待办
版权
版权及相关权利通过 CC0 放弃。
Citation
Please cite this document as:
John Adler (@adlerjohn), "EIP-2242: 交易后数据 [DRAFT]," Ethereum Improvement Proposals, no. 2242, August 2019. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-2242.