
gas 赞助与 paymaster 详解
Ethereum 上的每一笔交易都需要消耗 gas,而在传统账户中,发送交易的人就是支付费用的人,且以链的原生币支付。正是这条单一规则,导致一个持有 stablecoin 却没有 ETH 的新用户,可能发现自己无法转移自己的资金。account abstraction 打破了这种绑定,而完成这一打破的机器部件就是 paymaster。本文将解释 ERC-4337 中的 paymaster 是什么、它处于流程中的哪个位置,以及——最重要的——对于一个自行保管私钥的人来说,gas 赞助究竟意味着什么。
这是我们 account abstraction 系列的第四篇文章。如果下面的术语对你来说很陌生,请从从第一性原理理解 account abstraction开始;至于 gas 赞助所建立其上的底层费用模型,请阅读为自我托管用户解释 Ethereum 上的 gas 费用。
paymaster 究竟是什么
paymaster 是一个 smart contract。它唯一的职责,就是同意为别人的操作支付 gas。在 ERC-4337 下,当一个 smart account 以 UserOperation 的形式表达它想做什么时,该操作可以指定一个 paymaster。如果 paymaster 同意,那么由它——而非账户——向网络结算 gas 成本。
这有两种形式,分别回应用户的两个不同问题:
- 直接赞助 gas。 paymaster 代表用户支付费用,用户无需为 gas 付费。这就是人们所说的"无 gas(gasless)"。
- 接受以 ERC-20 代币付款。 paymaster 向网络支付原生币形式的 gas,然后改为向用户收取一种 ERC-20 代币,比如一种 stablecoin。用户从不必持有 ETH;他们用自己已经拥有的代币来结算。
无论哪种情况,协议仍然以原生币收取费用。gas 并没有变成免费;唯一的问题在于由谁出资,以及用户以何种计价单位感受到这笔成本。
paymaster 处于流程中的哪个位置
要理解为什么可以信任 paymaster 来付费,回顾一下 ERC-4337 操作是如何流转的会有帮助。smart account 不发送普通交易。它向一个独立的 mempool 发出一个 UserOperation。bundler 把这些操作收集起来、打包,并通过经过审计的 EntryPoint 合约提交到链上;EntryPoint 会在执行之前调用每个账户以运行其验证逻辑。
paymaster 在验证步骤中登场。当 EntryPoint 处理一个指定了 paymaster 的 UserOperation 时,它会调用 paymaster 自己的验证函数。paymaster 检查该操作,并当场决定它是否愿意承担这笔 gas。如果它同意,它实际上向 EntryPoint 保证了付款,操作便继续进行。如果它拒绝,该操作就得不到赞助——要么退回到由账户付费,要么不在那样的条件下通过。
重要的心智模型是这样的:赞助是一项在验证时由一个合约针对某一具体操作做出的决定。它不是一个笼统的承诺。paymaster 审视这一个操作,然后说是或否。
gas 赞助有什么用
把费用支付方与发送方解耦,能解锁一系列具体的模式:
- 被赞助的引导上手(onboarding)。 新用户可以完成他们的第一个动作——一次 swap、一次 mint、一次领取——而无需先从交易所购入原生 gas 代币。去掉"你必须先买 ETH 才能做任何事"这一步,是 account abstraction 带来的最大摩擦削减之一。
- dApp 赞助的费用。 一个应用可以作为产品决策选择为其用户支付 gas,就像 web 应用吸收服务器成本那样。用户点击;应用的 paymaster 承担该操作。
- 以 stablecoin 支付费用。 用户无需仅为 gas 而单独保留一份 ETH 余额,而可以用自己正在交易的那种代币来支付费用。paymaster 收取该代币,并向网络垫付原生币。
这些当中的每一个,都是同一个原语——一个愿意按其自设条件支付 gas 的合约——被应用到不同问题上的实例。
"被赞助"并不等于"免费"
关于其中的经济账,值得说得直白一些,因为"无 gas"这个词容易引起误解。网络始终以原生币收取 gas。当一笔交易"被赞助"时,那笔成本并没有消失;只是有别人同意承担了它。paymaster 必须被注资,而注资者——一个应用、一个协议、一项服务——正在为消除摩擦这一便利付出真金白银。
这带来两点自我托管用户应当牢记的后果:
- paymaster 可以拒绝。 因为赞助是逐操作的决定,所以无法保证任何一笔具体操作都会被承担。赞助计划可能设有资格规则、支出上限,或者干脆把资金用尽。"无 gas"是某个具体流程的特性,而不是这条链的属性。
- 你应当知道涉及的是哪个 paymaster。 paymaster 是一个参与你交易的合约。如同与任何你交互的合约一样,弄清楚这是谁的 paymaster、它在做什么是值得的——赞助一笔费用是良性的,但信任依然重要。当你以某种代币支付费用时,你也接受了 paymaster 在该代币与原生币之间所采用的任何汇率。
这些都不是回避 paymaster 的理由。它们是去理解 paymaster 的理由:一笔被赞助的交易是某人在提供的一项服务,而不是协议白白发放的免费午餐。
这对自我托管意味着什么
下面是对一个自行保管私钥的人最重要的部分,而且很容易理解反。gas 赞助改变的是谁支付费用。它不改变谁控制资金。
当 paymaster 为你承担 gas 时,你仍然用自己的私钥为操作签名。paymaster 无法转移你的资产、改变你交易的去向,也无法以你的名义授权任何事——它只能同意为你授权的那笔操作支付费用。托管权丝毫未动。你仍然是唯一能批准转移你资金的一方;paymaster 只不过是自愿为一段你决定要走的旅程支付了过路费。
具体到 SSP,这与其安全模型自然契合。SSP 是一个围绕 2-of-2 multisig 构建的自我托管钱包:一把私钥在 SSP Wallet 浏览器扩展中,第二把在 SSP Key 移动应用中,两者都需要批准每一笔交易。在 EVM 链上,SSP 是一个验证 Schnorr 聚合 2-of-2 签名的 ERC-4337 smart account,并于 2025 年通过 Halborn 审计。正因为它是一个 ERC-4337 账户,该标准的 gas 机制——包括 UserOperation 可由 paymaster 支付的能力——对它的适用方式,与对任何 ERC-4337 账户的适用方式相同。完整设计见SSP account abstraction 架构。
为了把它承诺什么、不承诺什么说清楚:ERC-4337 使gas 赞助和以代币付费的流程成为可能,而 SSP 的账户就处于这一标准之内。你做的某一笔具体交易是否被赞助、是否可用某种代币支付,取决于你正在使用的应用或钱包流程,以及该操作是否有 paymaster 参与其中。相比之下,两把私钥的托管保证则始终有效,无论 gas 由谁支付。
要点总结
paymaster 是这样一个合约:它可以代表用户支付一笔 UserOperation 的 gas,或者让这笔 gas 以一种 ERC-20 代币而非原生币来支付。它在验证期间逐操作地同意这样做,并且可以拒绝。它使无 gas 引导上手、dApp 赞助的费用以及 stablecoin 支付 gas 成为可能——这些都是降低交易门槛的真切便利。但"被赞助"意味着"由某人出资",而非"免费",并且 paymaster 永远不会获得对你资产的任何控制权。对一个自我托管用户而言,干净利落的总结就是:paymaster 可以改变由谁为这段旅程付费,但车钥匙仍然握在你手里。
本系列的其余部分
- 从第一性原理理解 account abstraction —— 为什么 EOA 受到限制,以及 account abstraction 意味着什么。
- EOA 与 smart account:真正重要的差异 —— 对两种账户模型的直接比较。
- SSP account abstraction 架构 —— SSP 如何把 ERC-4337 接入一个 2-of-2 钱包。
- gas 赞助与 paymaster 详解 —— 本文:paymaster 如何把谁付费与谁发送解耦。
- 非 Ethereum 链上的 account abstraction —— 同一个理念如何走出 Ethereum。
至于标准本身,权威参考是 EIP-4337,而 Ethereum 的 account abstraction 路线图追踪着这一更广泛努力的走向。如果你想先单独了解该标准,请阅读什么是 account abstraction(ERC-4337)?。


