跳至内容
0%

什么是账户抽象(account abstraction)?ERC-4337 详解

Alchemy team headshot

作者 Alchemy

发布于 2026年10月19日3 分钟阅读

账户抽象(account abstraction)让智能合约充当你的账户,而不再依赖单一私钥。账户可以为签名、支付 gas 和执行调用设定自己的规则。ERC-4337 是在以太坊和其他 EVM 链上无需改动协议即可实现这一点的标准。

如今大多数以太坊用户使用外部拥有账户(EOA)。EOA 由一个私钥控制,只能用一种方式签名,并且必须先有 ETH 才能做任何事。丢了私钥,也就丢了账户。账户抽象消除了这些限制。有两个标准可以实现它:ERC-4337,用于拥有独立地址的智能账户;EIP-7702,用于就地升级现有的 EOA。两者可以配合使用。

什么是账户抽象?

账户抽象意味着账户的规则存在于代码中,而不是协议中。标准 EOA 遵循固定规则:一个 ECDSA 签名、一个 nonce,以及由发送者用 ETH 支付的 gas。有了账户抽象,智能账户(ERC-4337 规范称之为 smart contract account)可以定义自己的验证逻辑。

ERC-4337 规范将这一思路描述为一种模型:“允许每个账户提供自己的验证逻辑,并以智能合约代码的形式执行,而协议只提供最低限度的约束。”

这一项改变带来了 EOA 无法提供的功能:

  • 赞助 gas:由应用支付费用,新用户无需持有 ETH。
  • 用代币支付 gas:用户可以用 USDC 等 ERC-20 支付。
  • 批量处理:多个调用作为一个原子操作一起执行。
  • 会话密钥:为应用或智能体授予范围有限且会过期的权限。
  • 通行密钥(passkey)等多种签名方式:用户无需助记词。
  • 自定义恢复:由账户自身的规则决定如何找回访问权限。

什么是 ERC-4337?

ERC-4337 是以太坊上无需更改共识层的账户抽象标准。Vitalik Buterin 与合著者于 2021 年提出该标准,EntryPoint 合约于 2023 年 3 月 1 日在以太坊主网上线。

此前的提案都会改动以太坊的核心协议,ERC-4337 则避免了这一点。它新增了名为 UserOperation 的伪交易、专门存放这些操作的独立内存池,以及名为 EntryPoint 的单例合约。由于一切都建立在共识层之上,它可以在任何部署了 EntryPoint 的 EVM 链上运行。

规范的目标之一是让用户完全不必使用 EOA。智能账户可以用通行密钥或任何其他方案签名,只有 bundler 需要一个 EOA 来提交交易。

ERC-4337 如何运作?

一笔 ERC-4337 交易会经历五个步骤:

  1. 用户签署一个 UserOperation。什么算有效签名由智能账户决定。
  2. 应用通过 eth_sendUserOperation 将其发送给 bundler。
  3. bundler 对其进行模拟,与其他 UserOperation 打包,并发送一笔调用 EntryPoint 上 handleOps 的交易。
  4. EntryPoint 调用智能账户的 validateUserOp。如果涉及 paymaster,还会调用 validatePaymasterUserOp。它会检查是否有人能够承担 gas。
  5. EntryPoint 调用智能账户执行所请求的操作,然后向 bundler 偿还费用。
ERC-4337 账户抽象流程图:UserOperation、bundler、EntryPoint 和 paymaster

什么是 UserOperation?

UserOperation 是描述用户想要做什么的伪交易对象。它包含发送者(智能账户)、nonce、调用数据、gas 上限和费用字段、签名,以及可选的 paymaster 字段。与普通交易不同,签名由账户自己的代码验证。它可以包含多条指令。完整的字段列表请阅读我们的 UserOperation 指南。

bundler 是做什么的?

bundler 是一种链下服务,它监视 UserOperation 内存池,模拟每个操作,并将有效的操作打包成一笔链上交易。它先垫付 gas,再由 EntryPoint 偿还。在 ERC-4337 中,bundler 是唯一必须持有 EOA 的角色。了解它们如何运作和竞争,请参阅什么是 bundler。

