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

如果你研究过 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,付款方必须:
- 调用
approve来授权消费者(一笔链上交易) - 然后消费者调用
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,为元交易提供了最大的灵活性。
并排对比
| 特性 | USDT | USDC |
|---|---|---|
| 标准 ERC-20 | ✅ | ✅ |
| ERC-3009 (transferWithAuthorization) | ❌ | ✅ |
| ERC-2612 (permit) | ❌ | ✅ |
| 无 Gas 转账 | ❌ | ✅ |
| x402 兼容 | ❌ | ✅ |
| AI Agent 友好 | ❌ | ✅ |
为什么这对 x402 至关重要
x402 支付流程要求:
- 用户签署消息(链下,无需 Gas)
- Facilitator 验证签名
- Facilitator 结算,在链上执行转账
用户签名 → Facilitator 验证 → 服务器响应 → Facilitator 结算
使用 USDT,第 3 步在没有用户直接参与的情况下无法完成。Facilitator 无法代表用户执行转账,因为 USDT 没有基于签名授权的机制。
用户体验影响
使用 USDC(ERC-3009):
用户点击「支付」→ 在钱包中签名 → 即时响应 → 完成
使用 USDT(传统 ERC-20):
用户点击「支付」→ 在钱包中授权 → 等待确认 →
再次点击 → 在钱包中转账 → 等待确认 → 完成
对于支付,尤其是微支付和 AI Agent 交易,这种用户体验差异是巨大的。
USDT 能否添加 ERC-3009 支持?
技术上可以。Tether 可以升级 USDT 合约以包含 ERC-3009 函数。但是:
- 合约升级有风险:USDT 持有数十亿美元价值。任何升级都有风险。
- 没有公开计划:Tether 尚未宣布添加此功能的意向。
- 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 可以使用传统的授权模式:
- 用户预先授权 Facilitator 消费其 USDT
- 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 支持。
相关文章
- ERC-3009:x402 支付背后的协议 - 深入解析该标准
- x402 Facilitator - 结算基础设施的工作原理
- Solana 的授权转账机制 - 非 EVM 替代方案
- x402 开发者指南 - 构建你的第一个付费 API
参考资料
x402 协议专注于 USDC 不是偏好问题——而是能力问题。当 USDT 获得 ERC-3009 支持时,x402 的大门就会敞开。在此之前,USDC 仍是 HTTP 原生支付的唯一选择。