账户抽象与ERC-4337 - 第一部分

  • QuickNode
  • 发布于 2024-05-05 20:53
  • 阅读 18

本文是ERC-4337系列的第一部分,深入探讨了ERC-4337的技术细节,包括UserOperations、Bundlers、EntryPoint和Contract Accounts等关键概念,旨在解决以太坊钱包用户体验的问题。

阅读前须知

本指南是一个由两部分组成的系列的第一部分,重点在于理解和实现 ERC-4337 以太坊改进提案(EIP)。在这一部分中,我们将深入探讨 ERC-4337 的技术细节,深入了解其关键概念,如 UserOperations、Bundlers、EntryPoint 和 Contract Accounts。我们的目标是全面理解 ERC-4337 的工作原理及其试图解决的问题。

本系列的第二部分将是一个实践教程,你将学习创建和部署符合 ERC-4337 标准的智能合约。我们建议你先阅读第一部分,以便在进入第二部分的实际编码之前,充分掌握其基本原理。

所以,如果你准备好深入探索以太坊标准的迷人世界,让我们开始吧!

概述

最近(2023 年第二季度)围绕以太坊的热潮是关于账户抽象。为什么?因为托管钱包(例如,外部拥有账户(EOA))难以管理,用户体验可能很糟糕。目前存在一些智能合约钱包(例如 ArgentSafe),但它们不像我们希望的那样具有互操作性,并且仍然需要依赖 EOA 来提交交易。在本指南中,我们将讨论 ERC-4337,这是一个旨在解决钱包用户体验问题的以太坊改进提案(EIP)。

你需要什么

你将做什么

  • 了解 ERC-4337
  • 了解 ERC-4337 的现状、过去和未来

探索以太坊中的账户类型:EOA 与 SCA

在深入探讨 ERC-4337 之前,让我们快速回顾一下目前以太坊上可用的账户类型及其特征和功能:

特征 <br> 特性 外部拥有账户 (EOA) 智能合约账户 (SCA)
所有权 直接由私钥持有者拥有 由智能合约内部部署的代码拥有和控制
控制 由私钥控制;因此,只有密钥的所有者才能直接交互 由智能合约代码中定义的业务逻辑控制。任何用户都可以根据合约的定义与其交互
创建 当生成私钥/公钥对时创建,通常由以太坊钱包生成 当部署智能合约或执行智能合约并由智能合约创建时创建
可升级性 不可更新。一旦设置,私钥/公钥无法更改 根据合约代码,可能是可更新的(例如,升级合约逻辑)
交易来源 只有 EOA 可以发起交易。EOA 使用其私钥对交易进行签名 无法发起交易。它们执行操作以响应接收到的消息(来自其他合约的交易或调用)
余额 可以持有以太币余额 可以持有以太币余额,以及变量和函数的状态

这两种账户类型有一些相似之处,它们都仅限于使用以太坊的唯一签名算法(从技术上讲这并不坏,但需要注意),即椭圆曲线数字签名算法(ECDSA)。两种账户类型在设计灵活性方面也受到限制,特别是当这些操作涉及多种交易或账户之间的复杂交互时,尤其是如果这些操作涉及不同类型的账户。两种账户还必须以区块链的原生代币(例如,以太币)支付 gas 费用。

现在让我们来谈谈 ERC-4337,它有助于解决其中的一些限制。

什么是账户抽象 / ERC-4337?

ERC-4337,也称为使用替代内存池的账户抽象,是一个旨在解决上述挑战的 EIP 草案。然而,ERC-4337 并不是第一个试图解决这些挑战的 EIP。它最早在 2016 年通过 EIP-86(交易来源和签名的抽象)引起关注,然后在 2020 年再次通过 EIP-2938EIP-3074 引起关注。可以说,开发者们自以太坊早期以来一直在尝试解决这个问题,但大多数这些 EIP 都需要对以太坊协议进行核心更改,因此未能成功。

账户抽象,即 ERC-4337,是一种解决当前以太坊钱包用户体验的新方法。账户抽象充当“智能合约钱包”,用户可以在不拥有自己的私钥或无需维护以太币以支付交易费用的情况下与以太坊网络进行交互。它使用替代内存池(也称为 Alt Mempool)设计来接受和解释消息(我们稍后会详细讨论)以促进这些交易。