EntryPoint 合约是做什么的?

EntryPoint 是所有账户和 bundler 都信任的单例智能合约。它分两个阶段运行每个 UserOperation。在验证阶段,它检查签名并确认资金存在。在执行阶段,它运行调用并补偿 bundler。一个共享且经过审计的合约,让所有人遵循相同的规则。

paymaster 是做什么的?

paymaster 是为 UserOperation 支付 gas 的可选合约。它让应用可以赞助费用,或让用户用 ERC-20 代币代替 ETH 支付。EntryPoint 会在执行前请求 paymaster 批准该操作。关于类型和安全上的取舍,请阅读什么是 paymaster。

aggregator 是做什么的?

aggregator 是可选合约,可一次性验证针对多个 UserOperation 的一个组合签名。由于一个打包只带一个签名而不是多个,它可以节省 calldata,这对 rollup 帮助最大。aggregator 是一种优化手段,大多数账户并不需要。

应该使用哪个 EntryPoint 版本?

EntryPoint 有多个已发布的版本。每个版本都是位于各自地址的独立合约,智能账户是针对某一个版本构建的。

  • v0.6:0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
  • v0.7:0x0000000071727De22E5E9d8BAf0edAc6f37da032
  • v0.8:0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108,新增原生 EIP-7702 支持

eth-infinitism 发布说明中还列出了 v0.9,它新增了 paymasterSignature,使 paymaster 可以并行签名。我们托管的 Bundler API 支持 v0.6、v0.7 和 v0.8。请在某条链上调用 eth_supportedEntryPoints 查看确切列表。新账户请基于 v0.7 或 v0.8 构建,因为 Bundler FAQ 表示 v0.6 的支持计划弃用。

什么是 EIP-7702?

EIP-7702 是一项协议变更,让 EOA 可以为自己设置代码。它随2025 年 5 月 7 日的 Pectra 升级在以太坊主网上线。

它新增了一种交易类型 0x04,携带一组已签名的授权。每个授权会将一个委托标识(0xef0100 后跟一个合约地址)写入账户的代码。此后,对该 EOA 的调用会运行该地址上的代码。

委托是持久的。它会一直保留,直到账户签署新的授权,而委托给零地址即可清除。EOA 保留自己的地址、余额和密钥。请只委托给经过审计的合约代码,因为这些代码会使用账户自己的余额和存储来运行。更多详情,请阅读我们的 EIP-7702 概述。

ERC-4337 与 EIP-7702 有什么区别?

ERC-4337 通过内存池、bundler 和 paymaster,让智能账户运行在各自的地址上。EIP-7702 则就地升级现有地址。两者并非竞争关系。EIP-7702 改变账户可以成为什么,ERC-4337 则提供发送和赞助其操作的基础设施。

功能
普通 EOA
ERC-4337 智能账户
EIP-7702 委托的 EOA
地址
由一个密钥派生
新的合约地址
保留现有地址
账户代码
无
smart contract account
委托给合约代码
协议变更
不适用
无
有,2025 年 5 月的 Pectra
发送方式
普通交易
通过 bundler 发送的 UserOperation
类型 0x04 交易,或带有 eip7702Auth 的 UserOperation
签名规则
一个 ECDSA 密钥
账户定义的任意逻辑
由被委托的合约设定,EOA 密钥仍然有效
赞助 gas
否
是,通过 paymaster 或赞助策略
是,通过 relayer、bundler 或 paymaster
是否需要 EOA 密钥
是
否
是

这两个标准直接相连。ERC-4337 规范支持 EIP-7702 授权。UserOperation 可以包含一个 eip7702Auth 字段,bundler 会把该授权加入它所发送交易的 authorizationList。EntryPoint v0.8 还会把委托纳入 UserOperation 哈希。因此,被委托的 EOA 可以像其他智能账户一样使用 bundler 和 paymaster。

