#Solana #SPL Token #Web3 #区块链开发
在 Solana 上发一个代币(SPL Token)本质上是调用 Token Program 创建「铸币厂(Mint)」账户。 和以太坊部署合约不同,SPL 代币不需要写合约:铸币、转账、销毁都是 Token Program 的内建指令, 你只需要决定权限模型(谁可以铸币、谁可以冻结)和元数据(名字、符号、图标)。 本文用 devnet 走一遍完整流程:初始化铸币厂 → 铸造 → 设置元数据 → 撤销权限 → 上 DEX 流动性。
先装好两样工具,再领测试币:
sh -c "$(curl -sSfL https://release.solana.com/v1.18.22/install)",然后 solana config set --url devnetcargo install spl-token-cli(或直接装官方预编译包)
生成并激活一个账户:solana-keygen new -o id.json,然后
solana airdrop 2 领 devnet SOL。发一个代币的账户租金 + 手续费只要 0.01 SOL 左右,
2 个足够反复练习。
铸币厂是代币的总账本,上面挂着两个关键权限,创建前必须想清楚:
一条命令创建铸币厂(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)。
上线前最后三步,顺序不能乱:
spl-token authorize <MINT> mint --disable 撤销铸币权spl-token authorize <MINT> freeze --disable 撤销冻结权(可选但推荐,去中心化程度更高)
撤销后 Mint 的权限字段变成 None,任何人和合约都无法再增发或冻结,
这是代币「可信」的硬指标。很多土狗项目故意保留铸币权随时增发砸盘,
审查一个代币是否安全,第一眼看 Mint Authority 是否为 None。