:2026-02-17 19:45 点击:1
在Solana生态中,SPL代币(基于Solana区块链的标准化代币)已成为项目方、创作者和社区的重要工具,无论是社区治理代币、NFT配套代币,还是实用型代币,SPL代币的铸造流程已逐渐成熟,本文将为你提供一份从零开始的Sol链发币详细教程,涵盖工具准备、代码编写、测试网验证到主网上线的全流程,助你轻松掌握SPL代币铸造。
在开始铸造SPL代币前,需先准备好以下核心工具与环境,确保后续流程顺畅:
11111111111111111111111111111112),后续用于接收代币和查看余额。 为了避免在主网浪费真实SOL,建议先在Solana测试网(Testnet) 进行测试,测试网SOL可通过以下方式免费获取:
sh -c "$(curl -sSf https://release.solana.com/stable/install)"
安装后重启终端,验证是否安装成功:solana --version(显示版本号即成功)。
根据测试环境,配置Solana CLI连接到对应网络(测试网/主网):
# 测试网配置 solana config set --url https://api.testnet.solana.com # 主网配置(正式发币时使用) solana config set --url https://api.mainnet-beta.solana.com
配置后,可通过 solana config get 查看当前网络设置。
SPL代币的创建主要有两种方式:通过代码自定义生成(适合需要深度定制代币参数的项目方)和借助工具化平台(适合新手,无需编写代码),以下是两种方式的详细步骤:
mkdir solana-token && cd solana-token npm init -y # 初始化package.json npm install @solana/web3.js @solana/spl-token # 安装Solana Web3.js和SPL代币库
在项目目录下创建 createToken.js 文件,编写以下代码:
const {
Connection,
PublicKey,
Keypair,
Transaction,
SystemProgram,
LAMPORTS_PER_SOL,
} = require("@solana/web3.js");
const {
getOrCreateAssociatedTokenAccount,
transfer,
TOKEN_PROGRAM_ID,
createMint,
mintTo,
getMint,
} = require("@solana/spl-token");
const bs58 = require("bs58"); // 用于Base58编码/解码
// 1. 连接Solana网络(测试网)
const connection = new Connection("https://api.testnet.solana.com", "confirmed");
// 2. 创建代币mint账户(由Keypair控制,即代币的“铸造权限”)
const mintKeypair = Keypair.generate();
console.log("代币Mint地址:", mintKeypair.publicKey.toBase58());
// 3. 创建者钱包(需持有测试网SOL,用于支付租金)
const creator = Keypair.generate(); // 实际使用时替换为你的钱包私钥
console.log("创建者钱包地址:", creator.publicKey.toBase58());
// 4. 空投测试网SOL到创建者钱包(若已有SOL可跳过)
(async () => {
try {
const airdropSignature = await connection.requestAirdrop(
creator.publicKey,
2 * LAMPORTS_PER_SOL // 空投2 SOL测试网币
);
await connection.confirmTransaction(airdropSignature);
console.log("空投测试网SOL成功!");
} catch (err) {
console.error("空投失败:", err);
}
})();
// 5. 创建代币(支付租金,当前测试网租金约0.00000909 SOL)
(async () => {
try {
const mint = await createMint(
connection,
creator, // 支付租金的账户
creator.publicKey, // 代币权限(可设置为null实现“无权限”,后续无法增发)
creator.publicKey, // 冻结权限(可设置为null实现“无冻结”)
9 // 代币精度(小数位数,9即支持0.000000001单位)
);
console.log("代币创建成功!Mint地址:", mint.toBase58());
console.log("代币名称(需手动设置): MyToken");
console.log("代币符号(需手动设置): MTN");
} catch (err) {
console.error("代币创建失败:", err);
}
})();
在终端执行脚本:
node createToken.js
运行后,终端会输出:
9,表示代币支持9位小数(如1代币=1,000,000,000个最小单位)。 若需向自己或他人的钱包铸造代币,可在脚本中添加以下代码(续接在createMint之后):
// 6. 获取接收代币的钱包地址(替换为你的测试网钱包地址) const receiver = new PublicKey("替换为接收者钱包地址"); // 7. 创建关联代币账户(若不存在) const receiverTokenAccount = await getOrCreateAssociatedTokenAccount( connection, creator, mint, receiver ); // 8. 铸造代币(数量:1亿代币,精度9,则实际铸造1亿*10^9=1e17最小单位) const mintAmount = 1e17; await mintTo( connection, creator, mint, receiverTokenAccount.address, creator, mintAmount ); console.log(`成功铸造 ${mintAmount / 1e9} 代币到 ${receiver.toBase58()}`);
运行后,可在Phantom钱包的“测试网”网络中查看代币(需手动添加代币,输入Mint地址)。
若不想编写代码,可使用第三方工具快速创建SPL代币,推荐以下平台:
本文由用户投稿上传,若侵权请提供版权资料并联系删除!