实验:Sequencer赞助的交易

  • ithaca
  • 发布于 2024-10-18 14:47
  • 阅读 11

该提案介绍了odyssey_sendTransaction RPC方法,允许消费者将交易执行推迟给Sequencer(在通过有效性检查后)。此方法主要用于:1. 委托智能合约给EOA的EIP-7702交易;2. 在委托的EOA上执行调用的EIP-1559交易。提案详细阐述了方法参数、返回值、用例以及Sequencer的有效性检查机制。

EXP-0000:排序器赞助的交易

2024.10.17·提案

目录

摘要

引入一个新的 odyssey_sendTransaction RPC 方法,允许消费者将交易执行推迟给排序器(受制于有效性检查)。

动机

EIP-7702 的引入使得外部拥有账户(EOA)可以签署一个授权元组,以指定智能合约作为其实现。 然后,可以将此授权元组传递给 EIP-7702 交易并执行以分配委托。 由于任何人都可以在具有有效授权元组的情况下执行 EIP-7702 交易,这意味着 EOA 或第三方(例如排序器)都可以赞助 gas 费。

在智能合约被委托给 EOA 之后,第三方也可以赞助后续的 EIP-1559 交易, 前提是该交易已通过某些有效性检查(例如,没有 valueto 指向委托的 EOA 地址等)。

本提案概述了 odyssey_sendTransaction RPC 方法的规范,该方法允许排序器赞助:

  1. 将智能合约委托给 EOA 的 EIP-7702 交易,或
  2. 在委托的 EOA 上执行调用的 EIP-1559 交易。

规范

odyssey_sendTransaction

将交易提交给排序器。只有通过排序器定义的有效性检查的交易才会被接受。

参数

{
  method: 'odyssey_sendTransaction',
  params: [\
    {\
      // 可选的 EIP-7702 授权列表,用于指定\
      // EOA 的智能合约。\
      authorizationList?: {\
        address: `0x${string}`,\
        chainId: number,\
        nonce: number,\
        r: `0x${string}`,\
        s: `0x${string}`,\
        yParity: number,\
      }[],\
      // 可选的要在 EOA 上执行的 calldata。\
      data?: `0x${string}`,\
      // 委托的 EOA 的地址。\
      to: `0x${string}`,\
    }\
  ]
}

返回

`0x${string}` // 交易哈希。

示例

如前所述,odyssey_sendTransaction 的两个主要用例是:

  1. 将智能合约指定给 EOA,以及
  2. 执行对委托 EOA 的调用。

让我们逐步了解每个的简单示例。

将智能合约指定给 EOA

下图演示了 EOA 如何构建和签署包含委托合约地址的授权列表,并利用排序器赞助的交易(odyssey_sendTransaction)来执行指定。

以下是一个 odyssey_sendTransaction 请求的示例,该请求执行 EIP-7702 交易以将合约指定给 EOA(通过 authorizationList),以及在其上执行一个函数(通过 data):

curl 'https://odyssey.ithaca.xyz/' --data '{
  "jsonrpc":"2.0",
  "id":0,
  "method":"odyssey_sendTransaction",
  "params":[{\
    "authorizationList":[{\
      "address":"0x35202a6E6317F3CC3a177EeEE562D3BcDA4a6FcC",\
      "chainId":"0xde9fb",\
      "nonce":"0x0",\
      "r":"0xc9e930f2051c331b994ca1ec5d398379923dc1aae3b1aaaccf4242e872b8ce79",\
      "s":"0x182672f89807a836962b0f29ce566f30b1588bd8b6bd4f9a8e24b3675ed11c3e",\
      "yParity":"0x0"\
    }],\
    "data":"0xdeadbeef00000000000000000000000000000000000000000000000000000000cafebabe",\
    "to":"0xFC7b76a8cA893f00976a14559D08b77aa4e4Bf2e"\
  }]
}'

执行对委托 EOA 的调用

下图演示了委托的 EOA 如何使用排序器赞助的交易来代表自己执行调用。

