Solana 的授权机制:x402 在超越 EVM 时的工作原理
发布: (2025年12月11日 GMT+8 04:24)
3 min read
原文: Dev.to
Source: Dev.to
为什么 Solana 不需要 ERC‑3009
在 Ethereum 上,ERC‑3009 用来解决两个主要痛点:
- 两步授权 –
approve+transferFrom模式需要两笔交易。 - 燃气费用 – 用户必须持有 ETH 来支付燃气费。
Solana 的架构天然地解决了这两点。
原子化多指令交易
单个 Solana 交易可以包含多个指令,并且原子执行:
const transaction = new Transaction()
.add(createApproveInstruction(...)) // Approve
.add(createTransferInstruction(...)); // Transfer
// Both execute in ONE atomic transaction
await sendAndConfirmTransaction(connection, transaction, [payer]);
费用支付者抽象
在 Solana 上,任何账户都可以支付交易费用:
const transaction = new Transaction();
transaction.feePayer = sponsorPublicKey; // Sponsor pays gas
transaction.add(transferInstruction);
这使得“无燃气”体验成为可能,用户根本不需要持有 SOL。
Solana 的代币授权模型
SPL Token 程序基础
| 概念 | 描述 |
|---|---|
| Mint | 代币合约(例如 USDC Mint) |
| Token Account | 某个用户针对特定代币的余额账户 |
| Associated Token Account (ATA) | 从钱包 + Mint 派生的标准代币账户 |
| Authority | 能够授权转账的账户 |
对比 EVM(ERC‑3009) 与 Solana
| 方面 | EVM + ERC‑3009 | Solana |
|---|---|---|
| 授权模式 | 链下签名 | 内置于交易 |
| 燃气费用 | 由中介支付 | 可配置费用支付者 |
| 随机数处理 | 随机 bytes32 | 最近的区块哈希 |
| 交易原子性 | 单一操作 | 多指令 |
| 元交易支持 | 需要 ERC‑3009 | 原生支持 |
为什么两种方式都适用于 x402
尽管架构不同,两者都实现了相同的 x402 目标:
- 用户不付燃气费 – 中介承担费用
- 单次用户操作 – 一次签名/授权
- 无需信任的验证 – 加密意图证明
- 原子结算 – 全部成功或全部回滚
Solana 上的无燃气转账
1. 费用支付者赞助(原生)
const transaction = new Transaction();
transaction.feePayer = facilitatorPublicKey;
transaction.add(usdcTransferInstruction);
2. Kora Protocol
一种将 SPL 代币费用转换为 SOL 的服务——用户使用 USDC 支付,永不触碰 SOL。
3. Octane
开源的无燃气交易转发器,支持基于代币的费用支付。
Solana 上的 USDC
| 属性 | 值 |
|---|---|
| Mint Address | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| Decimals | 6 |
| Program | SPL Token |
| Issuer | Circle |