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‑3009Solana
授权模式链下签名内置于交易
燃气费用由中介支付可配置费用支付者
随机数处理随机 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 AddressEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
Decimals6
ProgramSPL Token
IssuerCircle

参考资料

Back to Blog

相关文章

阅读更多 »