账户抽象打开了以下大门:

  • 多操作:与智能合约的某些交互涉及多个步骤,并需要多个交易。例如,当与 DeFi 协议交互时,用户可能需要批准代币转移,然后存入该代币,然后执行其他操作。每个步骤都需要由 EOA 单独发起,这是一个繁琐且可能成本高昂的过程。ERC-4337 通过引入一种称为“UserOperation”的新交易类型来解决这个问题。UserOperations 允许用户定义应作为单个操作的一部分执行的一系列步骤。然后,这些步骤由 EntryPoint 合约执行,该合约充当用户的代理。不要担心 UserOperationEntryPoint,我们很快就会详细讨论它们。
  • 多签名:ERC-4337 允许多签名功能,为不同的用例打开了大门,例如社交恢复(例如,通过你信任的同行恢复账户)、治理安全(例如,未经授权的交易)等。
  • 自定义签名方案:允许使用替代签名方案。以太坊目前使用 ECDSA 进行交易签名,尽管它是安全的并且广泛使用,但额外的签名方案为不同的用例打开了大门,可能会提高互操作性和用户体验。
  • Gas 成本灵活性:ERC-4337 支持“赞助交易”,即其他人可以支付 gas 费用,从而在交易费用处理方面提供更大的灵活性。
  • 可升级性:ERC-4337 标准使用代理合约,使其可以“升级”。这可以允许在不中断生态系统内互操作性的情况下添加新功能和修复错误。

现在我们对 ERC-4337 有了一个高层次的理解,让我们深入了解其细节。

分析 ERC-4337 的关键组件

现在让我们更深入地了解 ERC-4337 的关键组件:

  • UserOperations - 将 UserOperations 视为你提供给以太坊账户的“待办事项列表”。这个“待办事项列表”可以包括转账、与智能合约交互,甚至是多个操作的组合。在当前的以太坊模型中,你需要手动执行此列表中的每个项目,每次交易一次,但在 ERC-4337 中,你可以将这些操作捆绑在一起,签署它,然后让以太坊网络处理其余部分。UserOperations 的字段结构与当前使用的以太坊交易类似,但包括一些与 ERC-4337 相关的逻辑更新。
  • Bundlers - 在创建你的 UserOperation 之后,你需要有人将其放入以太坊网络中。这就是 Bundlers 的作用。Bundlers 可以被视为促进者。他们是验证者或 MEV(最大可提取价值)搜索者,他们会将你的 UserOperation 与其他人的捆绑在一起,并将它们一起提交到以太坊网络。
  • EntryPoint - EntryPoint 是一个智能合约,充当以太坊网络的守门人。一旦 Bundlers 提交了 UserOperations,EntryPoint 负责解包并执行所有操作。如果它遇到任何失败的操作,它可以回滚(或撤销)该操作的所有操作,确保交易的完整性和可靠性。
  • Contract Account - Contract Account 就像你在以太坊网络上的自动化助手。与需要手动发起每个操作的常规账户(EOA)不同,Contract Accounts 可以根据它们接收到的指令(例如来自 UserOperation 的指令)自动执行操作。它们可以与其他合约交互,持有和管理资产,甚至可以根据其编程逻辑做出决策。这使它们成为自动化和简化以太坊上复杂交易的强大工具。
  • Paymaster - 这是一个可选的实体(即智能合约),可以代表你的交易支付(赞助)交易费用。它同意向 Bundler(即向网络提交交易的实体)报销 gas 费用。Paymaster 支付费用的具体时间和方式可以在智能合约中定义。
  • Aggregators - 这是一个可选的智能合约,它与 Contract Account 交互,帮助它验证来自多个 UserOperations 的签名。

总之,ERC-4337 标准为以太坊架构引入了几个新组件,每个组件在交易过程中都扮演着重要角色。

额外资源

最后思考

在本指南中,我们深入探讨了账户抽象的世界,特别是关注了 ERC-4337,这是一个旨在增强钱包用户体验的以太坊改进提案(EIP)。我们了解了目前使用的以太坊账户类型、它们面临的挑战以及 ERC-4337 计划如何解决这些问题。请继续关注本账户抽象和 ERC-4337 系列的第二部分,我们将向你展示如何创建和部署符合 ERC-4337 标准的智能合约。

我们很乐意了解你在构建什么以及你计划如何将 ERC-4337 用于你的项目。请在 Discord 上给我们留言,或在 Twitter 上关注我们,以获取所有最新信息!

我们 ❤️ 反馈!

如果你有任何反馈或新主题的请求,请告诉我们。我们很乐意听取你的意见。

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

0 条评论

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