分享 Solana 批量转账教程:提高代币持有地址和生态用户空投代币

gtokentool · 2025年05月07日 · 16 次阅读

前言 Solana 区块链因其高吞吐量和低交易费用成为批量操作(如空投)的理想选择。本教程将介绍几种在 Solana 上进行批量转账的方法,帮助您高效地向多个地址空投代币。

solana 账户模型 在 Solana 中有三类账户: 数据账户,用来存储数据 程序账户,用来存储可执行程序 原生账户,指 Solana 上的原生程序,例如”System”,”Stake”,以及”Vote”。 数据账户又分为两类:

系统所有账户 程序派生账户(PDA) 我们通常使用的钱包地址属于数据帐户中的系统所有帐户,我们可以通过自己私钥签名,系统验证签名是否正确,签名正确就可以访问账户,比如转账,调用合约。

solana 账户租金 solana 经济模型中,建立代币账户需要给向链支付一定的租金,用户也可以关闭自己地址下的某个代币账户来回收租金,回收时需要注意代币资产为 0,不然会损失资产。

当一个 solana 地址在接受某个代币时,地址下面必须有创建好的 代币账户,用来存储代币信息、余额等资料。如果接收方没有,发送发可以为接收方建立一个代币账户。

Solana 上的租金存储费用为每字节 0.00000348 SOL,钱包数据大小为 586 字节,需要支付租金 0.002 SOL 左右。

方法一:使用 Solana CLI 工具 准备工作 1.安装 Solana CLI 工具

sh -c "$(curl -sSfL https://release.solana.com/stable/install)" 2.配置钱包

solana config set --url https://api.mainnet-beta.solana.com solana config set --keypair ~/.config/solana/id.json 批量转账脚本 #!/bin/bash

接收地址文件格式:每行一个地址和金额,用空格分隔

INPUT_FILE="recipients.txt" FROM_KEYPAIR="~/.config/solana/id.json" TOKEN_MINT="代币的 MINT 地址" while read -r line; do recipient=$(echo $line | awk '{print $1}') amount=$(echo $line | awk '{print $2}')

spl-token transfer --fund-recipient \ --from $FROM_KEYPAIR \ $TOKEN_MINT $amount $recipient

sleep 1 # 避免速率限制 done < "$INPUT_FILE" 方法二:使用 JavaScript SDK 安装依赖 npm install @solana/web3.js @solana/spl-token 批量转账代码示例 const { Connection, Keypair, PublicKey } = require('@solana/web3.js'); const { Token, TOKEN_PROGRAM_ID } = require('@solana/spl-token'); const connection = new Connection('https://api.mainnet-beta.solana.com'); const fromWallet = Keypair.fromSecretKey(Uint8Array.from(/* 你的私钥 */)); const tokenMint = new PublicKey('代币 MINT 地址'); async function bulkTransfer() { const token = new Token(connection, tokenMint, TOKEN_PROGRAM_ID, fromWallet); const fromTokenAccount = await token.getOrCreateAssociatedAccountInfo(fromWallet.publicKey);

const recipients = [ { address: '地址 1', amount: 100 }, { address: '地址 2', amount: 200 }, // 更多地址... ]; for (const recipient of recipients) { try { const toPublicKey = new PublicKey(recipient.address); const toTokenAccount = await token.getOrCreateAssociatedAccountInfo(toPublicKey);

const transactionId = await token.transfer( fromTokenAccount.address, toTokenAccount.address, fromWallet, [], recipient.amount );

console.log(Transferred ${recipient.amount} to ${recipient.address}: ${transactionId}); await new Promise(resolve => setTimeout(resolve, 500)); // 延迟避免速率限制 } catch (error) { console.error(Error transferring to ${recipient.address}:, error); } } } bulkTransfer(); 方法三:使用第三方工具 GTokenTool 批量转账空投工具 — 具有自动去重功能,市面上最好用的批量转账/空投工具。

下面详细的介绍如何无编程的使用工具来进行批量转账,SlerfTools 是全网最便宜、快速、便捷的 Solana 一键工具箱,支持发币、创建 openbook 市场 ID、创建 Raydium 流动性、移除流动性、批量交易等。

1、首先打开 GTokenTool 批量转账页面:

2、链接钱包后,填入代币地址和收款地址列表,收款地址列表也可以通过上传文件来完成。

3、点击发送交易后,转账成功:

需要注意的是,GTokenTool 为了节省上链费用和加快上链速度,每一批转账都是汇总在一笔交易里面。由于 Solana 为了加快节点之间数据传输速度,每一笔交易都限制在 1232 个字节内,其大小限制在 ipv6 一个 MTU 传输单元内。因此每一批转账数量需要有所限制。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号