本文介绍了以太坊账户抽象(Account Abstraction, AA)的发展历程,重点讲解了ERC-4337标准如何在不改变以太坊核心协议的情况下,通过引入UserOperation、Bundler、EntryPoint合约等组件,实现了更灵活、更安全、用户体验更好的账户系统。
在不断发展的以太坊世界中,用户体验一直是大众普及的关键障碍。这一挑战可以追溯到协议中的一个根本性设计选择:两种账户类型之间的划分。要真正理解像 ERC-4337 这样的新进展为何如此具有变革性,我们首先需要理解这种核心划分以及它所产生的问题。
在本文中,我们将踏上以太坊账户的历史之旅。我们将拆解原始模型的局限性,探索早期修复这些问题的尝试,最后深入研究 ERC-4337,这个最终使无缝 Web3 交互成为现实的标准。让我们开始吧!
从一开始,以太坊就有两种截然不同的账户类型:外部账户 (EOA) 和 合约账户 (CA)。可以将它们想象成两种不同的银行账户,具有截然不同的规则,从而造成一种脱节的体验。
这种分离造成了几个重要的痛点:
这导致了“双账户问题”:持续不断地、笨拙地依赖于基本的 EOA 来与更高级的 CA 进行交互。
“账户抽象 (AA)” 的概念并不新鲜。事实上,它是以太坊最初愿景的一部分。其目标是“抽象掉”协议的严格规则,允许所有账户都成为智能合约,并具有可自定义的安全性验证逻辑。
多年来,一些以太坊改进提案 (EIP) 试图在核心协议级别实现 AA。
AA_TX_TYPE
)。这将允许智能合约成为“顶级”账户,能够支付自己的 gas 费。主要挑战是什么?它需要共识级别的更改(“硬分叉”),这对于像以太坊这样大的网络来说是一项大规模、高风险的 Undertaking。这一挑战最终阻碍了它的采用。核心问题仍然存在:改变以太坊的基本规则是困难的。需要一种新的方法——一种可以在不改变协议本身的情况下提供 AA 的好处的方法。
该标准于 2023 年 3 月部署在以太坊主网上,是社区期待已久的突破。
那么,它的秘诀是什么?ERC-4337 在没有共识层变更的情况下实现了账户抽象。
它没有试图修改以太坊的核心规则,而是在现有协议之上构建了一个单独的、更高级别的系统。它为类似交易的新对象创建了一个并行的 mempool(Alt Mempool),有效地绕过了旧的限制。
让我们分解 ERC-4337 生态系统中的关键参与者和组件。
ERC-4337 交易流程 来源: Nethermind.eth
使用 ERC-4337,用户不再创建标准交易。相反,他们创建一个 UserOperation
。可以将它想象成一条详细的指令。它将用户的意图(他们想要做什么,例如“将 100 USDC 兑换成 DAI”)、gas 参数和签名打包到一个对象中。这里的美妙之处在于签名逻辑现在是灵活的。它可以是一个简单的密钥、一个多重签名,甚至是经过 passkey 验证的 Face ID。
该 UserOperation
不会发送到正常的以太坊交易池。它被发送到一个单独的、链下的 P2P 网络,在那里,称为 Bundler 的专门参与者正在监听。这就是“Alt Mempool”——UserOperation
的专用等候室。
免费加入 Medium,以获取该作者的更新。
订阅
订阅
Bundler 是一个链下参与者,负责监控 Alt Mempool。它的工作是:
UserOperations
(通常优先考虑那些费用较高的)。UserOperations
捆绑 到一个单一的标准以太坊交易中。entryPoint
合约将捆绑包提交到主网络,并从其自己的 EOA 预先支付 ETH gas 费。Bundler 是新的 AA 系统和旧的以太坊协议之间的桥梁。
这是整个链上流程的总协调器。EntryPoint
是一个单一的、全局的且经过高度审计的智能合约,Bundler 将其捆绑的 userOperations
发送到该合约。它充当一个受信任的中介,管理着复杂的验证和执行流程,保证:
Bundler
将获得 gas 费用的报销。validateUserOp
函数成功时,才会执行 UserOperation 的 callData。这是用户的可编程钱包。要符合 ERC-4337,钱包必须具有 validateUserOp
函数。这个函数就是奇迹发生的地方。EntryPoint
调用它以检查 UserOperation
是否合法,方法是验证签名、检查 nonce 并确保用户(或包含在 userOperation
中的 paymaster
)可以承担交易成本。
如果用户没有 ETH 怎么办?这就是 Paymaster
的用武之地。Paymaster
是一个可选组件,可以实现 gas 费抽象。它是一个可以同意赞助用户 gas 费的智能合约。
它是这样工作的:
UserOperation
通过在 paymasterAndData
字段中包含 Paymaster 的地址和关联数据来表明其使用 Paymaster
的意图。EntryPoint
对指定的 Paymaster 合约上的 validatePaymasterUserOp
函数进行调用。Paymaster
执行其自定义逻辑以决定是否赞助交易。此逻辑可以是开发人员希望的任何内容,例如检查用户是否持有特定的 NFT、验证链下签名或确认 dApp 是否已为其用户预先资助了一个信用余额。Paymaster
同意付款,则它必须在 EntryPoint
合约中质押足够的 ETH 存款。然后,EntryPoint
将使用 Paymaster 的存款来偿还 Bundler,而不是用户的 SCA。Paymaster 实现了两种强大的模型:
签名聚合器是另一个可选组件,旨在提高 Gas 效率,特别是对于使用可以聚合的签名方案(例如 BLS)的钱包。
在链上验证加密签名是一项计算量大的操作。当一个捆绑包包含许多 UserOp 时,每个 UserOp 都需要通过 validateUserOp
调用来检查自己的签名,累积 Gas 成本可能会非常高。聚合器将来自不同用户操作的多个签名组合成一个,并在链上验证单个聚合签名,从而节省大量 Gas。
在 ERC-4337 标准下,交易的生命周期是一个多阶段过程,它将用户的链下意图(UserOperation
)转换为链上状态更改。它涉及用户、链下 Bundler 和链上 EntryPoint
合约之间的协调操作序列。
从僵化的双账户模型到灵活的 ERC-4337 框架的转变,标志着以太坊的一个关键时刻。我们已经从一个具有内置限制的系统转变为一个用户账户与其之上构建的应用程序一样可编程和创新的系统。这种转变开启了一个无缝入门、增强安全性和用户体验的未来,最终可以与 web2 世界竞争。
在下一篇文章中,我们将更加技术性地深入研究这些组件中的每一个的代码和结构。
我希望你觉得这篇文章有帮助!不要忘记留下掌声并与他人分享。如果你有任何问题或想更多地讨论这个主题,请随时在下面发表评论。
你始终可以在 X 上与我联系:@0xAdek
- 原文链接: medium.com/block-magnate...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!