前言
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;?dorecipient=$(echo?$line?|?awk?'{print?$1}')amount=$(echo?$line?|?awk?'{print?$2}')spl-token?transfer?--fund-recipient?\--from?$FROM_KEYPAIR?\$TOKEN_MINT?$amount?$recipientsleep?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傳輸單元內。因此每一批轉賬數量需要有所限制。