什么是 Token?
在 Solana 区块链上,Token 是一种数字资产,用于表示价值或所有权。这些 Token 可以代表各种类型的资产,如货币、股权、积分、NFT(非同质化代币)等。
Token 的分类
- 同质化代币(Fungible Tokens):代表同类型和同价值的可互换和可分割资产(例如 USDC)
- 非同质化代币(Non-Fungible Tokens, NFTs):代表不可分割资产的所有权(例如艺术品)
SPL (Solana Program Library)
SPL 是一组用于在 Solana 区块链上构建去中心化应用程序的智能合约库。SPL 提供了多种标准和工具,使开发者能够更容易地创建和管理代币。
SPL 的核心组件包括:
- Token Program(代币程序):包含与网络上的代币交互的所有指令逻辑
- Mint Account(铸币账户):代表一种特定类型的代币,并存储关于代币的全局元数据,如总供应量和铸造权限
- Token Account(代币账户):跟踪特定地址拥有的特定类型代币的单位数量
核心概念
1. Token Program(代币程序)
Token Program 是 SPL 中最核心的部分,包含与网络上代币交互的所有指令逻辑。
主要功能:
- 创建代币及初始化代币账户
- 在不同账户之间转移代币
- 授权和撤销授权
- 查询代币余额
2. Mint Account(铸币账户)
Mint Account 是每个 SPL Token 的核心账户,负责代币的定义和管理。它包含了代币的全局属性,比如总供应量和小数位数。每个代币都由一个独立的 Mint Account 来表示。
主要属性:
- Decimals(小数位数):定义代币的最小单位,常见取值是 6 或 9
- Supply(供应量):代币的当前总供应量
- Mint Authority(铸币权限):有权创建新代币单位的账户地址
- Freeze Authority(冻结权限):可以冻结或解冻代币账户的权限
主要功能:
- 铸造代币:增加总供应量并分配给指定的 Token Account
- 销毁代币:减少总供应量
创建 Mint Account
1 | sol@Sunshine:~$ spl-token create-token |
查看 Mint Account 信息
1 | sol@Sunshine:~$ spl-token account-info --address 75nCeiHP6AcHcKiVr24JKxSWTPu9k4fX5Teem3pGAC8F |
3. Token Account(代币账户)
Token Account 用于持有特定 SPL Token 的账户。每个用户或合约如果想要持有某种 SPL Token,必须有一个与该 Token 对应的 Token Account。每个 Token Account 只能对应一个特定的 Mint(代币类型),所以如果用户要持有多种代币,就需要为每种代币分别创建一个 Token Account
主要属性:
- Balance(余额):账户中持有的代币数量
- Owner(账户拥有者):控制该账户的用户或合约地址
- Mint(关联铸币账户):该账户与哪个 Mint Account 相关联
- Delegation(代理账户):被授权可以代表账户所有者转移代币的地址
- State(状态):账户是否处于冻结状态
主要功能:
- 接收和发送代币
- 代理权限管理:可以设置 Delegation 来授权第三方管理该账户的代币
创建 Token Account
1 | sol@Sunshine:~$ spl-token create-account 75nCeiHP6AcHcKiVr24JKxSWTPu9k4fX5Teem3pGAC8F /home/sol/.config/solana/wallet2.json |
查看 Token Account 信息
1 | sol@Sunshine:~$ spl-token account-info --address 65bUqQKj4Axew8Z7KpXGodFowdXbWBE4ne8ocUZMoKmz |
4. Associated Token Account(关联代币账户,ATA)
ATA 是一种由钱包地址和 Mint 通过特定规则派生出的标准化 Token Account 地址,每个钱包和某个代币的 Mint 至多对应一个 ATA。
特点:
- 唯一性:每个钱包地址只能有一个和某个 Mint 关联的 ATA
- 自动生成:Solana 提供了工具来自动生成 ATA,开发者不需要手动管理账户
- 简化管理:自动处理钱包地址与代币账户之间的关联
创建 ATA
1 | sol@Sunshine:~$ spl-token create-account 75nCeiHP6AcHcKiVr24JKxSWTPu9k4fX5Teem3pGAC8F |
查看 Associated Token Account 信息
1 | sol@Sunshine:~$ spl-token account-info --address DHvRpFVRXySnAhq5T3Y3nSHVpGS22NRX4gcWGXzTUxLL |
铸造代币操作
铸造到 ATA 账户
Mint Account 会自动关联到当前钱包的 ATA 账户,无需指定接收账户:
1 | sol@Sunshine:~$ spl-token mint 75nCeiHP6AcHcKiVr24JKxSWTPu9k4fX5Teem3pGAC8F 100 |
铸造到指定 Token Account
给普通 Token Account 铸造时,需要通过 -- 指定目标账户地址:
1 | sol@Sunshine:~$ spl-token mint 75nCeiHP6AcHcKiVr24JKxSWTPu9k4fX5Teem3pGAC8F 100 -- 65bUqQKj4Axew8Z7KpXGodFowdXb |
总结
Solana 的 Token 系统通过 SPL Token Program 提供了完整的代币管理功能。理解以下三个核心概念是使用 Solana 代币的基础:
- Mint Account(铸币账户):定义代币类型和全局属性,如供应量、小数位数、铸币权限等
- Token Account(代币账户):持有特定代币的账户,记录余额和所有权
- Associated Token Account(关联代币账户):标准化的代币账户,自动与钱包地址绑定,每个钱包和某个 Mint 仅对应一个 ATA
这套系统支持创建各种类型的数字资产,从可替代代币(如 USDC)到不可替代代币(NFT),为 Solana 生态系统提供了强大而灵活的基础设施。
Hooray!Solana Token 基础完成!!!