首页Home 产品Products 服务Services 案例Work 知识库Blog 关于About 联系Contact
KNOWLEDGE · 2026-09

Solana SPL Token 创建实战:从零发一个可交易的代币

Creating an SPL token on Solana: from zero to a tradable token

#Solana #SPL Token #Web3 #区块链开发

背景

在 Solana 上发一个代币(SPL Token)本质上是调用 Token Program 创建「铸币厂(Mint)」账户。 和以太坊部署合约不同,SPL 代币不需要写合约:铸币、转账、销毁都是 Token Program 的内建指令, 你只需要决定权限模型(谁可以铸币、谁可以冻结)和元数据(名字、符号、图标)。 本文用 devnet 走一遍完整流程:初始化铸币厂 → 铸造 → 设置元数据 → 撤销权限 → 上 DEX 流动性。

准备:环境与账户

先装好两样工具,再领测试币:

  • Solana CLI:sh -c "$(curl -sSfL https://release.solana.com/v1.18.22/install)",然后 solana config set --url devnet
  • SPL Token CLI:cargo install spl-token-cli(或直接装官方预编译包)

生成并激活一个账户:solana-keygen new -o id.json,然后 solana airdrop 2 领 devnet SOL。发一个代币的账户租金 + 手续费只要 0.01 SOL 左右, 2 个足够反复练习。

创建铸币厂:先想清楚权限模型

铸币厂是代币的总账本,上面挂着两个关键权限,创建前必须想清楚:

  • Mint Authority(铸币权):谁可以凭空铸造新代币。持有它 = 可以无限增发。
  • Freeze Authority(冻结权):谁可以冻结某个持有者账户,使其无法转账。

一条命令创建铸币厂(decimals 通常用 9,和 SOL 一致):

spl-token create-token --decimals 9 --output json

输出里的 address 就是代币的 Mint 地址。创建者默认同时拥有铸币权和冻结权—— 上线前务必撤销(见后文),否则任何人(包括你自己)都可以无限增发,这在 DEX 上等于自杀。

铸造与销毁

给自己开一个代币账户,然后铸造 1,000,000 枚:

spl-token create-account <MINT>
spl-token mint <MINT> 1000000

销毁就是把代币送回铸币厂:spl-token burn <TOKEN_ACCOUNT> 数量。 销毁后总供应量永久减少(SPL 没有重铸已销毁部分的捷径), 这是通缩模型的基础操作,也常用于「销毁 LP 凭证」。

元数据:让钱包显示名字和图标

没有元数据的代币在 Phantom / Solflare 里只显示一串 Base58 地址。 用 spl-token CLI 的 initialize-metadata 写入 Metaplex Token Metadata:

spl-token initialize-metadata <MINT> "MyToken" "MTK" "https://example.com/metadata.json"

其中 metadata.json 是链下 JSON,至少包含 name、symbol、 image(PNG 图标直链,建议 image/<尺寸> 格式)、 description。图标和描述要提前备好,因为元数据写入后不可修改 (除非你在初始化时保留 update authority)。

收尾:撤销权限与上 DEX

上线前最后三步,顺序不能乱:

  • 确认总供应量已按计划铸造完毕,再 spl-token authorize <MINT> mint --disable 撤销铸币权
  • spl-token authorize <MINT> freeze --disable 撤销冻结权(可选但推荐,去中心化程度更高)
  • 在 Raydium / Orca 上创建池子:存入代币 + SOL 作为初始流动性,获得 LP 凭证

撤销后 Mint 的权限字段变成 None,任何人和合约都无法再增发或冻结, 这是代币「可信」的硬指标。很多土狗项目故意保留铸币权随时增发砸盘, 审查一个代币是否安全,第一眼看 Mint Authority 是否为 None。

常见坑检查单

  • decimals 选了 6 而生态默认 9:钱包显示和价格计算容易出错
  • 元数据 update authority 没留好:上线后想换图标/官网只能重新发币
  • 流动性池里放太少初始流动性:容易被一笔大单把价格打穿
  • 在 mainnet 上先跑了 create-token 再想到撤销:手续费不贵但地址一旦公开就无法更换
  • metadata.json 的域名没上 HTTPS:钱包可能拒绝加载图标
SPL Token 的价值不在「发出来」,而在「权限模型设计得让持有人放心」—— 铸币权撤销、流动性锁定、元数据可信,三者缺一不可。