账户抽象演进
账户抽象演进
本页内容正在整理中,欢迎贡献。
概述
账户抽象(Account Abstraction,AA)是以太坊用户体验革命的核心技术,目标是让用户不再受到 EOA 私钥模式的限制,实现无 Gas 费体验、批量交易、社交恢复、生物识别登录等功能。本文梳理从最早的提案到最新落地方案的完整演进历史。
主要内容
账户抽象演进时间线
2016 EIP-86: 最早的 AA 提案2021 EIP-2938: 原生协议层 AA(未采纳)2021 EIP-3074: AUTHCALL 操作码(未采纳,被 7702 取代)2022 ERC-4337: 非侵入式 AA,不改协议层(✅ 已部署)2023 EIP-4337 EntryPoint v0.6/v0.7 主网部署2025 EIP-7702: Pectra 升级(✅ 已激活),EOA 原生 AA未来 原生 AA: 协议层完全支持(长期目标)ERC-4337:当前主流方案
ERC-4337 不修改以太坊协议,通过智能合约实现 AA:
核心组件:
UserOperation(用户操作) ↓ 用户签名并广播到 alt mempoolBundler(打包器) ↓ 打包多个 UserOp 为一笔普通交易EntryPoint 合约(0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789) ↓ 验证并执行所有 UserOpSmartAccount 合约(每个用户一个) ↓ 执行实际操作Paymaster(可选,代付 Gas)SmartAccount 示例(Simple Account):
contract SimpleAccount is BaseAccount { address public owner;
// 验证签名(用户可以自定义验证逻辑) function _validateSignature(PackedUserOperation calldata userOp, bytes32 userOpHash) internal override returns (uint256 validationData) { bytes32 hash = userOpHash.toEthSignedMessageHash(); if (owner != hash.recover(userOp.signature)) return SIG_VALIDATION_FAILED; return SIG_VALIDATION_SUCCESS; }}Paymaster(Gas 代付):
contract MyPaymaster is BasePaymaster { // 决定是否为某个 UserOp 代付 Gas function _validatePaymasterUserOp( PackedUserOperation calldata userOp, bytes32 userOpHash, uint256 maxCost ) internal override returns (bytes memory context, uint256 validationData) { // 可以根据 Token 余额、白名单、签名等条件决定是否代付 require(isSponsored(userOp.sender), "Not sponsored"); return ("", PAYMASTER_VALIDATION_SUCCESS); }}EIP-7702:Pectra 带来的原生 AA
EIP-7702 让现有 EOA 无需迁移即可获得 AA 能力:
// Type 4 交易:将 EOA 的代码设置为 SmartAccount 实现const tx = { type: 4, authorizationList: [ { chainId: 1, address: SIMPLE_ACCOUNT_IMPL, // SmartAccount 实现合约 nonce: currentNonce, // EOA 对此进行 ECDSA 签名 yParity: ..., r: ..., s: ..., } ], // 可以同时在同一笔交易中执行操作 to: MY_CONTRACT, data: encodeFunctionData({ ... }),};ERC-4337 vs EIP-7702 并不互斥:
- EIP-7702 可以将 EOA 的代码设置为一个 ERC-4337 兼容的 SmartAccount
- 这样 EOA 就能同时享受 ERC-4337 的 Paymaster、Bundler 基础设施
智能账户功能对比
| 功能 | 普通 EOA | ERC-4337 SmartAccount | EIP-7702 EOA |
|---|---|---|---|
| Gas 代付 | ❌ | ✅ Paymaster | ✅(结合 4337) |
| 批量交易 | ❌ | ✅ | ✅ |
| 社交恢复 | ❌ | ✅ | ✅ |
| 多签 | ❌(需合约) | ✅ 原生 | ✅ |
| 会话密钥 | ❌ | ✅ | ✅ |
| ERC-20 支付 Gas | ❌ | ✅ | ✅ |
| 保持原地址 | ✅ | ❌(新地址) | ✅ |
关键基础设施
| 工具/服务 | 功能 |
|---|---|
| Pimlico | Bundler + Paymaster 服务 |
| Alchemy AA SDK | 完整 AA 开发套件 |
| ZeroDev | 基于 Kernel 的 SmartAccount |
| Safe | 多签 + 模块化 SmartAccount |
| Biconomy | AA 基础设施 |
未来:原生账户抽象
长期目标是在协议层原生支持 AA(不依赖 EntryPoint 合约):
- 移除 EOA 与合约账户的区别
- 所有账户都有可编程的验证逻辑
- 更好的共识层集成