Alert Source Discuss
⚠️ Draft Standards Track: Core

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 交易类型,“有条件交易”,其中 TransactionTypeCOND_TX_TYPETransactionPayload 是以下 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_idnoncemax_priority_fee_per_gasmax_fee_per_gasgas_limittovaluedataaccess_listmax_fee_per_blob_gas 遵循与 EIP-4844 相同的语义。字段 blob_versioned_hashes 相同,只是有条件交易的列表可能为空。

字段 conditional_slotconditional_tx_index 均为 uint64,并分别指定此交易应被视为有效的槽位和交易索引。为了验证 conditional_slot 是否正确,EIP-7843 是一个依赖项,因为它将槽位号添加到标头中。对于这两个字段,-1 用作哨兵值,在这种情况下,将不会进行槽位或交易索引检查。

签名

签名值 y_parityrs 通过对以下摘要构造 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 操作码

一个新的操作码 TXINDEXTXINDEX_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.