2. Solana 代币架构

2. Solana 代币架构

2.1 SPL Token 标准

在 Solana 生态中,所有代币都遵循 SPL(Solana Program Library)Token 标准。SPL Token Program 是一个部署在链上的官方程序,它提供了创建和管理代币所需的全部功能。

这个设计与以太坊有本质区别:

维度Ethereum (ERC-20)Solana (SPL Token)
实现方式每个代币是独立的智能合约全网共用一个 Token Program
创建代币部署新的 Solidity 合约向 Token Program 发送指令,创建数据账户
代码审计每个合约需单独审计统一的程序已经过严格审计
灵活性可自定义任意逻辑标准化操作,通过 Extensions 扩展
安全性取决于开发者水平高度标准化,安全性有保障

可以这样理解:以太坊的模式是每个人自己造一台印钞机;Solana 的模式是大家共用一台经过认证的印钞机,只是使用不同的印版。


2.2 程序与账户模型

理解 Solana 的代币系统,首先要理解其核心架构——程序与账户分离

程序(Program)

程序是 Solana 上的可执行代码,类似于智能合约。但与以太坊不同,Solana 的程序是无状态的——它们不存储数据,只包含业务逻辑。SPL Token Program 就是这样一个程序,它定义了如何创建代币、如何转账、如何铸造等操作逻辑。

程序地址是固定的:

  • Token Program: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
  • Token-2022 Program: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
  • Associated Token Account Program: ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL

账户(Account)

账户是 Solana 上的数据存储单元。每个账户都有:

  • 地址:唯一的公钥。
  • 余额:SOL,用于支付租金。
  • 所有者:哪个程序可以修改它(对于代币账户,所有者是 Token Program)。
  • 数据:程序定义的结构化数据(如余额、供应量)。

对于代币系统,有三种关键账户类型:

┌─────────────────────────────────────────────────────────────┐ │ SPL Token Program │ │ (无状态的执行逻辑) │ └─────────────────────────────────────────────────────────────┘ ┌───────────────┼───────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Mint Account │ │Token Account│ │Token Account│ │ (代币定义) │ │ (用户 A) │ │ (用户 B) │ │ │ │ │ │ │ │ supply: 1M │◄─│ mint: xxx │ │ mint: xxx │ │ decimals: 6 │ │ owner: A │ │ owner: B │ │ authority:X │ │ amount: 100 │ │ amount: 200 │ └─────────────┘ └─────────────┘ └─────────────┘
  1. Mint Account (铸币账户): 存储代币的全局信息,如总供应量、精度、铸币权限。它不存储任何人的余额。
  2. Token Account (代币账户): 存储特定用户持有的特定代币数量。它有一个指针 (mint) 指向它所属的 Mint Account。

2.3 与比特币的对比

比特币网络本身不支持原生代币。后来出现的 Ordinals 和 BRC-20 协议是通过在比特币交易中嵌入数据来"模拟"代币功能。

具体来说,这些协议将代币信息编码后写入交易的见证数据(Witness Data)中。比特币网络本身并不理解这些数据的含义,它只是把它们当作普通的交易附带信息。需要专门的外部索引器来解读这些数据,跟踪代币的归属和转移。

而在 Solana 上,代币是原生的一等公民。Token Program 直接在共识层处理代币逻辑,验证节点理解并执行这些操作,提供了更高的效率和更强的安全保证。

JSPlayground
EDITOR ACTIVE
Initializing JS Environment...

架构对比: Solana (SPL Token)

SPL Token Program
Logic Only (Stateless)
全网共用一套逻辑代码
Mint Account
USDC Definition
Supply: 1,000,000
Decimals: 6
Token Account (Alice)
Owner: Alice100 USDC
Token Account (Bob)
Owner: Bob50 USDC
在 Solana,你不需要写代码发币。你只需要调用 Token Program 创建数据账户。逻辑与数据完全分离,安全性更高。