账户抽象 — 我们是如何走到这里的

本文介绍了以太坊账户抽象(Account Abstraction, AA)的发展历程,重点讲解了ERC-4337标准如何在不改变以太坊核心协议的情况下,通过引入UserOperation、Bundler、EntryPoint合约等组件,实现了更灵活、更安全、用户体验更好的账户系统。

账户抽象 - 我们是如何走到今天的

介绍

在不断发展的以太坊世界中,用户体验一直是大众普及的关键障碍。这一挑战可以追溯到协议中的一个根本性设计选择:两种账户类型之间的划分。要真正理解像 ERC-4337 这样的新进展为何如此具有变革性,我们首先需要理解这种核心划分以及它所产生的问题。

在本文中,我们将踏上以太坊账户的历史之旅。我们将拆解原始模型的局限性,探索早期修复这些问题的尝试,最后深入研究 ERC-4337,这个最终使无缝 Web3 交互成为现实的标准。让我们开始吧!

问题

从一开始,以太坊就有两种截然不同的账户类型:外部账户 (EOA)合约账户 (CA)。可以将它们想象成两种不同的银行账户,具有截然不同的规则,从而造成一种脱节的体验。

  1. 外部账户 (EOA) 这是大多数用户熟悉的账户类型——你的 MetaMask 或 Trust Wallet 账户就是一个 EOA。它由一个私钥控制,其主要工作很简单:持有资产(如 ETH)并发起交易。EOA 是唯一可以在区块链上“启动”操作的账户类型,例如发送代币或调用智能合约。
  2. 合约账户 (CA) 这些是我们通常所说的“智能合约”。它们不是由私钥控制的,而是由它们自己的内部代码控制的。CA 可以持有资产并执行复杂的逻辑,这使其成为每个 dApp 的支柱。但是,CA 本质上是被动的;它无法自行启动。它需要一个 EOA 来调用它并支付 gas 费,才能使其执行任何操作。

这种分离造成了几个重要的痛点:

  • 单点故障: EOA 的安全性完全取决于一件事:它的私钥。如果你丢失了该密钥,你将失去一切。协议上没有“忘记密码”按钮。
  • 缺乏灵活性: EOA 是不可编程的。你无法设置消费限额、批量处理交易、要求多次签名才能进行大额转账,或者直接在你的账户上设置社交恢复。这些是现代数字金融中的标准功能。
  • Gas 问题: 要使用强大的智能合约钱包(这是一个 CA),你仍然需要一个拥有 ETH 的 EOA,仅仅是为了支付 gas 费。这增加了一层复杂性和摩擦,特别是对于必须先在交易所购买 ETH 才能进行任何操作的新用户而言。

这导致了“双账户问题”:持续不断地、笨拙地依赖于基本的 EOA 来与更高级的 CA 进行交互。

账户抽象的起源

“账户抽象 (AA)” 的概念并不新鲜。事实上,它是以太坊最初愿景的一部分。其目标是“抽象掉”协议的严格规则,允许所有账户都成为智能合约,并具有可自定义的安全性验证逻辑。

早期愿景和协议级别提案

多年来,一些以太坊改进提案 (EIP) 试图在核心协议级别实现 AA。

  1. EIP-86 (2016): 解决该问题的首次重大尝试。它提议抽象交易来源和签名验证的概念,这将允许智能合约直接发起和授权交易。但是,它被认为对于年轻的网络来说过于复杂和危险。
  2. EIP-2938 (2020): 一个更完善的提案,引入了一种新的交易类型 ( AA_TX_TYPE)。这将允许智能合约成为“顶级”账户,能够支付自己的 gas 费。主要挑战是什么?它需要共识级别的更改(“硬分叉”),这对于像以太坊这样大的网络来说是一项大规模、高风险的 Undertaking。这一挑战最终阻碍了它的采用。

核心问题仍然存在:改变以太坊的基本规则是困难的。需要一种新的方法——一种可以在不改变协议本身的情况下提供 AA 的好处的方法。

突破:ERC-4337

该标准于 2023 年 3 月部署在以太坊主网上,是社区期待已久的突破。

那么,它的秘诀是什么?ERC-4337 在没有共识层变更的情况下实现了账户抽象。

它没有试图修改以太坊的核心规则,而是在现有协议之上构建了一个单独的、更高级别的系统。它为类似交易的新对象创建了一个并行的 mempool(Alt Mempool),有效地绕过了旧的限制。

让我们分解 ERC-4337 生态系统中的关键参与者和组件。

ERC-4337 交易流程 来源:Nethermind.eth

ERC-4337 交易流程 来源: Nethermind.eth

1. UserOperation

使用 ERC-4337,用户不再创建标准交易。相反,他们创建一个 UserOperation。可以将它想象成一条详细的指令。它将用户的意图(他们想要做什么,例如“将 100 USDC 兑换成 DAI”)、gas 参数和签名打包到一个对象中。这里的美妙之处在于签名逻辑现在是灵活的。它可以是一个简单的密钥、一个多重签名,甚至是经过 passkey 验证的 Face ID。

