# 使用批量钱包打ETH铭文 **Published by:** [LLindon](https://paragraph.com/@llindon/) **Published on:** 2023-07-26 **URL:** https://paragraph.com/@llindon/eth ## Content Ethscript火了有一段时间了,相对于其他域名,比如说BRC20、LTC20,使用metamask插件钱包总需要一个一个打,还要提前把想要打的数据转换为十六进制,速度很慢,对于一些需要抢速度的项目来说,完全没有优势。所以我写了一个使用JS打ethscript的脚本,可以使用多个钱包,每个钱包自定义打多少张。 使用方法 在桌面上建立两个excel文件,一个wallet.xlsx,在A列储存钱包私钥,每个钱包提前存好一定量的eth。另外一个命名为data.xlsx,在A列输入自己想要打的铭文,每行一个。运行JS代码,会批量让这些钱包顺序打这些铭文。(批量钱包的原因主要是在于有些铭文对每个钱包打的数量有限制) 下面是代码import { ethers } from "ethers"; import xlsx from "xlsx"; //链接网络 const ETH_URL = '去Infura.io申请API'; const provider = new ethers.JsonRpcProvider(ETH_URL); //****参数设定****** // 需要几个钱包 const numWallet = 5 // 单个钱包打的铭文数量 const N = 10; // 计数器 let K = 0; let m = 0; // 给自己发送的数额和每个钱包需要的最小金额计算 const value = ethers.parseEther("0"); const balanceThreshold = ethers.formatEther(ethers.parseEther("0.01")); //1.读取data数据 // 读取 Excel 文件 const workbook = xlsx.readFile('C:/Users/yelin/Desktop/data.xlsx'); // 获取第一个 worksheet const worksheet = workbook.Sheets[workbook.SheetNames[0]]; // 定义结果数组 let dataArray = []; // 遍历每一行 for (let row in worksheet) { // 如果是 A 列 if (row[0] === 'A') { // 获取单元格的值 let value = worksheet[row].v; // 转为字符串存入结果数组 dataArray.push(String(value)); } } //2.读取wallet // 读取 Excel 文件 const workbook1 = xlsx.readFile('C:/Users/yelin/Desktop/wallet.xlsx'); const sheet = workbook1.Sheets[workbook1.SheetNames[0]]; // 存储生成的钱包 const wallets = []; // 遍历每一行 for (let row in sheet) { // 检查是否为 A 列 if(row[0] === 'A') { // 读取单元格的值作为私钥 let privateKey = sheet[row].v; // 创建新钱包 let wallet = new ethers.Wallet(privateKey,provider); // 添加到数组 wallets.push(wallet); m++; console.log(`第${m}个钱包,钱包地址为${wallet.address}`); } } // 3. 为每个钱包生成交易 for (let i = 0; i < numWallet; i++) { // 获取钱包余额 const balance = await provider.getBalance(wallets[i]) if(ethers.formatEther(balance) < balanceThreshold) { console.log(`钱包 ${i+1}:${wallets[i].address} 余额不足,跳过`); continue; } const to = wallets[i].address; const nonce = await provider.getTransactionCount(to); for (let j = 0; j < N; j++) { const bytes = Buffer.from(dataArray[K]); const data = ethers.hexlify(bytes); const tx = { to: to, nonce: nonce+j, value: ethers.parseEther("0"), data:data, } // 发送交易 console.log(`\n等待交易在区块链确认`) await wallets[i].sendTransaction(tx); K++; console.log(`第${i+1}个钱包${to}的第${K}笔交易已经完成`) } } ## Publication Information - [LLindon](https://paragraph.com/@llindon/): Publication homepage - [All Posts](https://paragraph.com/@llindon/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@llindon): Subscribe to updates