如果你的用户已经有想要保留的 EOA 地址、余额和历史记录,请选择 EIP-7702。如果账户不应依赖单一的 ECDSA 密钥(例如仅使用通行密钥的账户),或者该链尚未启用 EIP-7702,请选择独立的 ERC-4337 智能账户。

什么是模块化智能账户?

模块化智能账户将功能拆分为模块,而不是一个固定的合约。验证模块决定谁可以签名,例如通行密钥或会话密钥。执行模块添加新的操作。钩子(hook)添加检查,例如支出限额。你可以在不改变账户地址的情况下添加或移除模块。

有两个 ERC 标准定义了模块如何接入:ERC-6900“Modular Smart Contract Accounts”,以及 ERC-7579“Minimal Modular Smart Accounts”。两者都建立在 ERC-4337 之上。我们的 Modular Account v2 遵循 ERC-6900。

你可以用账户抽象构建什么?

账户抽象消除了让链上应用对新用户不友好的那些步骤。

  • 免 gas 引导。新用户无需 ETH 即可开始,你的应用赞助其最初的几笔交易。
  • 稳定币 gas。用户用自己已持有的代币支付费用。
  • 一键流程。授权和兑换作为一个原子批次运行,因此任一失败都会回滚两者。
  • 游戏与智能体。会话密钥让游戏或 AI 智能体在你设定的限额内行动,而无法访问整个账户。
  • 通行密钥账户。用户用设备的通行密钥登录,无需接触助记词。
  • 恢复。账户可以添加守护者或其他规则来找回访问权限。

Alchemy 如何支持账户抽象?

我们为 ERC-4337 和 EIP-7702 都运营着基础设施,因此你可以为新的智能账户和现有的 EOA 发布同一套流程。

Bundler

我们的 Bundler 是托管的 ERC-4337 Bundler API,构建于我们开源的 Rust bundler Rundler 之上。它支持 EntryPoint v0.6、v0.7 和 v0.8。请在各链功能支持中查看你所需的链。

Gas Manager

Gas Manager 让你的应用按照你在策略中设定的规则为用户支付 gas。我们推荐通过 Bundler Sponsored Operations 使用 Gas Sponsorship:在请求头中传入策略 ID,无需添加 paymaster 字段。当你需要用 ERC-20 支付 gas,或流程中需要 paymaster 时,请使用 Onchain Paymaster。有关套餐和限额,请参阅 Gas Manager FAQ。

Modular Account v2

Modular Account v2 是我们推荐的智能账户。它遵循 ERC-6900,经过 ChainLight 和 Quantstamp 的审计,并通过模块支持会话密钥、通行密钥、允许列表、支出限额和过期时间。

Wallet APIs

Wallet APIs 是位于其上的交易层。它们从智能账户发送调用,并提供赞助、批量处理、重试和会话密钥。你可以自带签名器,例如 Privy、Turnkey 或任何兼容 viem 的签名器。

EIP-7702 支持

Wallet APIs 也支持 EIP-7702。新的 EIP-7702 账户默认委托给 Modular Account v2,因此 EOA 无需新地址,就能获得同样的批量处理、赞助和会话密钥。

准备好开始构建了吗?从 Wallet APIs 文档入手,用 Gas Manager 赞助你的第一笔交易,并通过我们的 Bundler 发送 UserOperation。

早期的提案如何催生了 ERC-4337?

早在 ERC-4337 之前,开发者就尝试过实现账户抽象。

  • 2020 年的 EIP-2938 提出在共识层实现账户抽象。该提案后来已被撤回。
  • 同样在 2020 年的 EIP-3074 新增了 AUTH 和 AUTHCALL 操作码,使 EOA 可以把控制权委托给合约。EIP-7702 取代了它。
  • 2021 年的 ERC-4337 走了另一条路。它把所有改动都放在共识层之上,因此无需硬分叉即可上线。

随后,EIP-7702 为 EOA 本身带来了代码,ERC-4337 规范现在也支持它。如需并排对比,请参阅 EIP-3074 vs EIP-7702 vs ERC-4337。

