以太坊智能账户:UserOperation、Bundler 与 Gas 赞助
了解 ERC-4337 UserOperation 如何经过 bundler 和 EntryPoint、paymaster 如何赞助 gas,以及账户恢复与资产托管控制的区别。
本指南内容智能账户把可编程授权规则放进合约
简短摘要
ERC-4337 让智能合约账户按自身规则,通过独立于 EOA 交易的流程发送 UserOperation。Bundler 调用 EntryPoint,paymaster 可赞助 gas;它不保证账户恢复、免费交易或非托管。
智能账户把可编程授权规则放进合约
普通外部拥有账户(EOA)用私钥签名证明控制权,nonce 决定交易顺序。模型简单,但通常同一把密钥可以授权所有操作。每笔 EOA 交易只有一个顶层动作,但被调用的合约仍可在内部继续调用其他合约。以太坊待处理交易指南讲的是 EOA 交易池,与 ERC-4337 流程不同。智能账户是可以持有资产并执行调用的合约。
它的验证代码可以要求单个签名、多签门槛或限时权限。ERC-4337 定义了授权和执行操作的接口,但没有指定某一种钱包或恢复政策。Ethereum.org列出备用密钥、受限权限和 gas 赞助等可能用法,但不能据此假定每个钱包都有这些功能。“智能钱包”这个名称本身无法说明谁掌握控制权。请确认哪个合约持有资产、账户信任哪些代码和 EntryPoint,以及哪些签名者能够授权调用。
如果账户逻辑可以升级,管理员权限和变更流程也会影响资产控制。
UserOperation 还不是已进入区块的以太坊交易
UserOperation 描述智能账户要执行什么。它通常包含发送方账户、账户自己的 nonce、调用数据、签名、gas 上限和费用条件,也可以附带创建新账户的 factory 信息或申请赞助的 paymaster 信息。具体字段会随 EntryPoint 版本变化。钱包不会通过普通的 eth_sendTransaction 直接把对象发上链,而是交给提供 eth_sendUserOperation 等 ERC-4337 RPC 的 bundler 或 relay。
请求进入独立的 UserOperation 池,与 EOA 交易池分开。UserOperation 哈希标识请求;bundler 创建的链上交易另有自己的哈希和回执。ERC-7769定义了提交和查询结果的 RPC 方法。Bundler 的响应可能只表示请求通过了该服务的检查并进入它的池。这不能证明请求已进区块,也不能证明应用操作成功。是否传播到其他 bundler 取决于其基础设施和政策。
请区分服务确认与链上记录的结果。
Bundler 模拟验证并准备链上调用
Bundler 收到操作后会检查它是否兼容所用的 EntryPoint 版本,再模拟账户与 paymaster 的验证逻辑。它检查签名、账户是否信任 EntryPoint、nonce、gas 和赞助条件;不符合规则或模拟失败的请求可能被拒绝。ERC-4337 bundler 指南说明了模拟与打包提交的作用。
接着,bundler 选取一个或多个通过检查的操作,创建一笔调用 EntryPoint handleOps 的普通以太坊交易。
这笔交易能否进入区块仍取决于出块过程和网络状态。收到 UserOperation 哈希不是其已在规范链执行的证据。UserOperation 池独立于 EOA 池,不同服务未必看到相同请求。Bundler 可能拒绝或暂缓操作,各自支持的网络、EntryPoint 版本和规则也可能不同。查询状态时,要区分钱包显示、操作回执和打包交易的链上回执。
EntryPoint 先核验账户授权,再调用账户执行
ERC-4337 EntryPoint 文档介绍了它的验证与结算职责。EntryPoint 接收 bundler 的 handleOps 调用,并逐个调用账户的验证函数。账户会检查调用是否来自可信的 EntryPoint,并验证签名及自己的授权规则。ERC-4337 nonce 由 192 位 key 和 64 位 sequence 组成。
EntryPoint 会按账户和 key 验证并递增 sequence;账户可为 key 赋予自定义含义或加入额外检查。
可选 paymaster 也会核验是否愿意赞助操作。验证通过后,EntryPoint 调用账户的执行函数,运行 callData 表示的动作并结算费用。EntryPoint 是共同的中间合约,让钱包设计无需逐个修改底层协议也能采用智能账户流程。请核对钱包实际使用的部署地址、版本和网络。模拟是有用的预览,不是纳入区块的承诺。等待期间,链状态、费用、有效时间窗或外部合约可能变化。即使验证通过,应用调用仍可能失败或回滚。
进入区块本身不能证明预期的代币转账或合约动作成功。
Paymaster 只有批准操作后才会赞助 gas
如果 UserOperation 带有 paymaster 信息,EntryPoint 会询问该合约是否愿意赞助。应用可以代用户承担费用,也可以让账户没有 ETH 的用户开始操作。有些设计允许用代币付费或设置其他资格条件,具体取决于钱包和 paymaster 实现。赞助不会让成本消失。Paymaster 可以限制应用、用户、操作次数或金额,检查请求后拒绝。其存入 EntryPoint 的押金用于支付操作成本。如果规则还要求单独质押,质押是安全担保,不等于可用于 gas 的押金。
ERC-4337 paymaster 指南和EIP-4337介绍了验证和结算过程。应用显示费用为零,并不代表没有成本。赞助方可能先付款,再通过订阅、代币收费或服务条款收回价值。请查看最终由谁承担成本、赞助是否有限额,以及失败的操作是否仍会消耗 gas。
分开评估多次调用与相应费用
如果钱包支持,一项 UserOperation 可以包含应用授权和兑换,两者作为一个操作经过 EntryPoint。这不同于一笔普通 EOA 交易,也不同于 bundler 把多个独立 UserOperation 打包进一笔链上交易。请在钱包预览中确认实际结构。假设一个获批赞助的操作实际消耗 0.0012 ETH gas。费用可能从 paymaster 存在 EntryPoint 的押金结算,而非用户账户余额。这只是说明用的假设数字,不是当前报价。
真实费用取决于 gas 用量、费用条件和网络。打包不一定更便宜或更安全。多次调用是否原子执行,取决于智能账户如何处理失败。请查明一次调用失败是否会回滚整个批次、其他操作是否仍可能完成,以及由谁支付 gas。gas 估算不准也可能导致拒绝或执行失败。以太坊 gas 费用指南说明了一般费用字段。
恢复方式由账户实现决定,不由 ERC-4337 保证
账户可以配置备用签名者,或要求可信 guardian 达到门槛后才能更换密钥。有些设计设有等待期,让现有密钥持有者提出异议。若账户始终要求单一签名,丢失该密钥可能让账户无法恢复。ERC-4337 允许账户设定自己的验证规则,但不会默认给所有账户备用密钥或社交恢复功能。Guardian 太少或换钥规则太弱可能形成攻击路径。Guardian 太多或要求过严,则可能拖慢合法用户恢复。请查看门槛、等待期、取消权和恢复密钥的保管方式。这些规则也决定谁能阻止操作,而不只是决定谁能授权。
合约钱包不自动等同于托管或非托管。控制权取决于谁持有签名密钥、谁有管理员或升级权限,以及托管签名服务或恢复服务可以授权什么。请把持有资产的合约与控制它的密钥和服务分开检查。助记词恢复指南讲的是另一种恢复问题。
提交前核对操作与控制路径
在钱包预览中检查网络、账户地址、目标合约、调用数据、代币授权范围和调用数量。签名可能授权界面突出显示的动作之外的内容。如果看不懂签名数据,请先查阅应用和钱包的官方说明。要了解 gas 赞助,请读清资格、使用上限、替代付款方式和失败时费用规则,不要只看 paymaster 名称。赞助有效不代表应用无条件免费;paymaster 仍可拒绝操作。网络拥堵和区块确认延迟也不会因此消失。若 UserOperation 等待很久,不要直接套用 EOA 的“加速”或“取消”流程。
先查询操作哈希和操作回执;若有 bundler 交易哈希,也检查其区块回执和执行结果。RPC 回执可以区分单个操作的实际成本与成功状态,以及整笔打包交易的回执。
常见问题
Q1UserOperation 和以太坊交易是一回事吗?
不是。它是经由独立池提交的智能账户请求。Bundler 把 EntryPoint 调用提交上链后,链会记录打包交易及每项操作的结果。
Q2有 paymaster 就代表用户不用付 gas 吗?
用户可能不直接从账户支付 ETH,但网络仍有成本。可能存在限额、代币付款或服务条件;操作失败也可能消耗 gas。
Q3丢失密钥后能恢复 ERC-4337 钱包吗?
只有账户设有备用签名者或恢复政策时才可以。请检查门槛、等待期、换钥权限以及恢复服务掌握的控制权。
资料来源与延伸阅读
报告问题
我们会准备一封包含本文链接的邮件。发送后,Mark 才会收到你的反馈
快速检查
读完指南后,用 3 道题检查一下
问题 01
Bundler 返回了 UserOperation 哈希。仅凭这一点能确定什么?
选择答案即可查看解释