This Python script automates airdropping EVR (Evrmore cryptocurrency) to addresses holding the SATORI
asset on the Evrmore blockchain. It uses the Evrmore node's RPC interface to fetch holders, check balances, and send transactions in batches, with features like concurrency, error retries, and progress persistence.
- Batch Processing: Processes addresses in configurable batches for balance checks and transactions.
- Concurrency: Uses
ThreadPoolExecutor
for parallel execution to speed up operations. - Error Handling: Retries failed RPC calls and handles mempool limits with configurable retry logic.
- Progress Persistence: Saves processed addresses to
airdrop_progress.json
to resume after interruptions. - Logging: Detailed logging for monitoring and debugging.
- Configurable: Adjustable parameters via
config.py
or.env
file.
- Python 3.6+
- Evrmore node with RPC access
- Dependencies:
requests
,python-dotenv
- Set Up a Virtual Environment (Optional but recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install Dependencies
pip install requests python-dotenv
- Configure the Environment Create a .env file in the root directory with your Evrmore node RPC details:
RPC_URL=http://your-node-ip:8766
RPC_USER=your-rpc-username
RPC_PASS=your-rpc-password
-
Edit Configuration (Optional) Modify config.py or .env to adjust airdrop amount, batch sizes, pause times, etc.
-
Run the Script
python main.py
Output is logged to the console. Redirect to a file if desired:
python main.py > airdrop.log
3. Monitor Progress
- Check airdrop_progress.json for processed addresses.
- The script resumes from the last saved state if interrupted.
All configurable parameters are in config.py and can be overridden in .env:
SATORI_ASSET_NAME: Asset to filter holders (default: "SATORI")
TEST_AIRDROP_AMOUNT: Amount of EVR to airdrop per address (default: 0.1)
BALANCE_CHECK_BATCH_SIZE: Addresses per balance check batch (default: 10000)
TX_PROCESSING_BATCH_SIZE: Addresses per transaction batch (default: 300)
BALANCE_CHECK_PAUSE_TIME: Pause between balance batches (seconds, default: 30)
TX_PROCESSING_PAUSE_TIME: Pause between transaction batches (seconds, default: 120)
MAX_WORKERS: Max concurrent threads (default: 40, capped by CPU count)
MAX_RETRIES: Max retries for failed operations (default: 5)
Notes
Ensure your wallet has sufficient EVR (e.g., 4,000+ EVR for 40,000 addresses at 0.1 EVR each, plus fees).
Adjust batch sizes and pauses based on your node's capacity to avoid overloading.
Delete airdrop_progress.json to start a fresh airdrop.