(\ (\
(-.-) ── R A B B I T ──
o_(")(")
Rabbit is a high-performance, real-time cryptocurrency sweeping bot designed for security-critical operations on Ethereum mainnet. The system monitors hot wallets for incoming assets and automatically transfers them to cold storage destinations with optimal gas efficiency and MEV protection.
Rabbit automates the secure transfer of ERC-20 tokens and ETH, minimizing exposure of funds in hot wallets. It is designed for organizations and individuals requiring high-frequency, low-latency asset sweeping with robust gas management and fault tolerance. The bot prioritizes security, efficiency, and configurability, making it suitable for production environments where asset protection and operational continuity are paramount.
- Real-time Asset Detection: WebSocket-based monitoring of ERC-20 transfers and ETH deposits
- Intelligent Gas Optimization: EIP-1559 compliant gas management with dynamic fee adjustment
- Batch Transaction Processing: Parallel transaction construction and sequential broadcast
- MEV-Resistant Execution: Aggressive gas pricing modes for front-running protection
- Multi-Token Support: Configurable token priority with balance-aware sweeping
- Fail-Safe Mechanisms: Comprehensive error handling and dust threshold management
node index.js \
--alchemy-api-key YOUR_ALCHEMY_KEY \
--wallet-sweep 0xHOT_WALLET_ADDRESS \
--wallet-dest 0xCOLD_WALLET_ADDRESS \
--private-key 0xPRIVATE_KEY_HEXnode index.js \
--alchemy-api-key $ALCHEMY_KEY \
--wallet-sweep 0x1234567890123456789012345678901234567890 \
--wallet-dest 0x0987654321098765432109876543210987654321 \
--private-key 0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890 \
--max-gas-price 150 \
--aggressive-capSecurity note: Supplying a private key on the command line exposes it in your shell history and in ps output. Prefer setting it via an environment variable (recommended) or a secrets vault.
| Parameter | Type | Required | Description |
|---|---|---|---|
--alchemy-api-key |
string | Yes | Alchemy API key for Ethereum mainnet access |
--wallet-sweep |
string | Yes | Source wallet address to monitor and sweep |
--wallet-dest |
string | Yes | Destination cold wallet address |
--private-key |
string | Yes | Hot wallet private key (hex format) |
--max-gas-price |
number | No | Gas price ceiling in gwei (default: 800) |
--aggressive-cap |
boolean | No | Enable automatic gas cap adjustment |
The bot employs a event-driven architecture with three primary monitoring channels:
- Pending Transaction Listener - Detects incoming ETH transfers to hot wallet
- ERC-20 Transfer Monitor - Captures token deposits via log subscription
- Mined Transaction Tracker - Handles confirmation and reorg scenarios
Rabbit implements a sophisticated gas pricing strategy:
maxFeePerGas = min(3 × baseFee + priorityFee, userCap) × 1.02
- Base Fee Analysis: Real-time block base fee monitoring
- Priority Fee Calculation: Dynamic tip computation (12% of base fee, capped at 1.1 gwei)
- Aggressive Mode: Automatic cap bumping (+4%) when network congestion exceeds limits
- Safety Buffer: 2% overhead on final gas calculations
Edit config/tokens.js to define sweep priorities:
export const ERC20_TOKENS = Object.freeze([
["WLFI", "0xdA5e1988097297dCdc1f90D4dFE7909e847CBeF6"],
["USD1", "0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d"],
["USDC", "0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],
]);Customize gas limits in config/gas.js:
export const MAX_GAS_GWEI = 800; // Network spike ceiling
export const DUST_MIN = 10_000_000_000_000n; // Dust threshold (0.00001 ETH)
export const EXIT_DUST = 100_000_000_000_000n; // Process termination threshold- Environment Variables: Store private keys in environment variables, never in code
- Key Rotation: Implement regular hot wallet key rotation procedures
- Access Control: Restrict file system permissions on configuration files
- Memory Safety: Keys are loaded once at startup and held in process memory
- WebSocket Encryption: All Alchemy connections use WSS (TLS 1.3)
- API Key Security: Alchemy keys should have minimal required permissions
- Rate Limiting: Built-in request throttling prevents API exhaustion
- Connection Resilience: Automatic reconnection with exponential backoff
Transaction Security
- Nonce Management: Sequential nonce assignment prevents transaction conflicts
- Gas Validation: Multi-layered gas estimation with fallback limits
- Balance Verification: Pre-flight balance checks prevent insufficient fund errors
- Dust Protection: Configurable minimum balances prevent wallet drainage
-
Asset Discovery Phase 1.1. Query hot wallet ETH balance 1.2. Fetch ERC-20 token balances for configured tokens 1.3. Retrieve current network gas parameters
-
Transaction Construction Phase 2.1. Generate ERC-20 transfer calldata for non-zero balances 2.2. Estimate gas requirements for each transfer 2.3. Calculate cumulative gas costs
-
Batch Optimization Phase 3.1. Filter transfers by available gas budget 3.2. Construct ETH sweep transaction for remaining balance 3.3. Apply gas buffers and safety margins
-
Execution Phase 4.1. Sign all transactions with sequential nonces 4.2. Broadcast transactions in parallel 4.3. Monitor confirmations and handle failures
Blockchain Event -> WebSocket -> Event Filter -> Sweep Trigger -> Batch Builder -> Transaction Executor
All operations are logged with ISO-8601 timestamps:
[2025-03-15T10:30:45.123Z] ⚡ aggressive-cap : ON
[2025-03-15T10:30:45.124Z] ⏳ waiting for first trigger...
[2025-03-15T10:30:47.891Z] 💸 Pending transaction detected - initiating sweep
[2025-03-15T10:30:48.156Z] 📊 hot balance: 0.0125 ETH
[2025-03-15T10:30:48.234Z] ⚡ add USDC - gas 65000 @ 45.2 gwei
[2025-03-15T10:30:48.567Z] ✅ USDC transferred - tx: 0xabc123...
- Detection Latency: <200ms from mempool to sweep initiation
- Batch Processing: Parallel gas estimation reduces build time by 60%
- Network Efficiency: EIP-1559 optimization reduces gas costs by 15-25%
- Uptime: 99.9% operational availability with proper infrastructure
MIT