Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Gas 豁免

经治理批准的地址(称为豁免者)提交一个包装器交易,该交易携带用户签名的负载,并以 gasPrice = 0 执行它。用户不持有 USDT0 也不支付 Gas 费。Stable 运营一个这样的豁免服务作为托管服务;合作伙伴也可以通过验证者治理注册自己的豁免地址。

工作原理

Gas 豁免使用包装器交易模式:

  1. 用户签署一个 InnerTx,其中 gasPrice = 0。用户的签名在端到端过程中得到保留;豁免者不能修改负载而不使其失效。
  2. 豁免者将 InnerTx 包装成 WrapperTx,发送到协议标记地址 (0x000000000000000000000000000000000000f333),其中 value = 0,gasPrice = 0,并将已签名的 InnerTx 作为其数据负载。
  3. 验证者检测到标记,检查豁免者的授权和策略约束,并以用户的身份(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 是该模型的类型化客户端。

下一步建议