如何为智能合约钱包设置基础设施

  • tenderly
  • 发布于 2023-05-17 18:58
  • 阅读 37

本文介绍了如何为智能合约钱包设置基础设施,重点介绍了账户抽象引入的新组件,包括用户操作、捆绑器、支付方和入口点合约。文章还介绍了如何使用Tenderly的Web3 Actions和Node Extensions来简化和自动化整个过程,以及如何将所有组件集成到dapp中,而无需更改现有的逻辑。

如何设置智能合约钱包的基础设施

账户抽象为智能合约钱包引入了新的组件,包括用户操作、捆绑器、支付者和入口点合约。 了解如何为智能合约钱包构建自定义基础设施,并将这些组件整合在一起。

如何设置智能合约钱包的基础设施

当你不再使用私钥-公钥配对,转而使用智能合约时,你会得到什么? 你将获得一种简单、灵活、易于访问且更安全的方式,通过智能合约钱包管理你的交易。

由于标准智能合约钱包的不兼容性和迁移限制,它们已被证明是复杂的。 在 EIP-4337 之前,它们没有标准化,这阻碍了它们的采用和灵活性。

另一方面,账户抽象钱包在用户体验方面带来了显著的改进。 基于账户抽象系统的智能合约钱包无需对以太坊进行任何更改,而是引入了一些新组件,指定了使用它们时的操作和流程。

因此,如果你准备构建以用户为先的钱包,请首先了解每个组件。 然后,了解如何在不更改任何 dapp 的情况下,为智能合约钱包设置基础设施。

账户抽象智能合约钱包有什么不同?

账户抽象为智能账户钱包的逻辑引入了一些新组件。 让我们深入了解每一个组件。 🔎

用户操作

用户操作是账户抽象钱包和常规智能合约钱包之间的关键区别之一。 在账户抽象钱包的情况下,用户以 UserOperation 对象的形式将交易发送到替代 mempool

UserOperations 包含与常规交易相同的参数,包括发送者、calldatanonce、签名等。 但是,与常规交易相比,UserOperations 还包括一些额外的字段,这些字段对其验证、 गैस 付款和 paymaster 补贴是必需的。 它们也不能调用某些禁止的 opcodes

支付者(Paymasters)

Paymasters 允许开发者或第三方补贴用户的费用,并允许以 ERC-20 代币支付 गैस 费用。 Paymaster 可以包含用于支付 गैस 费用的押金和用于防止恶意 DoS 攻击的股份。

但是,并非所有 paymasters 都可以发送请求。 Bundlers 首先需要接受一个 paymaster,因此只有列入白名单的 paymasters 才能提供支持。

捆绑器(Bundlers)

Bundlers 可以是区块构建者或可以将交易发送给区块构建者的用户。 他们监听替代 mempool,并将提交的 UserOperations 收集到一个捆绑包中。 BundlershandleOps 调用的形式收集 UserOperation 对象。

此外,bundlers 运行模拟以确保 UserOperation 不会因为调用禁止的 opcodes 而回滚。 它还使用模拟来估计 UserOperation 成功所需的 गैस 量。

模拟

当通过账户钱包管理交易时,模拟可确保 UserOperation 的有效性及其支付执行费用的能力。 此外,运行模拟还有助于确保一切在链上发送后以完全相同的方式执行。

UserOperation 的模拟发生在将 UserOperation 添加到 mempool 并将其提交到捆绑包之前:

  • 在将其发送到替代 mempool之前: 客户端接收 UserOperation 并执行多项检查以确保一切配置正确。 然后,它运行一个 op 模拟以确保一切按计划执行。 如果是,客户端会将 UserOperation 提交到替代 mempool
  • 在将其提交到捆绑包之前: 客户端还在捆绑多个 UserOperations 时运行模拟。 Bundlers 通过调用 RPC 方法执行 simulateValidation 函数。 这允许 bundlers 验证操作签名并确保所有费用都已支付。

一旦客户端运行模拟,该方法将以 ValidationResult 的形式返回一个成功的响应。 如果发生错误,客户端可以拒绝提交的 UserOperation

此外,validateUserOpvalidatePaymasterUserOp 可能会返回一个特定的时间范围,在此期间 UserOperation 在链上有效。 如果 UserOperation 的时间框架很短,无法持续到下一个区块被挖掘出来,则客户端可能会丢弃 UserOperation

💡

如果你是从头开始构建 bundlerpaymaster 组件,你可以集成我们的交易模拟器以获得模拟功能。

将我们的模拟基础设施整合到你的钱包中,你可以确定用户操作的有效性以及 paymaster 是否会在链上启动整个流程之前为其付费。

入口点合约

入口点合约执行 UserOperation 捆绑包。 BundlerhandleOps 调用发送到入口点合约。 然后,handleOps 会经历验证和执行循环:

  • 验证循环:首先,如果账户尚不存在,handleOps 函数会创建一个账户。 然后,它通过调用 validateUserOp 开始验证过程,并请求验证操作签名。

