账户抽象谁在提供服务:Bundler和Paymaster不是同一角色

账户抽象的提交方与支付方:角色示意;Bundler先支付外层gas,再按协议结算,不代表免费

账户抽象的提交方与支付方。角色示意;Bundler先支付外层gas,再按协议结算,不代表免费
角色示意;Bundler先支付外层gas,再按协议结算,不代表免费

查看完整图表 ↗

谁在提供服务:Bundler 与 Paymaster 是两条服务线

在 ERC-4337 的账户抽象里,Bundler 和 Paymaster 不是同一角色的两种叫法,也不是可以互相替代的服务商。它们分别回答两个不同问题:这笔操作由谁送进链上,这笔操作的 gas 由谁出。

Bundler 是打包方。它接收用户钱包构造的 UserOperation,在本地做验证,把一批操作组合成一次 EntryPoint.handleOps() 调用并提交上链。Paymaster 是可选赞助方,由 UserOperation 中的 paymaster 字段指定;它替发送方承担 gas,但本身不负责打包和提交。一个负责运输,一个负责付款承诺。

这里有个容易说错的地方:Bundler 提交批次交易时,外层 gas 确实由它先向链上支付,随后通过 EntryPoint 按协议从各账户或 Paymaster 的存款中结算回收。所以不能说 Bundler 完全不垫付,它承担的是打包环节的资金周转和结算风险,而不是替用户赞助费用。Paymaster 的角色才是“这笔操作的费用由我承担”。

一条假设请求路线

设想用户用智能合约账户发起一次代币转账,并希望某个应用方赞助 gas。这是教学用的假设路线,不对应任何具体产品:

  1. 钱包构造 UserOperation:sender 是用户账户,callData 是转账调用,paymaster 填入赞助合约地址,paymasterData 带上赞助方要求的数据。
  2. 钱包把操作发给 Bundler。
  3. Bundler 验证签名、nonce、gas 参数,并模拟检查 Paymaster 是否愿意且有能力付款。
  4. Bundler 打包多个操作,调用 EntryPoint.handleOps() 提交。
  5. EntryPoint 在验证阶段调用账户的 validateUserOp 和 Paymaster 的 validatePaymasterUserOp,执行阶段完成账户调用,必要时调用 Paymaster 的 postOp。
  6. 费用从 Paymaster 在 EntryPoint 的存款中扣除,结算给 Bundler 指定的收款地址。

整条路线中,账户仍要验证签名,链上仍要消耗 gas,只是出资方从用户变成了 Paymaster 合约的存款。

责任对照

维度 Bundler Paymaster
核心职责 接收、验证、打包操作,提交链上交易 可选赞助方,替操作承担 gas
是否必需 是,操作需要被打包 否,字段为空时由发送方账户承担
资金关系 先支付外层交易 gas,再按协议结算回收 从 EntryPoint 存款中扣费
主要风险 验证不严导致打包失败或资源被占 赞助规则被滥用、存款耗尽、验证逻辑引入 DoS 风险
与 EntryPoint 的关系 调用 handleOps 被调用 validatePaymasterUserOp 和 postOp
常见误解 以为它替用户付 gas 以为它负责打包或提交

对照表说明了一件事:打包服务和赞助服务可以由不同主体提供,也可以只有前者、没有后者。账户抽象的核心是账户能用合约逻辑验证签名和执行调用,Paymaster 只是 gas 支付维度的扩展。没有 Paymaster,流程照样能跑。

怎么判断一笔操作里谁在做什么

先看 UserOperation 的 paymaster 字段。为空,说明没有赞助方,gas 由发送方账户承担;不为空,说明有 Paymaster 参与,但它的职责限于付款验证与结算,不负责把操作送上链。

再看链上交易由谁发起。handleOps 的调用者通常是 Bundler 或其依赖的打包基础设施,一笔交易里可能包含多个不同发送方的操作。操作最终上链时,打包方和付款方完全可能是两个不同实体。

还要注意,Paymaster 的赞助不是“费用消失”。它需要在 EntryPoint 中有存款,标准还讨论了质押与信誉机制,用来约束可能影响多个操作的全局实体。是否赞助某类操作,取决于 Paymaster 自己的验证逻辑,Bundler 无权决定。

三种常见混淆

第一种,把“用了 Paymaster”当成“账户抽象已完成”。账户抽象的主线是账户验证与执行逻辑的合约化,Paymaster 只是可选的付费扩展。

第二种,认为“Bundler 会替用户垫付 gas”。Bundler 支付的是外层交易 gas,并通过协议从账户或 Paymaster 存款中回收,同时收取覆盖打包开销的部分;它不是赞助方,也不承担用户本应支付的费用。

第三种,认为“标准已定,所以到处可用”。ERC-4337 不改变共识层,依赖 Bundler 网络、EntryPoint 合约部署、钱包构造 UserOperation 的能力等更高层基础设施。这些组件的可用程度因链、因钱包、因服务商而异,不能由标准文本直接推出采用范围。标准存在,不等于所有钱包都已支持,也不意味着链上费用消失。

参考资料