:2026-06-07 20:33 点击:1
Solana(SOL)凭借其极高的交易速度、低廉的手续费和强大的可扩展性,已成为区块链领域备受关注的公链之一,许多开发者和项目方都希望能在Solana上发行自己的代币,以构建去中心化应用(DApp)、社区代币或NFT等,本文将为你提供一份详细的Solana公链发币教程,带你从零开始,一步步铸造你的第一个Solana代币。
为什么选择在Solana上发币?
在开始教程之前,我们先简要了解一下Solana作为发币平台的优势:
发币前的准备工作
在动手之前,请确保你已经准备好以下事项:
Solana发币教程(以使用SPL Token Program为例)
Solana上最常见、最标准的代币发行方式是使用其内置的SPL Token Program,这类似于以太坊上的ERC-20标准,我们可以通过命令行工具@solana/web3.js和@solana/spl-token来完成。
步骤1:环境搭建
mkdir solana-token-mint cd solana-token-mint npm init -y
npm install @solana/web3.js @solana/spl-token
步骤2:编写代币铸造脚本
创建脚本文件:在项目目录下创建一个名为mint-token.js的文件。
编写代码:以下是一个完整的mint-token.js示例,包含注释说明:
const {
Connection,
PublicKey,
Keypair,
Transaction,
SystemProgram,
LAMPORTS_PER_SOL,
} = require('@solana/web3.js');
const {
getOrCreateAssociatedTokenAccount,
transfer,
TOKEN_PROGRAM_ID,
createMint,
getMint,
mintTo,
} = require('@solana/spl-token');
// 1. 配置连接网络 (主网或测试网)
// 主网RPC: https://api.mainnet-beta.solana.com
// 测试网RPC (建议先在测试网测试): https://api.devnet.solana.com
const connection = new Connection('https://api.devnet.solana.com', 'confirmed');
// 2. 设置你的钱包(代币铸造者)私钥
// 注意:实际项目中不要硬编码私钥,应从安全的环境变量或密钥管理系统中读取
// 这里为了演示,我们生成一个新的Keypair,你需要替换成你自己的钱包私钥Uint8Array
// const payerSecretKey = Uint8Array.from([你的私钥数组...]);
// const payer = Keypair.fromSecretKey(payerSecretKey);
// 为了方便演示,我们生成一个新的keypair,请务必保存好它的私钥!
const payer = Keypair.generate();
console.log('Payer public key:', payer.publicKey.toString());
// 3. 代币信息
const tokenName = 'My Awesome Token';
const tokenSymbol = 'MAT';
const tokenDecimals = 9; // SPL Token标准小数位数通常为9
const tokenTotalSupply = 1000000000 * 10 ** tokenDecimals; // 总供应量,例如10亿,考虑小数位数
// 4. 铸造代币
const createAndMintToken = async () => {
try {
// a. 请求空投测试网SOL (如果是在测试网且SOL不足)
const airdropSignature = await connection.requestAirdrop(
payer.publicKey,
2 * LAMPORTS_PER_SOL // 请求2个测试网SOL
);
console.log('Airdrop signature:', airdropSignature);
await connection.confirmTransaction(airdropSignature);
// b. 创建新的代币Mint
const mint = await createMint(
connection,
payer,
payer.publicKey, // 代币拥有者/冻结 authority (可选,这里设为铸造者)
payer.publicKey, // 代币冻结 authority (可选,这里设为铸造者)
tokenDecimals
);
console.log('Token Mint created:', mint.toString());
// c. 获取或创建代币关联账户 (Token Account)
// 这是代币持有者的“钱包地址”,用于接收和存储代币
const tokenAccount = await getOrCreateAssociatedTokenAccount(
connection,
payer,
mint,
payer.publicKey // 接收代币的账户所有者 (这里先给自己铸造)
);
console.log('Token Account created:', tokenAccount.address.toString());
// d. 铸造代币到关联账户
const mintSignature = await mintTo(
connection,
payer,
mint,
tokenAccount.address,
payer.publicKey, // 授权铸造的 authority (与创建Mint时设置的拥有者一致)
tokenTotalSupply
);
console.log('Mint signature:', mintSignature);
await connection.confirmTransaction(mintSignature);
console.log(`成功铸造 ${tokenTotalSupply / 10 ** tokenDecimals} ${tokenSymbol} 代币到账户 ${payer.publicKey.toString()}`);
// e. (可选) 查询代币信息
const mintInfo = await getMint(connection, mint);
console.log('代币信息:', {
mint: mint.toString(),
supply: mintInfo.supply.toString(),
decimals: mintInfo.decimals,
mintAuthority: mintInfo.mintAuthority?.toString(),
freezeAuthority: mintInfo.freezeAuthority?.toString(),
});
} catch (error) {
console.error('铸造代币时出错:', error);
}
};
createAndMintToken();
步骤3:运行脚本
payer私钥)有足够的SOL支付手续费。node mint-token.js
代币的后续管理与分发
transfer函数将代币转移到其他用户的钱包地址,这需要先为接收方创建或获取其代币关联账户。@solana/spl-token-metadata这样的库来创建和关联元数据,或者使用第三方服务如Solscan、SolanaFM等提交元数据(可能需要费用),这通常涉及到一个额外的元数据账户。本文由用户投稿上传,若侵权请提供版权资料并联系删除!