Skip to content

Febiil/nft-mint-bot-dev

Repository files navigation

NFT Mint Bot (Dev)

Universal NFT mint bot - modular, multi-wallet, multi-platform. Built for daily use on VPS or local.

Features

  • Multi-wallet - parallel execution with configurable concurrency limit
  • Multi-platform - auto-detect SeaDrop, Zora, Manifold, Thirdweb, or use custom
  • Gas strategies - auto/fixed/aggressive with EIP-1559 support
  • Timed mint - wait for exact mint time, then fire
  • Simulation - staticCall before sending to avoid wasted gas
  • Retry - exponential backoff per wallet (isolated)
  • Dry run - test full flow without sending tx
  • Logging - per-wallet isolated logs + console pretty print
  • Lightweight - 4 dependencies, runs on $5 VPS

Architecture

nft-mint-bot-dev/
├── index.js              # Entry point
├── setup.js              # First-time setup script
├── core/
│   └── index.js          # App lifecycle, validation, shutdown
├── config/
│   └── index.js          # Env loading, config object
├── logger/
│   └── index.js          # Pino logger (console + file)
├── wallet/
│   └── index.js          # Multi-wallet manager, parallel exec
├── adapters/
│   ├── base.js           # BaseAdapter abstract class
│   ├── seadrop.js        # OpenSea SeaDrop
│   ├── zora.js           # Zora Creator
│   ├── manifold.js       # Manifold
│   ├── thirdweb.js       # Thirdweb Drop
│   ├── custom.js         # Custom (fallback)
│   └── index.js          # Platform detection registry
├── tx/
│   └── index.js          # Gas strategy, simulate, send
├── checker/
│   └── index.js          # Pre-mint checks & eligibility
├── mint-engine/
│   └── index.js          # Orchestrator
├── utils/
│   └── index.js          # Helpers (retry, sleep, encoding)
├── .env.example
├── .collection.env.example
└── logs/                 # Auto-created log files

Quick Start

Requirements

  • Node.js >= 18
  • npm

Installation

# Clone
git clone https://github.com/Febiil/nft-mint-bot-dev.git
cd nft-mint-bot-dev

# Auto setup (install deps + create env files)
node setup.js

Configuration

1. Edit .env - Global settings:

RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY
PRIVATE_KEYS=0xkey1,0xkey2,0xkey3
MAX_PARALLEL_WALLETS=3
GAS_STRATEGY=auto

2. Edit .collection.env - Per-collection (overrides .env):

CONTRACT_ADDRESS=0xYourNFTContract
MINT_FUNCTION=mint(uint256)
MINT_ARGS=1
MINT_PRICE=0.005
MINT_QUANTITY=1
PLATFORM=auto

Run

# Normal run
node index.js

# Dry run (no real transactions)
# Set DRY_RUN=true in .env, then:
node index.js

Platform Support

Platform Auto-Detect Status
SeaDrop (OpenSea) Yes Ready
Zora Creator Yes Ready
Manifold Yes Ready
Thirdweb Drop Yes Ready
Custom (any) Fallback Ready

Custom Adapter

For contracts not matching any known platform, set:

PLATFORM=custom
MINT_FUNCTION=yourMintFunction(address,uint256)
MINT_ARGS={wallet},1

{wallet} is replaced with the sender address at runtime.

Gas Strategies

Strategy Description
auto Network suggestion * GAS_MULTIPLIER (default 1.2x)
fixed Use exact MAX_FEE_PER_GAS and MAX_PRIORITY_FEE
aggressive 2x current base fee

Multi-Wallet

  • Add multiple private keys comma-separated in PRIVATE_KEYS
  • MAX_PARALLEL_WALLETS controls concurrency (default: 3)
  • Each wallet has isolated retry and logging
  • Lightweight enough for VPS with many wallets

Timed Mint

Set MINT_TIME in .collection.env:

# ISO format
MINT_TIME=2024-06-01T18:00:00Z

# Or unix timestamp (seconds)
MINT_TIME=1717264800

Bot will wait until the exact time, then fire all wallets.

Safety Features

  • Simulation (staticCall) before every transaction
  • Balance check before minting
  • Contract existence verification
  • Dry run mode for testing
  • Graceful shutdown (SIGINT/SIGTERM)
  • No obfuscated code
  • No transfer/sweep/drain functions
  • Private keys stay local only

Install Guide

Windows

# Install Node.js from https://nodejs.org (LTS)
# Open PowerShell/CMD:
git clone https://github.com/Febiil/nft-mint-bot-dev.git
cd nft-mint-bot-dev
node setup.js
# Edit .env and .collection.env
node index.js

Linux VPS (Ubuntu/Debian)

# Install Node.js 20.x
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs git

# Clone and setup
git clone https://github.com/Febiil/nft-mint-bot-dev.git
cd nft-mint-bot-dev
node setup.js

# Edit configs
nano .env
nano .collection.env

# Run (or use pm2/screen for persistent)
node index.js

# Optional: run with pm2
npm install -g pm2
pm2 start index.js --name mint-bot
pm2 logs mint-bot

Running in Background (VPS)

# Using screen
screen -S mintbot
node index.js
# Ctrl+A, D to detach

# Using pm2
pm2 start index.js --name mint-bot
pm2 save

Dependencies

Only 4 trusted packages:

Package Purpose
ethers ^6.13 Ethereum interaction
dotenv ^16.4 Environment variables
pino ^8.19 Fast JSON logger
pino-pretty ^10.3 Console formatting

Development

# Debug mode
LOG_LEVEL=debug node index.js

# Test with dry run
DRY_RUN=true node index.js

# Check single collection
node -e "require('./checker').quickCheck(require('./wallet').getWalletManager().getProvider()).then(console.log)"

License

MIT

About

Multi-wallet NFT mint automation framework supporting SeaDrop, Zora, Manifold and custom Ethereum contracts.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors