一文说透,如何在solana上铸造spl-token

  • Louis
  • 发布于 23小时前
  • 阅读 143

本文将详细的介绍如何一步步通过solana自带的脚手架工具生成SPL Token


theme: channing-cyan

大家好,感谢你们点开这篇文章!如果有兴趣,欢迎关注我的 GitHub,里面有一些我的小项目和代码,水平有限,还请多多指教!

基本概念:什么是 solana 上 spl-token

在 Solana 区块链上,SPL Token 是基于 Solana Program Library(SPL,Solana 程序库)实现的代币标准。它类似于以太坊上的 ERC-20 代币,但专为 Solana 的高性能架构设计,用于创建和管理自定义代币。SPL Token 是 Solana 生态中最常用的代币类型,广泛应用于去中心化金融(DeFi)、NFT、游戏等领域。

SPL Token 是由 Solana 提供的 Token Program(一个预编译的程序,主网的地址为 TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA)管理的代币。可以通过<https://solscan.io/account/TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA> 这个链接查看

WX20250326-143956@2x.png

它允许用户:

  • 创建新的代币(类似 ERC-20 的代币发行)
  • 转移代币
  • 管理代币的供应量和权限

与以太坊的智能合约模型不同,SPL Token 不需要开发者编写和部署独立的合约,而是通过与 Token Program 交互来实现代币功能。

通过 solana cli 配置环境

要想使用 spl-token cli 这个命令行工具,我们首先需要进行一些前置的开发环境安装:

官方手册

开发环境快速安装:

在 Mac 和 Linux 上,运行单个命令即可安装所有依赖项:

curl --proto '=https' --tlsv1.2 -sSfL https://solana-install.solana.workers.dev | bash

Windows 用户:必须首先安装 WSL(请参阅安装依赖项 )。然后在 Ubuntu(Linux)终端中运行上述命令。

安装完毕后,应该会看到如下信息输出:

Installed Versions:
Rust: rustc 1.85.0 (4d91de4e4 2025-02-17)
Solana CLI: solana-cli 2.1.14 (src:3ad46824; feat:3271415109, client:Agave)
Anchor CLI: anchor-cli 0.30.1
Node.js: v23.8.0
Yarn: 1.22.1

从上面输出的信息可以看到,我们的 Solana CLI 已经安装完成,那么 spl-token cli 这个工具也就可以使用了。

设置网络环境:

solana 的网络环境分为:开发者网络、测试网络、主网 三类,官方的 RPC 地址分别是:

DevNet: https://api.devnet.solana.com\ TestNet: https://api.testnet.solana.com\ MainNet: https://api.mainnet-beta.solana.com

本篇文章,我们使用的环境是DevNet,因为这个环境比本地网络更加真实,测试代币业容易申请。方便我们演示整个流程。

1、查看当前的环境配置:

➜  ~ solana config get

<!---->

Config File: /Users/louis/.config/solana/cli/config.yml
RPC URL: https://api.mainnet-beta.solana.com
WebSocket URL: wss://api.mainnet-beta.solana.com/ (computed)
Keypair Path: /Users/louis/.config/solana/id.json
Commitment: confirmed

从上面的终端信息可以看出来,默认 solana-cli 工具连接的网络是主网,我们需要切换为DevNet

2、切换网络:

solana config set --url https://api.devnet.solana.com

<!---->

Config File: /Users/louis/.config/solana/cli/config.yml
RPC URL: https://api.devnet.solana.com
WebSocket URL: wss://api.devnet.solana.com/ (computed)
Keypair Path: /Users/louis/.config/solana/id.json
Commitment: confirmed

从上面输出的信息可以看到,我们网络环境,已经切换到了 DevNet。如果你不放心,可以再执行一次:solana config get 命令,看看环境是否已经切换成功。

密钥生成、测试代币领取:

1、生成密钥对:

我们需要一个有 sol 测试代币的账户,来进行整个流程,因为铸造 SPL Token 本质上来说是交易,我们需要用这个账户来付费。

➜  ~ solana-keygen new --force

<!---->

Generating a new keypair

For added security, enter a BIP39 passphrase

NOTE! This passphrase improves security of the recovery seed phrase NOT the
keypair file itself, which is stored as insecure plain text

BIP39 Passphrase (empty for none):

上面交互命令提示我们可以输入一个助记词的短语来增强密钥的安全性,因为我们是测试地址,所以,这里填写空就可以,直接回车。

Wrote new keypair to /Users/louis/.config/solana/id.json
==============================================================================
pubkey: 71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx
==============================================================================
Save this seed phrase and your BIP39 passphrase to recover your new keypair:
grass leo meadow mesh apple lucky new zoo install fluid welcome another
==============================================================================

命令行输出了信息告诉你密钥存放的目录,地址是:71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx,还把相应的助记词打印出来了,这个助记词最好保存一下,以后恢复钱包的时候用的到。

2、查看刚刚生成的公钥地址:

~ solana-keygen pubkey
71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx

命令行输出刚刚创建的地址,说明我们的操作很成功。我们可以用 solana address 来查看当前钱包的地址:

solana address

71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx

因为我们目前只生成了一个钱包,所以输出的地址和上面的一致。

3、去水龙头申请测试代币:

➜  ~ solana airdrop 5
Requesting airdrop of 5 SOL

Signature: 4Gh6hphdQNNaDchuC5rwuSR3kLhdZ9q29bj9A3FTXVQhgY3C7GjwkK9Jb9wK9bkPRwa78wG1wuEyRMqXsyLvmGNa

5 SOL

4、查看当前钱包地址余额,看看有没有领取成功

➜  ~ solana balance 71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx
5 SOL

5、查看账户信息:

➜  ~  solana account 71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx

Public Key: 71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx
Balance: 5 SOL
Owner: 11111111111111111111111111111111 // 系统地址
Executable: false // 并非可执行的
Rent Epoch: 18446744073709551615

通过 spl-token cli 创建 SPL Token

创建代币:

准备工作做了这么多,终于到了创建代币的步骤:

使用 spl-token -hspl-token create-token -h 查看我们创建 Token 的选项,这里就不全列出来了,读者可自行查看。

spl-token -h

假设我们想要创建一个 6 位小数精度的 Token,命令如下:

➜  ~ spl-token create-token --decimals 6
Creating token XoHuoMGhJh8X7yF1BLCvYyK4huNvSTSXJSK4jZrCWmZ under program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA

Address:  XoHuoMGhJh8X7yF1BLCvYyK4huNvSTSXJSK4jZrCWmZ
Decimals:  6

Signature: 5CDK2sMoRkaPLDTnZhGVvpnrewTAACXeosqNGYFHRagWX3mJDbdEPdsurnN4qDVYLtTCkqtBzuYdiqWH8GTy6h3t

如果不传 --decimals 代币精度就是默认的 9。

其中Address 就是我们自己创建的 是 token mint 地址,相当于以太坊的代币合约地址。

执行 mint 操作:

铸造代币,肯定会用到 spl-token mint 命令,我们为 71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx 这个自己的地址,铸造 1000000 个代币:

spl-token mint XoHuoMGhJh8X7yF1BLCvYyK4huNvSTSXJSK4jZrCWmZ 1000000 71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx

报错了:

Error: "Account 71E6vbP88ChQEaq17aF5vkoCvyGeANUYhrn7SLYSpuQx is owned by 11111111111111111111111111111111, not configured program id TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"

这里需要引申一个知识点:

在 Solana 中,一个账户还需要有专门的 token account 去存相应的代币,并且一个 token account 只存一种 token。所以,我们需要先给我们的...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Louis
Louis
web3 developer,技术交流或者有工作机会可加VX: magicalLouis