项目简介
本项目是一个自动化脚本,用于帮助用户 批量领取空投(Airdrop)奖励。你只需准备好钱包地址列表,程序将依次检测每个地址是否符合领取条件,并自动发送领取请求,最后将领取成功的地址保存下来。
适用于以下场景:
技术栈与工具
💻 Node.js + Ethers.js (也可以用 Python/web3.py 版本)
🪙 支持 Ethereum/BSC/Arbitrum 等主流链
📝 使用 JSON 文件导入地址列表
📦 支持领取合约函数的批量调用
项目开发全流程
一、准备工作
-
安装依赖
mkdir airdrop-claimer && cd airdrop-claimer
npm init -y
npm install ethers dotenv
RPC_URL=https://arb-mainnet.g.alchemy.com/v2/xxx
PRIVATE_KEY=你用于领取的私钥(⚠️请注意安全)
CLAIM_CONTRACT=0xAirdrop合约地址
[
"0xabc123...",
"0xdef456...",
"0xghi789..."
]
二、合约 ABI 准备
假设空投合约有如下接口:
function claim(address recipient) external;
function hasClaimed(address user) external view returns (bool);
ABI 示例(保存为 abi.json):
[
{
"name": "claim",
"type": "function",
"stateMutability": "nonpayable",
"inputs": [{"name": "recipient", "type": "address"}],
"outputs": []
},
{
"name": "hasClaimed",
"type": "function",
"stateMutability": "view",
"inputs": [{"name": "user", "type": "address"}],
"outputs": [{"name": "", "type": "bool"}]
}
]
三、脚本逻辑说明
脚本流程:
-
读取地址列表
-
遍历每个地址,调用 hasClaimed(address) 判断是否已经领取
-
如果未领取,则调用 claim(address),由你的钱包负责支付 gas
-
等待交易成功后,记录成功领取的地址
四、完整脚本(claim.js)
require("dotenv").config();
const { ethers } = require("ethers");
const addresses = require("./addresses.json");
const abi = require("./abi.json");
const fs = require("fs");
const provider = new ethers.JsonRpcProvider(process.env.RPC_URL);
const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider);
const claimContract = new ethers.Contract(process.env.CLAIM_CONTRACT, abi, wallet);
const output = [];
async functionmain() {
console.log(`开始空投批量领取,总共 ${addresses.length} 个地址`);
for (let i = 0; i < addresses.length; i++) {
const addr = addresses[i];
try {
const claimed = await claimContract.hasClaimed(addr);
if (claimed) {
console.log(`[${i + 1}] 已领取:${addr}`);
continue;
}
const tx = await claimContract.claim(addr);
console.log(`[${i + 1}] 正在领取:${addr}, 交易哈希: ${tx.hash}`);
await tx.wait();
output.push(addr);
fs.writeFileSync("claimed.json", JSON.stringify(output, null, 2));
await sleep(3000); // 防止被 RPC 限制
} catch (err) {
console.error(`[${i + 1}] 出错地址:${addr},错误:${err.message}`);
}
}
console.log("✅ 批量领取完成!");
}
function sleep(ms) {
return new Promise((res) => setTimeout(res, ms));
}
main();
五、运行项目
node claim.js
运行后会输出每个地址领取情况,并将成功领取的地址保存在 claimed.json 中。
六、安全建议
私钥一定放在本地 .env 文件,不要上传到 GitHub
使用 RPC 时建议用备用节点,如 Alchemy、Ankr、Blast 等
最好先用小额钱包测试是否符合空投条件
七、可扩展方向
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
总结
通过本文,你已经学会了如何:
-
批量读取地址并判断空投状态
-
自动调用合约函数进行空投领取
-
优雅地处理错误与交易记录
-
构建自己的空投猎人工具
❝本公众号发布的内容除特别标明外版权归原作者所有。若涉及版权问题,请联系我们。所有信息及评论区内容仅供参考,请读者自行判断信息真伪,不构成任何投资建议。据此产生的任何损失,本公众号概不负责,亦不负任何法律责任。