在此循环中,handleOps 函数检查 paymaster 在入口点合约中是否有足够的存款来支付费用。 它还会确认 paymaster 是否愿意这样做。

  • 执行循环handleOps 使用提交的 UserOperationcalldata 调用该账户。 该账户解析数据,然后逐个执行剩余的调用。

流程概述

在你开始设置上述所有基础设施之前,这里有一个整个过程的简短概述:

  1. 你发送你的交易,也就是 UserOperation,并要求 paymaster 赞助它。
  2. Paymaster 模拟 UserOperation 以确定它是否符合要求的标准。
  3. 如果 UserOperation 符合标准并成功模拟,则 paymaster 可以接受赞助它。
  4. 收到来自 paymaster 的响应后,你需要批准你的 UserOperation 可以花费指定数量的代币来执行。
  5. UserOperation 进入替代 mempool,任何 bundler 都可以决定将其包含在其捆绑包中。
  6. 拾取你的 UserOperationbundler 对其进行模拟,以确保其有效并且不调用任何禁止的 opcodes
  7. Bundler 收集多个 UserOperations 并将它们发送到入口点智能合约。
  8. 入口点合约的 handeOps 函数在确保它们有效、已签名且尚未执行后,在链上执行每个 UserOperation

在替代 **mempool** 中捆绑用户操作在替代 mempool 中捆绑用户操作

如何使用 Web3 Actions 设置智能合约钱包的基础设施

好的,现在你已经熟悉了所有组件,让我们看看如何为你的智能合约钱包设置基础设施。 借助 Tenderly 的全栈基础设施,你可以自动化和简化整个过程,将所有组件集成到你的 dapp 中,并且不会在此过程中对你现有的逻辑进行任何更改。

那么,准备好开始行动了吗? 我们从 Tenderly Web3 Actions 开始。 😎

Web3 Actions 是你 dapps 的无服务器后端。 你可以使用 JavaScript 或 Typescript 编写自定义代码,并且一旦满足指定的条件,Web3 Action 将自动执行它。

例如,如果你想发送一个带有特定参数的 mint 操作,你可以设置一个 Web3 Action 来自动调用模拟。 它将模拟此交易,验证你的 UserOperation 的值,然后如果一切执行成功,则将其发送到 Paymaster

通过设置 Web3 Action,你可以自动化通过智能合约钱包管理交易的整个过程。 你可以通过以下两种方式做到这一点:

  1. 从头开始构建一切:如果你想自己设置一切,你可以使用 Web3 Actions 在 Tenderly 的基础设施上构建你的整个系统。
  2. 通过 Web3 Actions 调用外部 API:在这种情况下,你可以为你的 Web3 Action 使用一个 webhook 触发器,它将与你的外部 API 端点交互。

如何使用节点扩展设置钱包基础设施

但是,如果你想以更灵活的方式将 Web3 Action 基础设施集成到你的 dapp 中,该怎么办? 为了实现这一点,你可以使用 Tenderly 节点扩展,这是一种构建和部署自定义 JSON-RPC 方法的创新方法。

节点扩展连接到 Web3 Actions,并允许你通过 Tenderly Web3 Gateway(我们的节点即服务解决方案)调用你为你的钱包基础设施创建的操作。 这样,你实际上可以自定义你与区块链交互的方式,而无需修改你的 dapp 逻辑。

此外,节点扩展还带有一个公共库,你可以在其中找到随时可用的示例。 因此,除了创建你自己的扩展之外,你还可以使用来自 Pimlico 的三个预定义的扩展来进行 Paymaster 集成:

  1. 第一个节点扩展可以帮助你获取你在其上工作的网络上支持的入口点合约的列表
  2. 第二个节点扩展检查 paymaster 是否愿意为用户操作付费
  3. 第三个节点扩展要求 paymaster 为用户操作付费

💡

你是否有一个促进账户抽象过程的节点扩展的想法?

请随时将其提交到我们的社区来源库,我们的团队将对其进行审核。 如果获得批准,我们将将其添加到我们的库中,以便社区中的其他开发人员可以将其集成到他们的智能合约钱包中。

为你的智能账户钱包构建自定义基础设施

所有智能合约钱包都采用账户抽象功能只是时间问题。 当你现在就可以开始构建用户友好的钱包并保持领先一步时,为什么还要等待这种情况发生呢? 但是,不要围绕预设的 API 进行工作并尝试思考替代解决方案,而是设置一个适合你的产品的基础设施,而不是相反。

借助 Tenderly 的全栈基础设施,你可以通过 Web3 Actions、节点扩展和模拟构建一个自定义、灵活且可扩展的基础设施。 更好的是,你可以使用 Tenderly 无缝地连接不同的组件,而无需更改你现有的逻辑。

开始使用 Tenderly 构建,并在整个过程中获得更大的控制权、灵活性和支持。

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

0 条评论

请先 登录 后评论
tenderly
tenderly
江湖只有他的大名,没有他的介绍。