以下是一个 odyssey_sendTransaction 请求的示例,该请求执行 EIP-1559 交易以在委托的 EOA 上执行一个函数(通过 data):

curl 'https://odyssey.ithaca.xyz/' --data '{
  "jsonrpc":"2.0",
  "id":0,
  "method":"odyssey_sendTransaction",
  "params":[{\
    "data":"0xdeadbeef00000000000000000000000000000000000000000000000000000000cafebabe",\
    "to":"0xFC7b76a8cA893f00976a14559D08b77aa4e4Bf2e"\
  }]
}'

原理

排序器定义的有效性检查

排序器负责强制执行由其赞助的交易的有效性。

排序器应仅处理以下交易:

  1. 是 EIP-7702 类型,用于将智能合约指定给 EOA,或者 EIP-1559 类型,用于具有指定的 EOA
  2. 不超过排序器定义的单笔交易 gas 限制
  3. 不包含 value 字段(或设置为 0
  4. 不包含 nonce 字段(由排序器管理)
  5. 不包含 from 字段(由排序器管理)

交易属性

重要的是要注意,某些交易属性由排序器管理,如果由使用者传递,则会被忽略。

这些包括:

  1. gasPrice/ maxFeePerGas/ maxPriorityFeePerGas
  2. gas
  3. chainId

向后兼容性

odyssey_sendTransaction 的 API 设计在表面上与 eth_sendTransaction 的 API 有意相同。 在执行 JSON-RPC 请求时,使用者可以将 odyssey_sendTransaction 用作 eth_sendTransaction 的直接替代品。

示例

EXP-0001:使用 EIP-7702 进行帐户委托 展示了将支持 WebAuthn 的委托合约指定给 EOA 的能力, 从而有效地允许 EOA 使用 WebAuthn 密钥签署在其代表执行的调用。

参考实现

可以在 Odyssey 的 GitHub 存储库 中找到 odyssey_sendTransaction RPC 方法的参考实现。

安全考虑

任意交易滥用

如果没有前面提到的排序器定义的有效性检查,恶意的消费者可以轻易地滥用排序器向网络提交任意交易,并耗尽排序器的资金。 重要的是,排序器必须有一套完善的有效性检查,以防止此类滥用。

拒绝服务攻击

排序器可能容易受到拒绝服务(DoS)攻击。DoS 攻击可以通过排序器定义的有效性检查部分缓解, 但是,排序器仍然可能被恶意消费者的大量交易压垮。 排序器应实施速率限制和其他反 DoS 措施,以减轻被压垮的风险。

讨论

第三方排序器

应该允许任何人托管他们自己的指向特定节点的排序器服务, 具有与原生排序器相同的实现和安全级别。

将来,预计将有一个简化的流程来克隆 和部署第三方排序器。

中心化

恶意的排序器可以选择审查特定的消费者,从而有效地拒绝他们服务。 重要的是要注意,此提案不会改变消费者促进交易的方式, 因为他们可以提交给替代的第三方排序器(如上所述), 或者自我赞助交易,而仅仅使用 eth_sendRawTransaction

Gas赞助

当前提案的一个有效问题是如何执行gas赞助。目前,排序器 负责承担其赞助的交易的gas成本。实际上,这在主网环境中是行不通的。 将来,第三方可以通过部署他们 自己的排序器服务来赞助交易(如上所述)。 这将使App开发者、钱包,甚至RPC提供商,能够托管他们自己的排序器服务。

odyssey_sendTransaction 是否需要是一个单独的方法?

关于 odyssey_sendTransaction 是否需要是一个单独的方法,以及是否 可以将其纳入 eth_sendTransaction,也存在一些悬而未决的问题。

我们选择使用单独的方法是为了明确意图,但这 不是实现的基本要求。

  • 原文链接: ithaca.xyz/updates/exp-0...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ithaca
ithaca
Accelerating the crypto frontier. https://ithaca.xyz/