以太坊用户体验:账户抽象(AA)
I’m ready to translate the article for you, but I need the full text you’d like translated. Could you please paste the content of the article (excluding the source line you already provided) here? Once I have the text, I’ll translate it into Simplified Chinese while preserving all formatting, markdown, and technical terms.
Introduction
如果你已经在 Web3 社区活跃了一段时间,可能已经听说过 Account Abstraction (AA)。
如果你只是 Web2 用户,首次在以太坊上进行区块链交易可能会感到望而却步,因为涉及到 gas 费用、补贴、签名等概念。
以太坊的 EIP‑4773 大幅提升了与协议交互的用户体验。
账户抽象让以太坊更加友好、安全,并为机构用户和普通用户的大规模采用做好了准备。
我已经玩转 AA 有一段时间了,想在这里分享它是什么、我的一些见解以及迄今为止的学习成果。无论你是开发者、投资者,还是仅仅对加密感兴趣,了解 AA 都可能改变你对钱包和交易的认知。
让我们从基础开始吧…
Minimal implementation: see the sample contract in my GitHub repo –
以太坊的账户类型
| 账户类型 | 描述 |
|---|---|
| Externally Owned Accounts (EOAs) | 标准钱包,仅由私钥控制。它们不能包含任何 EVM 代码。 |
| Smart Contract Accounts | 持有可执行代码,并受该代码逻辑治理,而不是单一私钥。 |
EOAs 的问题
- 不可恢复: 如果你丢失密钥或签署了恶意交易,就没有恢复机制。一次错误可能导致资金永久丢失。
- 仅支持 ECDSA: 签名依赖 ECDSA,且不具备抗量子能力。
- 用户体验差: 主流用户期望无缝、宽容的体验(如 Web2 应用),而不必担心签名、燃气费或私钥。
- 没有费用赞助者: 用户必须自行支付燃气费。
什么是账户抽象?
AA 模糊了 EOAs 与合约之间的界限,使 每个账户都成为可编程的智能合约。您可以定义自定义逻辑、验证规则和流程,使账户:
- 更智能 – 自定义安全、多因素认证、社交恢复、消费限额等。
- 更安全 – 用抗量子方案替代 ECDSA。
- 更灵活 – 通过 paymaster 实现免 gas 体验。
简而言之,AA 通过让区块链的使用体验像登录银行账户一样直观,为数十亿用户铺平道路。
ERC‑4337:无需共识更改的账户抽象
ERC‑4337 引入了一个 并行系统,使用替代 mempool,使得智能合约钱包(可编程账户)能够取代或补充传统的 EOA。
核心概念
- UserOperation(UserOp) – 经过 ABI 编码的结构体,表示用户意图(例如发送 ETH、兑换代币)。
- 这不是“真实”的以太坊交易;它是发送到专用 alt‑mempool 的数据包。
- 由于它们无法访问区块级信息(时间戳等),因此避免了被操纵的风险。
UserOp 的主要字段
| 字段 | 用途 |
|---|---|
sender | 智能合约账户地址 |
nonce | 防止重放 |
initCode | (可选)如果账户不存在,则通过工厂部署账户的代码 |
callData | 要执行的操作(例如代币转账) |
callGasLimit / verificationGasLimit / preVerificationGas | Gas 估算 |
maxFeePerGas / maxPriorityFeePerGas | 费用参数(与普通交易相同) |
paymasterAndData | (可选)用于赞助的 Paymaster 信息 |
signature | 账户验证的自定义签名 |
- 用户创建并签名 UserOp,随后将其广播到 alt‑mempool。
- 一个 点对点网络(独立于主以太坊 mempool)传播 UserOps,保持系统去中心化(无需中心化的转发者)。
Bundlers
可以把 bundler 看作一种专门的节点,它:
- 监控 UserOp alt‑mempool。
- 收集多个 UserOps,模拟执行以计算 gas 费用。
- 将它们打包并通过
handleOps()调用 EntryPoint 合约。
费用可以由账户本身或 Paymaster 支付。Bundler 会从账户或 Paymaster 那里获得 gas(加小费)的报酬。
EntryPoint(全局合约,每条链仅有一个)
EntryPoint 接收打包后的 UserOps 并运行 两个阶段:
- 验证阶段 – 检查签名、nonce 以及通过调用账户的
validateUserOp()(以及 Paymaster 的逻辑,如果使用)来执行自定义规则。 - 执行阶段 – 在链上执行操作,处理质押、存款、取款以及后置逻辑。
必需的合约接口
| 合约 | 必需函数 |
|---|---|
| 用户账户 | validateUserOp() – 自定义验证(ECDSA、多签、会话密钥)execute() – 执行具体操作 |
| Paymaster | 用于赞助交易的逻辑(代表用户支付 gas 费用) |
| Aggregator(可选) | 批量签名以节省 gas 和数据 |
AA 工作流(简化版)
- User 创建并签署一个
UserOperation。 - Broadcast 将 UserOp 广播到 alt‑mempool。
- Bundler 收集、模拟、打包,并调用
EntryPoint.handleOps(bundle)。 - EntryPoint 验证(account + paymaster)→ 执行 → 退款/报销。
- On‑chain:来自 bundler 的单笔交易完成所有操作。
实际案例
无气体商户结账
- 用户想为订单支付 100 USDC。
- Paymaster 承担燃气费用(例如,用户支付的 1 USDC),将其转换为 ETH 并支付给网络。
- 商家收到完整的 100 USDC —— 用户无需为获取 ETH 而手忙脚乱。
其他用例
- 社交恢复钱包 – 通过可信联系人恢复访问。
- 多因素认证 – 结合签名、生物识别或硬件密钥。
- 订阅付款 – Paymaster 赞助经常性费用,实现 “设置后忘记” 的体验。
TL;DR
- Account Abstraction 将每个钱包转变为可编程合约,解锁自定义安全、免 gas 体验以及面向未来的加密技术。
- ERC‑4337 通过替代 mempool、bundler 和通用
EntryPoint合约,在现有以太坊共识之上实现 AA。 - 生态系统(用户、bundler、paymaster、aggregator)协同工作,使区块链交互如同 Web2 应用般流畅。
祝你玩得开心!
将 Web3 的繁琐转化为类似 Web2 的登录方式
使用 Google、Apple ID 或设备 生物识别 连接钱包——无需助记词,无需手动设置 gas。
对于初学者,这消除了“私钥是什么?”的困惑,让加密体验如同即插即用的在线购物。
有什么了不起的?
您现在可以使用以下方式 “连接” 或 签名交易:
- Google 账户
- Apple ID
- 设备生物识别(Face ID / Touch ID)
全部由 passkeys(WebAuthn 标准)提供动力。
您的智能合约钱包的使用方式就像登录任何现代应用。
Passkeys – 基础技术
| 特性 | 描述 |
|---|---|
| 加密凭证 | 在您的设备上安全创建和存储(Apple Secure Enclave 或 Google Password Manager)。 |
| 解锁方式 | 生物识别(Face ID、指纹)或 PIN。 |
| 同步 | 通过 iCloud 或 Google 安全同步至各设备。 |
| 安全性 | 防钓鱼且无需密码。 |
当您使用“Google/Apple 登录”时,您正在 注册一个与该账户绑定的 Passkey。
- 私钥永不离开您的设备——它存放在硬件安全存储中,无法导出。
- 公钥已在链上与您的智能钱包注册。
Source: …
工作原理 – 从登录到交易
- 在 DApp 中 选择登录方式(Google、Apple 或生物识别)。
- 你的设备调用 WebAuthn API → 生成一个 通行密钥(私钥/公钥对)。
- 公钥 作为 智能合约钱包 的所有者存储在链上(通过 ERC‑4337 工厂部署)。
创建交易
- 你发起一个操作(例如,发送代币、兑换)。
- 钱包构建一个 UserOperation(你的意图)。
- 设备不使用 ECDSA 签名,而是提示你的生物识别 ID。
- WebAuthn 使用通行密钥(P‑256 曲线)对 UserOperation 哈希进行签名。
- 将签名发送给 Bundler。
- EntryPoint 合约调用你智能钱包上的
validateUserOp(),验证签名并执行操作。
注意: P‑256(secp256r1)与以太坊原生的 secp256k1 不同。因此验证需要自定义 Solidity 代码,耗气更大。请参阅示例实现:
// P‑256 verifier (simplified)
// https://github.com/daimo-eth/p256-verifier/blob/master/src/P256Verifier.sol
常见问题
Q: 私钥会离开设备吗?
A: 不会。它保留在安全隔离区/硬件模块中,无法导出。
Q: Solidity 如何验证 P‑256 签名?
A: 账户抽象(ERC‑4337)允许在 validateUserOp 中进行自定义签名验证。自定义验证器(例如上面的 P‑256 验证器)会将签名与链上公钥进行比对。
Q: P‑256 验证的 gas 成本如何?
A: 在链上验证 P‑256 比 secp256k1 更昂贵,因为以太坊仅为后者提供了预编译合约。需要使用优化的验证器合约。
一目了然的优势
- 无需种子短语 – 永不需要。通过 iCloud/Google 同步进行恢复。
- 免 gas & 流畅 – 支付方可以赞助费用;您可以使用 USDC 支付,甚至无需支付。
- 安全 – 密钥存储在硬件中,需要生物识别,防钓鱼。
- 跨设备 – 手机丢失?可通过登录同一 Google/Apple 账户的其他设备恢复。
- 面向大众采用 – 使用体验就像登录 Gmail 一样。
采用状态
- Account Abstraction (ERC‑4337) 已在以太坊及其他网络上线。
- 许多项目已经在整合基于密码钥匙的钱包,使其成为将 Web3 推向大众规模化的基石。
准备好像登录任何现代应用一样体验加密货币了吗?