如何开始使用账户抽象?

  1. 选择账户类型。对新用户使用 Modular Account v2 这样的 ERC-4337 智能账户,对现有 EOA 使用 EIP-7702 委托。
  2. 选择签名器。通行密钥、嵌入式签名器或现有 EOA 都可以。
  3. 通过 bundler 发送你的第一个 UserOperation,如果希望用户免付 gas,请附上赞助策略。
  4. 在功能支持表中确认目标链支持你所需的功能。

Wallet APIs 文档通过代码演示了每个步骤。如果你要编写自己的智能账户,请针对目标 EntryPoint 版本实现 validateUserOp。

常见问题

什么是账户抽象?

账户抽象让智能合约充当你的账户,而不是单一私钥。账户的代码决定谁可以签名、谁来支付 gas,以及它可以执行什么。这使赞助 gas、批量处理、通行密钥和会话密钥成为可能。在以太坊上,ERC-4337 无需改动协议即可实现它,EIP-7702 则将其带给现有的 EOA。

什么是 ERC-4337?

ERC-4337 是以太坊上无需更改共识层的账户抽象标准。用户签署 UserOperation 并发送到独立的内存池。bundler 将它们打包成一笔发往 EntryPoint 合约的交易,由 EntryPoint 验证并执行每一个。paymaster 可以代表用户支付 gas。

ERC-4337 需要硬分叉吗?

不需要。ERC-4337 以智能合约和链下 bundler 网络的形式运行在现有链之上,因此可以在以太坊以及任何部署了 EntryPoint 的 EVM 链上运行。EIP-7702 则不同,它是随 2025 年 5 月 7 日 Pectra 升级上线的协议变更。

ERC-4337 与 EIP-7702 有什么区别?

ERC-4337 通过 UserOperation 和 bundler,让智能账户运行在各自的地址上。EIP-7702 则让现有 EOA 就地委托给合约代码,因此地址保持不变。两者是互补的,ERC-4337 规范接受 UserOperation 中的 EIP-7702 授权。

EIP-7702 会取代 ERC-4337 吗?

不会。EIP-7702 升级的是 EOA,但它不提供内存池、bundler 或 paymaster。这些仍然来自 ERC-4337 或 relayer。被委托的 EOA 可以通过 bundler 发送 UserOperation 并使用 paymaster,两个标准在实践中就是这样结合的。

什么是 UserOperation?

UserOperation 是 ERC-4337 用来代替普通交易的伪交易。它包含发送者、nonce、调用数据、gas 字段、签名以及可选的 paymaster 数据。bundler 从独立的内存池收集 UserOperation,并将其提交到链上的 EntryPoint 合约。

我需要 bundler 和 paymaster 吗?

发送 UserOperation 需要 bundler,因为只有 bundler 能把它们提交到链上。paymaster 是可选的。当你想赞助 gas 或让用户用 ERC-20 代币支付时再使用。没有 paymaster 时,智能账户会用它在 EntryPoint 的自有存款支付 gas。

我应该使用哪个 EntryPoint 版本?

新账户请基于 EntryPoint v0.7 或 v0.8 构建。v0.8 新增了原生 EIP-7702 支持。我们托管的 Bundler API 支持 v0.6、v0.7 和 v0.8,Bundler FAQ 表示 v0.6 计划弃用。请在你的链上调用 eth_supportedEntryPoints 确认列表。

Alchemy 支持 ERC-4337 和 EIP-7702 吗?

支持。我们运营托管的 ERC-4337 Bundler API(构建于我们开源的 Rundler 之上)、用于赞助 gas 的 Gas Manager,以及以 Modular Account v2 作为默认智能账户的 Wallet APIs。Wallet APIs 也支持 EIP-7702,因此 EOA 可以委托给 Modular Account v2 的代码。

账户抽象的使用有多广泛?

采用情况变化很快,固定的数字很快就会过时。请改为查看实时数据源。BundleBear 是一个公开的看板,跟踪跨链的智能账户活动,包括 ERC-4337 UserOperation 和 EIP-7702 授权,并持续更新。

Background gradient

构建区块链应用

Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。