SPL-Token Cli
网络设置
官方RPC地址分别是:
- DevNet:
https://api.devnet.solana.com - TestNet:
https://api.testnet.solana.com - MainNet:
https://api.mainnet-beta.solana.com
# 获取当前环境
solana config get
# 设置环境
solana config set --url https://api.devnet.solana.com
本地节点启用
solana-test-validator
# 重置环境
solana-test-validator --reset
创建钱包
# 强制覆盖当前的默认钱包
solana-keygen new --force
# 指定输出位置
solana-keygen new -o my.json
获取当前钱包密钥
node --input-type=module -e "import fs from 'fs'; import os from 'os'; import bs58 from 'bs58'; const p=os.homedir()+'/.config/solana/id.json'; const arr=Uint8Array.from(JSON.parse(fs.readFileSync(p,'utf8'))); console.log(arr.length); console.log(bs58.encode(arr));"
申请水龙头
# 申请1个sol
solana airdrop 1
# 查询sol余额
solana balance
操作Token
创建 Token
普通创建
spl-token create-token
可选参数:
- decimals : 小数位数 默认是 9 (–decimals 6)
- supply: 当前总供应量
- mint_authority: 铸造权限,谁可以发行 token
- freeze_authority: 冻结权限,冻结或解冻某个账户的 Token,防止该账户进行转账或接收 Token。
靓号创建
# 以CNY开头,创建一个账号
solana-keygen grind --starts-with CNY:1
# 以CNY结尾,创建一个账号
solana-keygen grind --ends-with CNY:1
# 创建
spl-token create-token mint_keypair.json
发行 Token
发行 Token 需要先创建好 ATA 账户
# 创建 ATA
spl-token create-account <MINT_ACCOUNT>
# 发行
spl-token mint <MINT_ACCOUNT> <TOKEN_AMOUNT> [<ATA>]
# 查看余额
spl-token balance <MINT_ACCOUNT>
# 查看发行量
spl-token supply <MINT_ACCOUNT>
# 查看 Token mint 的账户信息
spl-token account-info/display <MINT_ACCOUNT>
转账 Token
spl-token transfer <MINT_ACCOUNT> <TOKEN_AMOUNT> <RECIPIENT_WALLET_ADDRESS or RECIPIENT_TOKEN_ACCOUNT_ADDRESS>
-
同样需要创建目标的 ATA 账户,或者
--fund-recipient- 创建:
spl-token create-account --owner <ata_owner> <MINT_ACCOUNT> --fee-payer key.json
- 创建:
-
spl-token accounts: 查看我所有的 Token 账户及余额
关闭 ATA 账户
- 关闭余额为 0 的地址,可以回收账户资金
spl-token close <mint_account>: 关闭 ATA (需要余额为 0 )- 如果有余额,可以需要先清空余额:
spl-token burn <ATA account> <amount>
创建NFT
spl-token create-token --enable-metadata --decimals 0 --program-2022
spl-token initialize-metadata <TOKEN_ACCOUNT_ADDRESS> <NFT_NAMA> <NFT_SYMBOL> <JSON_FILE_URL>
metadata的<JSON_FILE_URL>模版:
{
"name": "UPChain Genesis NFT #001",
"symbol": "UPNFT",
"description": "这是 UPChain 生态系统的第一个 NFT 收藏品。代表着去中心化技术的创新精神和区块链世界的无限可能。",
"image": "https://raw.githubusercontent.com/lbc-team/hello_gill/refs/heads/main/metadata/nft_image.jpg",
"animation_url": "",
"external_url": "https://upchain.co",
"attributes": [
{
"trait_type": "Rarity",
"value": "Genesis"
},
{
"trait_type": "Collection",
"value": "UPChain Origins"
}
],
"properties": {
"category": "image",
"creators": [
{
"address": "6oLiQn73H8EWnbo5sSuFx1V4KNAasBgFP39puLR9Emaw",
"share": 100
}
]
},
"collection": {
"name": "UPChain Genesis Collection",
"family": "UPChain"
}
}
合约开发
Native开发
初始化项目
# 初始化可执行程序,用于写调用合约
cargo new --bin cli
# 初始化合约
cargo new --lib program
修改Cargo.toml配置文件
[package]
name = "program"
version = "0.1.0"
edition = "2024"
[dependencies]
solana-program = "3"
[lib]
crate-type = ["cdylib", "lib"]
编译SBF
cargo build-sbf
发布合约
solana program deploy target/deploy/program.so
Anchor开发
初始化项目
anchor init hello_world
编译合约
anchor build
部署合约
anchor deploy
测试合约
# 在手动启动solana-test-validator时,加skip-local-validator,防止再启动一次
anchor test --skip-local-validator










