Gas 豁免
经治理批准的地址(称为豁免者)提交一个包装器交易,该交易携带用户签名的负载,并以 gasPrice = 0 执行它。用户不持有 USDT0 也不支付 Gas 费。Stable 运营一个这样的豁免服务作为托管服务;合作伙伴也可以通过验证者治理注册自己的豁免地址。
工作原理
Gas 豁免使用包装器交易模式:
- 用户签署一个
InnerTx,其中gasPrice = 0。用户的签名在端到端过程中得到保留;豁免者不能修改负载而不使其失效。 - 豁免者将
InnerTx包装成WrapperTx,发送到协议标记地址 (0x000000000000000000000000000000000000f333),其中value = 0,gasPrice = 0,并将已签名的InnerTx作为其数据负载。 - 验证者检测到标记,检查豁免者的授权和策略约束,并以用户的身份(
from、nonce、调用语义)执行内部交易。
Gas 核算在豁免机制内部处理。用户不支付任何费用;包装器不支付任何费用;验证者根据每个豁免者的策略承担成本。
授权和策略
豁免由验证者治理控制,而不是应用程序逻辑。治理提供:
- 可审查的注册:每个豁免地址都在链上注册,并在状态中可见。
- 撤销:验证者可以随时移除行为不当的豁免者。
- 通过
AllowedTarget进行范围访问:每个豁免者都绑定到一组特定的目标合约和方法选择器。如果内部to地址和方法选择器超出该范围,协议将拒绝任何包装器。
有效的包装器交易满足以下所有条件:
WrapperTx.to == 0x000000000000000000000000000000000000f333(标记地址)。WrapperTx.from是通过治理在链上注册的豁免者。WrapperTx.gasPrice == 0且InnerTx.gasPrice == 0。WrapperTx.value == 0。InnerTx.to和提取的方法选择器由豁免者的AllowedTarget策略允许。
如果任何条件失败,验证者将拒绝包装器,而不执行内部交易。
安全模型
- 用户签名完整性:用户签署
InnerTx。豁免者不能在不使签名无效的情况下修改负载。合作伙伴仍有责任确保用户只签署预期的负载。 - 链上授权:授权存在于链上。只有治理注册的豁免地址才能提交有效的包装器,无论请求源自何处。
- 服务可用性边界:当合作伙伴通过 Stable 的托管豁免服务器路由时,提交的可用性取决于服务。协议级别的授权保证不受影响。
何时使用 Gas 豁免
Gas 豁免适用于任何最终用户无需持有 USDT0 支付 Gas 的流程:
- 尚未拥有稳定币余额的消费者应用用户入门。
- 由代理驱动的流程,其中代理的钱包为 Gas 提供资金。
- 企业支付轨道,其中运营商承担网络成本。
对于用户持有 USDT0 但希望将多个调用捆绑到一个签名交易中的流程,请参阅EIP-7702 委托。
选择集成路径
所有三种路径都会产生相同的链上结果。它们在谁持有豁免密钥以及您构建多少方面有所不同。
| 路径 | 谁持有豁免密钥 | 何时使用 |
|---|---|---|
| 托管豁免服务器 | Stable,您通过 API 密钥进行身份验证 | 您想要最短的路径,并且可以依赖 Stable 的服务进行提交。 |
| 企业 SDK | 您,通过治理注册 | 您用 TypeScript 运行自己的豁免,并希望一次调用即可构建、签名和广播。 |
| 自托管包装器 | 您,通过治理注册 | 您自己构建包装器交易,使用 SDK 不涵盖的语言。 |
托管服务器为您注册并运营豁免,因此您无需构建 WrapperTx。两条自托管路径都需要一个经过治理注册的豁免地址,而 @stablechain/enterprise 是该模型的类型化客户端。
下一步建议
- 启用免 Gas 交易:集成托管豁免服务器 API,支持 API 密钥提交和 NDJSON 响应。
- Gas 豁免协议:阅读完整的协议规范:标记路由、包装器格式、治理控制。
- USDT0 作为 Gas:了解豁免涵盖的 Gas 代币。

