x402 USDT USDC 稳定币 ERC-3009

为什么 x402 不支持 USDT

从技术角度解析 USDT(Tether)为何与 x402 协议不兼容,以及为什么 USDC 是 HTTP 原生支付的首选稳定币。

PayIn Team | | 23 分钟阅读

Why x402 Doesn't Support USDT

如果你研究过 x402 协议,会发现它只支持 USDC——而非 USDT。鉴于 USDT 在稳定币中市值最大,这可能令人意外。原因完全是技术层面的:USDT 没有实现 x402 所需的智能合约功能

技术要求:ERC-3009

EVM 链上的 x402 支付依赖于 ERC-3009,一个实现无 Gas、基于签名转账的标准。核心函数是:

function transferWithAuthorization(
    address from,
    address to,
    uint256 value,
    uint256 validAfter,
    uint256 validBefore,
    bytes32 nonce,
    uint8 v,
    bytes32 r,
    bytes32 s
) external;

这个函数允许付款方签署一条链下消息来授权转账,然后 Facilitator 可以在链上执行。付款方无需自己提交交易——只需签名即可。

USDT 合约:仅支持标准 ERC-20

让我们看看以太坊上 USDT 合约实际实现了什么:

// USDT (TetherToken) 合约函数
function transfer(address _to, uint _value) public returns (bool);
function transferFrom(address _from, address _to, uint _value) public returns (bool);
function approve(address _spender, uint _value) public returns (bool);
function balanceOf(address who) public view returns (uint);
function allowance(address _owner, address _spender) public view returns (uint);

就这些。只有标准 ERC-20 函数。没有 transferWithAuthorization,没有 permit,没有任何元交易支持。

这意味着什么

要在支付流程中使用 USDT,付款方必须:

  1. 调用 approve 来授权消费者(一笔链上交易)
  2. 然后消费者调用 transferFrom(另一笔链上交易)

或者付款方直接自己调用 transfer。无论哪种方式:

  • 付款方必须持有 ETH 来支付 Gas
  • 付款方必须自己提交交易
  • 第三方无法仅凭签名代表其执行

这从根本上破坏了 x402 模型。

USDC 合约:原生支持 ERC-3009

对比 Circle 的 USDC 合约(v2+):

// USDC 合约包含 ERC-3009 函数
function transferWithAuthorization(
    address from,
    address to,
    uint256 value,
    uint256 validAfter,
    uint256 validBefore,
    bytes32 nonce,
    uint8 v,
    bytes32 r,
    bytes32 s
) external;

function receiveWithAuthorization(
    address from,
    address to,
    uint256 value,
    uint256 validAfter,
    uint256 validBefore,
    bytes32 nonce,
    uint8 v,
    bytes32 r,
    bytes32 s
) external;

// 加上 ERC-2612 permit
function permit(
    address owner,
    address spender,
    uint256 value,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
) external;

USDC 同时实现了 ERC-3009 和 ERC-2612,为元交易提供了最大的灵活性。

并排对比

特性USDTUSDC
标准 ERC-20
ERC-3009 (transferWithAuthorization)
ERC-2612 (permit)
无 Gas 转账
x402 兼容
AI Agent 友好

为什么这对 x402 至关重要

x402 支付流程要求:

  1. 用户签署消息(链下,无需 Gas)
  2. Facilitator 验证签名
  3. Facilitator 结算,在链上执行转账
用户签名 → Facilitator 验证 → 服务器响应 → Facilitator 结算

使用 USDT,第 3 步在没有用户直接参与的情况下无法完成。Facilitator 无法代表用户执行转账,因为 USDT 没有基于签名授权的机制。

用户体验影响

使用 USDC(ERC-3009):

用户点击「支付」→ 在钱包中签名 → 即时响应 → 完成

使用 USDT(传统 ERC-20):

用户点击「支付」→ 在钱包中授权 → 等待确认 →
再次点击 → 在钱包中转账 → 等待确认 → 完成

对于支付,尤其是微支付和 AI Agent 交易,这种用户体验差异是巨大的。

USDT 能否添加 ERC-3009 支持?

技术上可以。Tether 可以升级 USDT 合约以包含 ERC-3009 函数。但是:

  1. 合约升级有风险:USDT 持有数十亿美元价值。任何升级都有风险。
  2. 没有公开计划:Tether 尚未宣布添加此功能的意向。
  3. Circle 的先发优势:USDC 自 2020 年(USDC v2)就已支持 ERC-3009。

USDT 合约使用可升级代理模式,所以技术上可行。但在 Tether 决定实现之前,USDT 与 x402 不兼容。

其他链上的情况?

Tron USDT

在 Tron 上(大量 USDT 存在于此),情况类似。TRC-20 USDT 合约没有实现任何基于签名的转账授权。