2. Bundler 和 Alt Mempool

UserOperation 不会发送到正常的以太坊交易池。它被发送到一个单独的、链下的 P2P 网络,在那里,称为 Bundler 的专门参与者正在监听。这就是“Alt Mempool”——UserOperation 的专用等候室。

获取 Adekunle Michael Ajayi 的故事到你的收件箱

免费加入 Medium,以获取该作者的更新。

订阅

订阅

Bundler 是一个链下参与者,负责监控 Alt Mempool。它的工作是:

  1. 拾取 UserOperations(通常优先考虑那些费用较高的)。
  2. 验证 它们的有效性,并验证它最终将因处理它们而获得报酬。
  3. 将一个或多个 UserOperations 捆绑 到一个单一的标准以太坊交易中。
  4. 通过 entryPoint 合约将捆绑包提交到主网络,并从其自己的 EOA 预先支付 ETH gas 费。

Bundler 是新的 AA 系统和旧的以太坊协议之间的桥梁。

3. EntryPoint 合约

这是整个链上流程的总协调器。EntryPoint 是一个单一的、全局的且经过高度审计的智能合约,Bundler 将其捆绑的 userOperations 发送到该合约。它充当一个受信任的中介,管理着复杂的验证和执行流程,保证:

  • Bundler 将获得 gas 费用的报销。
  • 只有在智能账户的 validateUserOp 函数成功时,才会执行 UserOperation 的 callData。

4. 智能合约账户(钱包)

这是用户的可编程钱包。要符合 ERC-4337,钱包必须具有 validateUserOp 函数。这个函数就是奇迹发生的地方。EntryPoint 调用它以检查 UserOperation 是否合法,方法是验证签名、检查 nonce 并确保用户(或包含在 userOperation 中的 paymaster)可以承担交易成本。

5. Paymaster(可选)

如果用户没有 ETH 怎么办?这就是 Paymaster 的用武之地。Paymaster 是一个可选组件,可以实现 gas 费抽象。它是一个可以同意赞助用户 gas 费的智能合约。

它是这样工作的:

  1. UserOperation 通过在 paymasterAndData 字段中包含 Paymaster 的地址和关联数据来表明其使用 Paymaster 的意图。
  2. 在验证循环期间,EntryPoint 对指定的 Paymaster 合约上的 validatePaymasterUserOp 函数进行调用。
  3. Paymaster 执行其自定义逻辑以决定是否赞助交易。此逻辑可以是开发人员希望的任何内容,例如检查用户是否持有特定的 NFT、验证链下签名或确认 dApp 是否已为其用户预先资助了一个信用余额。
  4. 如果 Paymaster 同意付款,则它必须在 EntryPoint 合约中质押足够的 ETH 存款。然后,EntryPoint 将使用 Paymaster 的存款来偿还 Bundler,而不是用户的 SCA。

Paymaster 实现了两种强大的模型:

  • 完全赞助: dApp 可以支付其用户的 gas 费,作为其入门或营销的一部分,从而创建一个真正的“无 gas 费”体验。
  • ERC-20 Gas 费支付: 用户可以使用像 USDC 这样的代币支付 gas 费。Paymaster 接受用户提供的 USDC 并以 ETH 向 Bundler 付款,就像为 gas 费进行即时货币兑换一样。

6. 聚合器

签名聚合器是另一个可选组件,旨在提高 Gas 效率,特别是对于使用可以聚合的签名方案(例如 BLS)的钱包。

在链上验证加密签名是一项计算量大的操作。当一个捆绑包包含许多 UserOp 时,每个 UserOp 都需要通过 validateUserOp 调用来检查自己的签名,累积 Gas 成本可能会非常高。聚合器将来自不同用户操作的多个签名组合成一个,并在链上验证单个聚合签名,从而节省大量 Gas。

在 ERC-4337 标准下,交易的生命周期是一个多阶段过程,它将用户的链下意图(UserOperation)转换为链上状态更改。它涉及用户、链下 Bundler 和链上 EntryPoint 合约之间的协调操作序列。

结论

从僵化的双账户模型到灵活的 ERC-4337 框架的转变,标志着以太坊的一个关键时刻。我们已经从一个具有内置限制的系统转变为一个用户账户与其之上构建的应用程序一样可编程和创新的系统。这种转变开启了一个无缝入门、增强安全性和用户体验的未来,最终可以与 web2 世界竞争。

在下一篇文章中,我们将更加技术性地深入研究这些组件中的每一个的代码和结构。

我希望你觉得这篇文章有帮助!不要忘记留下掌声并与他人分享。如果你有任何问题或想更多地讨论这个主题,请随时在下面发表评论。

你始终可以在 X 上与我联系:@0xAdek

进一步研究

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

0 条评论

请先 登录 后评论
blockmagnates
blockmagnates
The New Crypto Publication on The Block