EIP-7793: 有条件交易
仅在特定索引和槽位执行的交易
Authors | Marc Harvey-Hill (@Marchhill), Ahmad Bitar (@smartprogrammer93) |
---|---|
Created | 2024-10-17 |
Discussion Link | https://ethereum-magicians.org/t/eip-7793-asserttxindex-opcode/21513 |
Requires | EIP-7843 |
摘要
本 EIP 提议为“有条件交易”添加一种新的交易格式,该交易仅在区块内的指定槽位和索引处有效。引入一个新的操作码 TXINDEX
,用于在链上公开有条件交易的索引。
动机
该提案旨在改进对加密内存池的支持。加密内存池中的事务在加密时被排序,然后在解密后包含在链上的区块顶部。如果构建者在包含解密后的事务时不尊重顺序,则他们可能会抢先运行解密后的事务。新的交易类型可以用来避免这种情况;如果解密后的交易未包含在正确的索引处,则它将无效。
规范
参数
Constant | Value |
---|---|
COND_TX_TYPE |
Bytes1(0x05) |
TXINDEX_OPCODE_BYTE |
Bytes1(0x4c) |
TXINDEX_OPCODE_GAS |
2 |
有条件交易类型
我们引入了一种新的 EIP-2718 交易类型,“有条件交易”,其中 TransactionType
为 COND_TX_TYPE
且 TransactionPayload
是以下 TransactionPayloadBody
的 RLP 序列化:
[chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, to, value, data, access_list, max_fee_per_blob_gas, blob_versioned_hashes, conditional_slot, conditional_tx_index, y_parity, r, s]
字段 chain_id
、nonce
、max_priority_fee_per_gas
、max_fee_per_gas
、gas_limit
、to
、value
、data
、access_list
、max_fee_per_blob_gas
遵循与 EIP-4844 相同的语义。字段 blob_versioned_hashes
相同,只是有条件交易的列表可能为空。
字段 conditional_slot
和 conditional_tx_index
均为 uint64
,并分别指定此交易应被视为有效的槽位和交易索引。为了验证 conditional_slot
是否正确,EIP-7843 是一个依赖项,因为它将槽位号添加到标头中。对于这两个字段,-1
用作哨兵值,在这种情况下,将不会进行槽位或交易索引检查。
签名
签名值 y_parity
、r
和 s
通过对以下摘要构造 secp256k1 签名来计算:
keccak256(COND_TX_TYPE || rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, to, value, data, access_list, max_fee_per_blob_gas, blob_versioned_hashes, conditional_slot, conditional_tx_index]))
.
TXINDEX 操作码
一个新的操作码 TXINDEX
在 TXINDEX_OPCODE_BYTE
处引入。
输出
一个元素 TransactionIndex
被添加到堆栈中。TransactionIndex
是一个大端编码的 uint64
。如果当前交易是有条件交易,则它等于 conditional_tx_index
,否则等于 -1
。
Gas 成本
TXINDEX
的 gas 成本是 TXINDEX_OPCODE_GAS
的固定费用。
理由
交易类型
另一种设计可以简单地返回当前交易索引,而无需添加新的交易类型。添加新的交易类型更受欢迎,因为它意味着预期的交易索引必须预先静态声明,而不是允许基于返回的交易索引的动态行为。这可以防止施加复杂的约束,从而难以构建区块。
Gas 价格
该操作码的定价与 W_base
集合中的类似操作码相匹配。
向后兼容性
未发现向后兼容性问题。
测试用例
不适用
安全注意事项
没有。
版权
版权和相关权利通过 CC0 放弃。
Citation
Please cite this document as:
Marc Harvey-Hill (@Marchhill), Ahmad Bitar (@smartprogrammer93), "EIP-7793: 有条件交易 [DRAFT]," Ethereum Improvement Proposals, no. 7793, October 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7793.