Solana

Solana 上,情况不同。Solana 的架构原生支持无 Gas、赞助支付的交易。Circle 的 USDC 在 Solana 上可与 x402 配合使用,因为:

  • 任何账户都可以支付交易费用
  • 交易是原子的且支持多指令
  • 不需要特殊的合约函数

但是,Tether 没有在 Solana 上发行原生 USDT——只有通过跨链桥的包装版本。

考虑过的替代方案

x402 能否使用 approve/transferFrom?

理论上,修改后的 x402 可以使用传统的授权模式:

  1. 用户预先授权 Facilitator 消费其 USDT
  2. Facilitator 在每次支付时调用 transferFrom

问题:

  • 需要一次性链上授权(Gas 成本)
  • 产生信任问题(Facilitator 可能耗尽全部授权额度)
  • 破坏无状态支付模型

x402 能否包装 USDT?

有人建议将 USDT 包装成 ERC-3009 兼容的包装代币:

// 假设的包装合约
contract WrappedUSDT is ERC3009 {
    function wrap(uint256 amount) external {
        USDT.transferFrom(msg.sender, address(this), amount);
        _mint(msg.sender, amount);
    }
}

问题:

  • 引入智能合约风险
  • 需要用户包装/解包
  • 增加复杂性和 Gas 成本
  • 不再是真正的 USDT

破局者:USDT0

2025 年 1 月,Tether 推出了 USDT0——基于 LayerZero OFT(全链同质化代币)标准构建的全链版 USDT。这改变了一切。

什么是 USDT0?

USDT0 是 USDT 的锁仓-铸造部署:

USDT(以太坊)→ 锁定在智能合约中 → 在目标链上铸造 USDT0

关键区别?USDT0 实现了 ERC-3009 和 ERC-2612

// USDT0 合约包含无 Gas 转账函数
function transferWithAuthorization(...) external;  // ERC-3009 ✅
function receiveWithAuthorization(...) external;   // ERC-3009 ✅
function permit(...) external;                      // ERC-2612 ✅

USDT0 vs 传统 USDT

特性USDT(原版)USDT0
ERC-3009
ERC-2612 (permit)
无 Gas 转账
x402 兼容✅(潜在)
原生跨链✅(LayerZero OFT)

支持的网络

USDT0 已处理超过 500 亿美元的转账,覆盖:

  • Ethereum、Arbitrum、Ink
  • Sei、HyperLiquid
  • 比特币层(Corn、Rootstock)
  • Conflux、Plasma
  • Solana(通过 LayerZero)
  • 更多网络持续接入中

这对 x402 意味着什么

USDT0 实现了 ERC-3009,技术障碍已被扫除。x402 Facilitator 理论上可以支持 USDT0 支付,提供与 USDC 相同的无缝体验:

用户签署 USDT0 授权 → Facilitator 验证 → 内容送达 → 结算

不过,x402 Facilitator 对 USDT0 的支持仍在发展中。请向你的 Facilitator 提供商确认当前的 USDT0 支持状态。

安全考量

USDT0 的架构包含强大的安全措施:

  • 双重 DVN 验证:每笔跨链操作都需要 LayerZero 去中心化验证网络和专用 USDT0 验证器的双重批准
  • 不可变核心逻辑:锁仓-铸造机制保持严格的 1:1 背书
  • 600 万美元漏洞赏金:DeFi 领域最高之一
  • OpenZeppelin 审计:专业安全审查

结论

x402 当前仅支持 USDC 不是随意的选择——而是基于 ERC-3009 要求的技术必然。协议依赖 ERC-3009 的 transferWithAuthorization 来实现:

  • 无 Gas 支付:用户不需要 ETH
  • 单次操作体验:一次签名即可
  • Facilitator 结算:第三方执行
  • AI Agent 兼容:自主支付

传统 USDT 仍然不兼容,但 USDT0 打开了基于 Tether 的 x402 支付之门。

展望未来

稳定币格局正在快速演变:

  • USDC 仍是可编程支付的黄金标准,自 2020 年起原生支持 ERC-3009
  • USDT0 将 Tether 带入无 Gas 转账时代,有望将 x402 的覆盖范围扩展到市值最大的稳定币
  • 更多代币 可能随着标准的普及而采用 ERC-3009

对于开发者,建议是:从 USDC 开始以获得经过验证的 x402 兼容性,同时关注生态系统成熟后的 USDT0 Facilitator 支持。

相关文章

参考资料


x402 协议专注于 USDC 不是偏好问题——而是能力问题。当 USDT 获得 ERC-3009 支持时,x402 的大门就会敞开。在此之前,USDC 仍是 HTTP 原生支付的唯一选择。