核心关键词:Solana代币发行、spl-token CLI、Solana开发测试、Solana多签、Solana NFT、Solana发币教程
环境准备
1 安装 Solana CLI
打开终端,一键脚本安装最新稳定版:
sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"把可执行文件加入系统路径:
export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
# 建议把上面这句追加到 ~/.zshrc 或 ~/.bashrc验证安装:
solana --version2 切换 Devnet,领取测试 SOL
开发阶段永远用 Devnet,免费且不会烧真钱:
solana config set --url https://api.devnet.solana.com
solana airdrop 5看到余额增加即成功:
solana balance从零创建你的第一个代币(Fungible Token)
1 创建 Mint(铸币账户)
spl-token create-token输出示例:
Creating token 34GbKbRzLMfvpHEFywhe2KyheKMMxab8tQAFj5t2rBYT ...
Address: 34GbKbRzLMfvpHEFywhe2KyheKMMxab8tQAFj5t2rBYT
Decimals: 9- 34GbKbRz… 就是新代币的铸币地址(mint),记下它。
- 👉 五分钟内发完第一枚代币,立即体验无门槛流程
此时总供应量为 0:
spl-token supply 34GbKbRzLMfvpHEFywhe2KyheKMMxab8tQAFj5t2rBYT
# 返回 02 为你的钱包创建 ATA(关联代币账户)
必须先有 ATA,才能接收这种代币:
spl-token create-account 34GbKbRzLMfvpHEFywhe2KyheKMMxab8tQAFj5t2rBYTCLI 会自动计算出你的 ATA 地址并存入少量 SOL 做租金。
3 铸造代币(Mint to)
给自己发 100 枚(9 位小数,所以其实是 100.000000000):
spl-token mint 34GbKbRzLMfvpHEFywhe2KyheKMMxab8tQAFj5t2rBYT 100再查余额:
spl-token balance 34GbKbRzLMfvpHEFywhe2KyheKMMxab8tQAFj5t2rBYT
# 100总供应量随之更新:
spl-token supply ...
# 100常用查询与管理命令
| 需求 | 命令示例 |
|---|---|
| 查看当前钱包持有的所有代币 | spl-token accounts |
| 查看指定代币的全部持有者 | spl-token accounts <mint> -v |
| 转 50 枚给另一地址 | spl-token transfer <mint> 50 <receiver-wallet> |
| 铸造权限一次作废,永久固定总量 | spl-token authorize <mint> mint --disable |
FAQ:转账时对方没有 ATA 怎么办?
Q:如果接收方钱包没有对应的 ATA,会不会失败?
A:加--allow-unfunded-recipient --fund-recipient即可自动创建,转账手续费略高于正常转账。
衍生场景
1 发行 NFT(Non-Fungible Token)
只需把小数位设为 0,让 供应量永远为 1:
spl-token create-token --decimals 0
spl-token mint <new-mint> 1完成后禁用再铸即可。
2 包装与解包 SOL(WSOL)
在 DeFi 场景常把原生 SOL 包装成 WSOL(W-rapped SOL),与普通 SPL 代币统一处理。
包装 1 SOL
spl-token wrap 1解包换回原生 SOL
spl-token unwrap <WSOL地址>
FAQ:包装 SOL 有什么坑?
Q:为什么包装后钱包仍显示 SOL 金额?
A:只是表现形式不同,链上实际发生了两步:
- 把 1 SOL 转进新 ATA。
- 发送
SyncNative指令让 Token Program 更新余额。
多重签名(Multisig)深度实践
创建 2/3 多签
- 先准备 3 把钥匙:
solana-keygen new --no-passphrase -so signer-1.json
solana-keygen new --no-passphrase -so signer-2.json
solana-keygen new --no-passphrase -so signer-3.json- 读取公钥:
for i in signer-{1..3}.json; do echo "$i: $(solana-keygen pubkey $i)"; done- 创建多签账户:
spl-token create-multisig 2 <pubkey1> <pubkey2> <pubkey3>
# 得到多签地址:46ed77fd4....将铸币权限挂给多签
典型流程:
spl-token create-token # 普通新代币
spl-token authorize <mint> mint <多签地址> # 移交权限此时,任何人单签都无法继续铸币,必须集齐 两把钥匙 才能继续:
spl-token mint <mint> 1 <target-ata> \
--owner <多签地址> \
--multisig-signer signer-1.json \
--multisig-signer signer-2.json离线签名完整示例
当主要签名人不在线时,可将交易导出离线签名 —— 用 nonce 账户防重放。
如需完整脚本与演示,👉 点击获取实战离线签名模板 (免注册直接运行)。
JSON-RPC 索引速查
可用链上方法帮你在应用层快速查询:
getTokenAccountBalance‑ 查余额getTokenAccountsByOwner‑ 查某地址下所有代币getTokenSupply‑ 查总供应量getProgramAccounts+ filters ‑ 自定义批量查询
示例:获取某钱包的全部 SPL 代币(Devnet 节点为例):
curl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getTokenAccountsByOwner",
"params": [
"<用户钱包地址>",
{"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},
{"encoding": "jsonParsed"}
]
}'开发者锦囊:常见坑与技巧
| 场景 | 避坑指南 |
|---|---|
| 反复空投 | Devnet 每小时最多 2 次,超出需等待。 |
| 小数位过多 | UI/前端展示记得除以 10^decimals。 |
| 忘记保留 SOL | 创建 ATA、转账、关账户都需要少量租金,钱包至少留 0.002 SOL。 |
| 多签失败 | 检查提供的签名数量与 --owner 设定的阈值是否匹配。 |
总结
从安装一条命令到发链上 NFT,这套 Solana代币发行、spl-token CLI 完整实践已覆盖全部核心环节。想深入 Solana开发测试 或 Solana多签 高级模式,可将本文命令稍作组合即可投入 DAO、DeFi、空投等真实场景。祝一路链上顺利!