Solana[part5]_SPLToken合约简单实现

Solana[part5]_SPLToken合约简单实现

image-20250821144342655

实现Token项目

  1. 创建一个token项目

  2. token 项目依赖:

    [dependencies]
    borsh = "1.5.7"
    solana-program = "2.3.0"
    spl-associated-token-account = { version = "7.0.0", features = [
        "no-entrypoint",
    ] }
    spl-token = { version = "8.0.0", features = ["no-entrypoint"] }
    
    [lib]
    crate-type = ["cdylib", "lib"]
    
  3. 编写合约,具体代码见: https://github.com/SoniaChan33/token

  4. 起本地环境:➜ ~ solana-test-validator

  5. 打开log

    ➜  ~ solana logs
  6. 编译合约:

    ➜  token git:(master)cargo build-sbf
  7. 部署合约, 获取programID

    ➜  token git:(master) ✗ solana program deploy target/deploy/token.so
    Program Id: 5DPHC1PjRftRHJLKD4WSSXt83h1AChJy2pHXUqGdKD9X
    
    Signature: 29PquhXv5Jw9c8p6k3jGK9UoLATg5rUpk3Mx8BBiJK8vxNEcLru4t7xYn6EdxXVeivUP7urczzoQY3KSvgGbEdhR

核心文件

具体实现文档见仓库readme文档:https://github.com/SoniaChan33/token?tab=readme-ov-file#spl-token合约项目实现文档

processor.rs:核心业务逻辑,处理指令

state.rs:定义账户的状态和扩展字段

instruction.rs:定义各种代币操作的指令

oerror.rs:定义了程序可能抛出的错误

olib.rs:程序入口点,汇总各个模块。

实现调用方Cli

  1. 创建项目

  2. 编写:具体代码见:https://github.com/SoniaChan33/solana-cli

  3. 测试结果:

    running 1 test
    test test_fn ... ok
    
    successes:
    
    ---- test_fn stdout ----
    Mint Account: 54b3u3wmAzM7LdPpERfa3iZGjkbafaD5FQ3aXV8iRaQk
    Transaction result: zaWCinW8Kmjh6sQ3jRPcrntZ5yFWhuQM6GwWuGBJxCPPRJUiEcVRC1hKtaw1TSGZ5QB3nnEqBPieG3HzCvuEv5A
    Token created successfully with mint account: 54b3u3wmAzM7LdPpERfa3iZGjkbafaD5FQ3aXV8iRaQk
    
    
    successes:
        test_fn