跳转到主要内容

问题背景

在 x402 支付协议中,我们希望实现:
  1. 用户免 gas:Facilitator 代付所有链上交易费用
  2. 最小信任:用户只需信任卖家,不需要信任 Facilitator
  3. 简单易用:卖家无需部署复杂的智能合约

传统 Permit 方案的信任问题

方案一:授权给 Facilitator

如果让用户将代币授权给 Facilitator(spender = facilitator),存在信任风险:
// ❌ 存在信任风险的方案
const permit = {
  owner: buyerAddress,
  spender: facilitatorAddress, // 授权给中介
  value: amount,
};
问题
  • 用户必须信任 Facilitator 不会作恶
  • Facilitator 理论上可以将资金转移到任意地址
  • 违背了 x402 的”最小信任”原则

方案二:授权给卖家,但 gas 由谁付?

如果让用户直接授权给卖家(spender = seller):
// ✅ 信任模型正确
const permit = {
  owner: buyerAddress,
  spender: sellerAddress, // 授权给卖家
  value: amount,
};
问题
  • 卖家需要自己提交交易并支付 gas
  • 或者卖家需要部署智能合约来处理支付
  • 增加了卖家的技术门槛和成本

EIP-7702 的解决方案

什么是 EIP-7702?

EIP-7702 允许 EOA(普通钱包地址)临时获得智能合约的能力
  • 通过签名授权,EOA 可以”委托”一个智能合约的代码
  • 在委托期间,这个 EOA 的行为就像一个智能合约
  • 可以随时撤销委托,恢复成普通 EOA
// 卖家签署一次性授权(链下签名,免费)
const authorization = {
  chainId: 84532, // Base Sepolia
  codeAddress: "0xSellerWalletContract", // 卖家钱包合约地址
  nonce: 0,
};

const signature = await sellerWallet.signTypedData(
  domain,
  types,
  authorization
);
授权后的效果
卖家的 EOA(0xSeller123):
  ├─ 对外:还是普通 EOA 地址
  ├─ 内部:执行智能合约代码
  ├─ 功能:自动分账、权限控制等
  └─ 可撤销:随时恢复成普通 EOA

卖家钱包合约的工作原理

卖家通过 EIP-7702 将自己的 EOA 升级为”卖家钱包”后,可以实现以下逻辑:
  1. 接收用户的 Permit 授权(用户授权给卖家 EOA)
  2. 自动执行转账(从用户钱包转到卖家 EOA)
  3. 自动分账
    • 99% 转给卖家的受益人地址
    • 1% 作为 Facilitator 手续费

完整支付流程

第一步:卖家启用 EIP-7702(一次性设置)
  卖家 → 签名委托授权 → EOA 获得卖家钱包能力

第二步:用户发起支付(每次)
  1. 用户请求资源 → 服务端返回 402
  2. 用户生成 Permit 签名(spender = 卖家 EOA)
  3. 用户在 X-PAYMENT 头中发送签名

第三步:验证与结算(每次)
  1. Facilitator 收到支付请求
  2. 验证 Permit 签名有效性
  3. 提交链上交易(Facilitator 支付 gas)
  4. 卖家钱包合约自动执行分账

第四步:资金到账(即时)
  用户钱包 → 卖家 EOA → 自动分账
     ├─→ 99% → 卖家受益人账户
     └─→ 1%  → Facilitator 手续费

核心优势

1. 零托管风险

资金路径:用户 → 卖家 EOA → 自动分账

         └─ Facilitator 从不接触资金!
  • Facilitator 只负责:提交交易 + 支付 gas
  • 资金直接从用户转到卖家指定地址
  • 没有任何第三方托管环节

2. 最小信任模型

// 用户授权时看到的
permit.spender = "0xSeller123"; // 卖家地址

// 而不是
permit.spender = "0xFacilitator456"; // 中介地址
  • 用户只需信任卖家(买卖双方的天然信任)
  • 不需要信任 Facilitator 或其他第三方
  • 符合用户心理预期

3. 用户完全免 gas

  • 所有链上交易费用由 Facilitator 承担
  • 用户只需签名(离链操作,免费)
  • Facilitator 通过手续费获得激励(如 1%)

4. 卖家零门槛

无需部署合约:只需签名授权 EIP-7702
无需支付 gas:Facilitator 代付
无需技术背景:像使用 MetaMask 一样简单
  • 一次性设置成本:~$1-3(EIP-7702 授权 gas)
  • 后续所有支付:0 成本
  • 远低于部署智能合约(~$50-200)

5. 灵活配置

每个卖家可以独立配置:
  • 受益人地址:资金最终到账的地址
  • 手续费率:Facilitator 获得的比例(如 0-5%)
  • 信任的 Facilitator:白名单机制

6. 保持 EOA 身份

卖家依然是普通 EOA:
  ✅ 可以用 MetaMask 直接管理
  ✅ 可以随时撤销委托
  ✅ 可以升级到新的钱包合约
  ✅ 无需学习智能合约开发

7. 更多应用可能

  • Settle Hook 合约:在卖家钱包流程中增加 settle 钩子(Hook),将后置业务逻辑封装到独立合约中:
    • 更灵活地制定卖家的结算/核销/开票/权限分配等逻辑
    • 在部分场景下降低对“settle 执行完成后”离线流程的维护成本
    • 可版本化、可替换,不影响买家地址与最小信任模型
  • “挖矿”式代付市场:将用户已签名的交易/支付意图广播给愿意参与的 Facilitator:
    • 通过手续费激励,先提交并成功结算者获得奖励
    • 提高成功率与可用性,减少对单一 Facilitator 的依赖
    • 对买家/卖家透明,仍保持免 gas 与最小信任体验

与其他方案的对比

方案用户免 gas最小信任卖家门槛部署成本
授权给 Facilitator
卖家自己提交交易
卖家部署智能合约
EIP-7702 卖家钱包 🏆低(~$0.05)

适用场景

✅ 推荐使用 EIP-7702 的场景:

  • 支持更多代币/更多链/更多场景
  • 最小信任原则(买家只需信任卖家)
  • 希望为 Facilitator 提供激励(手续费分配)

快速开始

想要使用 EIP-7702 卖家钱包?查看以下资源: