以太坊账户抽象提案 EIP-4337 近期发布了新版本。账户抽象(Account Abstraction)通过省略以太坊账户体系中不必要的细节,来降低复杂性并有效消除对外部账户(EOA)和智能合约钱包的需求。
以太坊的主要缺点之一是用户体验复杂,而 EIP-4337 尝试通过账户抽象来解决这一问题。
一、账户抽象(AA)的定义
账户抽象可以为用户提供简化使用账户的能力,从而降低对底层流程的了解要求。
就像我们使用 Gmail 账户而不需要知道它是如何工作的一样。有了账户抽象,我们就有机会远离可怕的助记词世界。
我们可以启用不同的签名选项,Gas 费用可以由 Dapp 赞助或通过法定货币支付等等。
二、如何为以太坊实现账户抽象
目前以太坊上有两种类型的账户:
- 外部拥有账户(EOA)
- 智能合约账户
外部拥有账户(EOA)由用户的密钥对(公钥和私钥)控制,这是大多数用户用来与以太坊交互的方式,Metamask 等钱包服务充当与这些账户交互的接口。
智能合约账户则不受任何私钥控制,而是由其代码控制。例如,所有的 DeFi 协议都由智能合约账户控制。
以太坊的问题在于,外部拥有账户(EOA)获得了智能合约账户所没有的特权。最显著的例子是发起交易的能力。目前,只有外部拥有账户(EOA)可以做到这一点。
这是一个问题,因为 EOA 功能被硬编码到以太坊协议中,并且没有定制空间。
例如:Gmail 为你提供了在账户上启用双重验证(2FA)的选项。而今天在以太坊上无法实现类似的可定制性。
以太坊上的 EOA 有以下限制:
- 用户不能使用自定义签名方案。ECDSA 是以太坊用来生成公私密钥对的典型签名方案。
- Gas 费必须以原生加密货币(ETH)支付。
- 因为你的私钥就是你的账户,丢失你的密钥就意味着丢失你的账户。
所有这些问题都可以通过智能合约钱包轻松解决,因为它们允许使用自定义逻辑。
但如前所述,以太坊上的交易只能通过 ECDSA 保护的外部拥有账户(EOA)发起,而不能通过智能合约钱包发起。
EIP-2938 是解决此问题的一种途径。它引入了以太坊协议更改,允许交易从智能合约而不是 EOA 发起。但问题在于,它需要对协议进行重大更改。
因此,Nethermind 以及 OpenGSN 的研究人员在 Vitalik Buterin 的帮助下提出了 EIP-4337。
该提案提出了一种解决方法,无需更改任何共识层协议,就能为以太坊带来“账户抽象”。它没有修改共识层本身的逻辑,而是将当前交易存储池的功能复制到更高层次的系统中。
流程中的关键概念
流程有很多活动部分,其中包括:
- 用户操作(User operations)
- 捆绑者(Bundler)
- 付款人(Paymaster,可选)
该提案引入了“用户操作”的概念,这些操作允许我们将自定义功能编码到智能合约钱包中。用户操作将用户的意图、签名以及其他数据打包以进行验证。
以下是通过智能合约钱包发起一笔交易的一般流程:
- 用户发起一个“用户操作”并包含它想要执行的交易;
- 将该操作发送到一个高层次的“用户操作存储池”;
- 该操作被部分验证,并广播到 P2P 存储池节点网络;
- 操作由“Bundler”选择执行,任何人都可以成为 Bundler,例如 MEV 搜索者、验证者等;
- Bundler 将所有操作捆绑到一笔大的交易中;
- Bundler 将区块与其他交易一起包含在以太坊区块中。
Bundler 的功能
现在让我们尝试分解 Bundler 的功能,以了解如何执行和验证交易。
- Bundler 将交易路由到一个全局“入口点”智能合约;
- 全局合约通过每个用户操作并调用智能合约钱包中的“验证函数”;
- 钱包运行此函数来验证用户操作的签名并补偿 Bundler 捆绑这些交易;
- 钱包运行一个执行操作以执行操作中指定的交易;
- 然后在执行操作后将剩余的 Gas 退还给钱包。
付款人(Paymaster)的作用
该 EIP 还提出了“付款人”(Paymaster)的概念。用户现在可以不再依赖他们的钱包,而是可以让付款人赞助他们的交易费用。
赞助交易功能有很多用例,最常被引用的用例是:
- 允许应用开发人员代表其用户支付费用;
- 允许用户以 ERC-20 代币支付费用,合约充当收取 ERC-20 的中介
三、账户抽象对我们意味着什么
所有这一切都非常令人兴奋,但我们为什么要关心呢?有以下多种原因。
- 提案允许我们使用自定义签名方案。用户现在可以使用 iOS 和 Android 设备的内置方案,将每部手机变成硬件钱包。
- 它允许在以太坊上为多个签名者提供原生支持。两个或更多用户现在可以批准单笔交易,从而提高安全性。
- 可以启用社交恢复。如果用户不知何故丢失了他的密钥,那么他可通过简单让他的朋友和家人为他恢复账户。
常见问题
Q1: 账户抽象(AA)的主要优势是什么?
A: 账户抽象可以显著提升用户体验,例如无需助记词、支持多种签名方案、允许第三方支付 Gas 费用,以及提供社交恢复功能,让账户管理更便捷安全。
Q2: EIP-4337 与 EIP-2938 有何不同?
A: EIP-2938 需要更改以太坊底层协议,而 EIP-4337 无需修改共识层,通过更高层次的系统实现账户抽象,降低了实施难度和风险。
Q3: 普通用户如何受益于账户抽象?
A: 用户将拥有更简单的钱包设置流程(无需记录助记词),更灵活的支付方式(如用法币或ERC-20代币支付Gas费),以及更强大的账户恢复选项,大大降低了使用门槛和风险。
Q4: Bundler 在系统中扮演什么角色?
A: Bundler 负责将多个用户操作捆绑成一笔大交易并提交到以太坊网络,类似于矿工或验证者的角色,但专注于处理账户抽象相关的操作,任何人都可以成为Bundler。
Q5: Paymaster 如何赞助交易费用?
A: Paymaster 是一个智能合约,可以代表用户支付Gas费用,费用来源可以是DApp开发者、用户支付的代币或其他机制,从而为用户提供更灵活的支付选择。
Q6: 账户抽象是否会影响以太坊的安全性?
A: 账户抽象通过支持多签名和社交恢复等功能,可以增强账户安全性。同时,由于它是在不改变共识层的情况下实现的,因此不会引入新的底层安全风险。