Solana开发

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
作者: Hountry_Liu
本文采用 CC BY-NC-SA 4.0 协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