谁在提供服务:Bundler 与 Paymaster 是两条服务线
在 ERC-4337 的账户抽象里,Bundler 和 Paymaster 不是同一角色的两种叫法,也不是可以互相替代的服务商。它们分别回答两个不同问题:这笔操作由谁送进链上,这笔操作的 gas 由谁出。
Bundler 是打包方。它接收用户钱包构造的 UserOperation,在本地做验证,把一批操作组合成一次 EntryPoint.handleOps() 调用并提交上链。Paymaster 是可选赞助方,由 UserOperation 中的 paymaster 字段指定;它替发送方承担 gas,但本身不负责打包和提交。一个负责运输,一个负责付款承诺。
这里有个容易说错的地方:Bundler 提交批次交易时,外层 gas 确实由它先向链上支付,随后通过 EntryPoint 按协议从各账户或 Paymaster 的存款中结算回收。所以不能说 Bundler 完全不垫付,它承担的是打包环节的资金周转和结算风险,而不是替用户赞助费用。Paymaster 的角色才是“这笔操作的费用由我承担”。
一条假设请求路线
设想用户用智能合约账户发起一次代币转账,并希望某个应用方赞助 gas。这是教学用的假设路线,不对应任何具体产品:
- 钱包构造
UserOperation:sender是用户账户,callData是转账调用,paymaster填入赞助合约地址,paymasterData带上赞助方要求的数据。 - 钱包把操作发给 Bundler。
- Bundler 验证签名、nonce、gas 参数,并模拟检查 Paymaster 是否愿意且有能力付款。
- Bundler 打包多个操作,调用
EntryPoint.handleOps()提交。 EntryPoint在验证阶段调用账户的validateUserOp和 Paymaster 的validatePaymasterUserOp,执行阶段完成账户调用,必要时调用 Paymaster 的postOp。- 费用从 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 的能力等更高层基础设施。这些组件的可用程度因链、因钱包、因服务商而异,不能由标准文本直接推出采用范围。标准存在,不等于所有钱包都已支持,也不意味着链上费用消失。