13 KiB
MEV Bot V2 - Production Deployment Safety Guide
STATUS: ⚠️ PRE-PRODUCTION - NOT SAFE FOR LARGE CAPITAL YET
🚨 CRITICAL: Read This First
DO NOT deploy to production with significant capital until:
- ✅ All safety mechanisms are tested
- ✅ Profit calculations validated with known scenarios
- ✅ 24+ hours of dry-run monitoring completed
- ✅ Emergency stop tested and working
- ✅ Monitoring/alerting configured and tested
Current Status: Bot is in TESTING phase. Suitable for small-scale testing only.
Safety-First Deployment Sequence
Phase 1: Dry-Run Validation (Days 1-3)
Objective: Validate detection without risking capital
Configuration:
DRY_RUN_MODE=true
ENABLE_EXECUTION=false
ENABLE_SIMULATION=true
MIN_PROFIT_WEI=50000000000000000 # 0.05 ETH - conservative
Actions:
- Deploy with
.env.production.safeconfiguration - Monitor logs for 24+ hours continuously
- Verify opportunities are detected correctly
- Check profit calculations match expected values
- Ensure no false positives
Success Criteria:
- ✅ Bot runs stable for 24+ hours
- ✅ No crashes or errors
- ✅ Profit calculations look reasonable
- ✅ Pool data updates correctly
DO NOT PROCEED if success criteria not met.
Phase 2: Testnet Validation (Days 4-7)
Objective: Test execution logic without real money
Configuration:
# Use Arbitrum Sepolia/Goerli testnet
CHAIN_ID=421614 # Arbitrum Sepolia
RPC_URL=https://sepolia-rollup.arbitrum.io/rpc
ENABLE_EXECUTION=true
MAX_POSITION_SIZE=100000000000000000 # 0.1 ETH testnet funds
Actions:
- Get testnet ETH from faucet
- Deploy on testnet
- Execute actual transactions
- Monitor profit/loss carefully
- Test circuit breaker triggers
- Test emergency stop
Success Criteria:
- ✅ Transactions execute successfully
- ✅ Profit calculations accurate (compare pre/post trade)
- ✅ Circuit breaker stops trading after losses
- ✅ Emergency stop works immediately
- ✅ No unexpected behavior
DO NOT PROCEED to mainnet if any failures.
Phase 3: Mainnet Micro-Testing (Days 8-14)
Objective: Validate on mainnet with minimal capital
Configuration:
# Mainnet with strict safety limits
CHAIN_ID=42161
RPC_URL=https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY # Archive RPC required!
ENABLE_EXECUTION=true
MAX_POSITION_SIZE=100000000000000000 # 0.1 ETH - TINY positions
MAX_DAILY_VOLUME=500000000000000000 # 0.5 ETH daily max
MAX_TRADES_PER_HOUR=5 # Rate limit
Capital Required: 0.5-1 ETH (amount you're willing to lose)
Actions:
- Fund wallet with SMALL amount only
- Enable execution with strict limits
- Monitor CONTINUOUSLY for first 24 hours
- Track every trade manually
- Calculate actual profit/loss
- Verify gas costs match predictions
Success Criteria:
- ✅ Net profitable over 7 days (including gas)
- ✅ No unexpected losses
- ✅ Circuit breaker triggers appropriately
- ✅ Monitoring/alerts working
IF UNPROFITABLE: Stop immediately, debug issues
Phase 4: Gradual Scale-Up (Weeks 3-8)
Objective: Slowly increase capital if consistently profitable
Only if Phase 3 was net profitable:
| Week | Max Position | Max Daily Volume | Notes |
|---|---|---|---|
| 3 | 0.25 ETH | 1 ETH | Still testing |
| 4 | 0.5 ETH | 2 ETH | Monitor closely |
| 5 | 1 ETH | 5 ETH | If profitable, continue |
| 6 | 2 ETH | 10 ETH | Standard operation |
| 7-8 | 3-5 ETH | 20 ETH | Mature operation |
Rules:
- If ANY week is unprofitable, revert to previous week's limits
- Track ROI weekly - stop if declining
- Monitor gas costs - stop if eating profits
🛡️ Safety Mechanisms
1. Circuit Breaker
Triggers:
- 3 consecutive losing trades
- Hourly loss > 0.1 ETH
- Daily loss > 0.5 ETH
Action: Immediately stop trading for 1 hour cooldown
Testing:
# Manually trigger by creating test scenario
# Verify bot stops and doesn't restart automatically
2. Emergency Stop
File-based kill switch:
# Create this file to stop bot immediately
touch /tmp/mev-bot-emergency-stop
# Bot checks this file every 10 seconds
# Gracefully stops all operations
Testing:
# While bot running in testnet:
touch /tmp/mev-bot-emergency-stop
# Bot should log "Emergency stop detected" and exit within 10s
3. Position Size Limits
Prevents large losses from single trade:
- MAX_POSITION_SIZE enforced before execution
- MAX_DAILY_VOLUME enforced cumulatively
- Transactions rejected if limits exceeded
4. Slippage Protection
Prevents sandwich attacks and price manipulation:
- MAX_SLIPPAGE_BPS: 100 (1%) - very strict
- Simulation runs before every trade
- Trade rejected if simulated output < expected
5. Gas Price Limits
Prevents overpaying during network congestion:
- MAX_GAS_PRICE_GWEI: 50 gwei
- Transactions rejected if gas price higher
- Use GAS_PRICE_STRATEGY=safe for lower gas
📊 Monitoring Requirements
Essential Metrics to Track
1. Profitability Metrics
- Gross profit per trade
- Net profit after gas
- ROI percentage
- Win rate (profitable trades / total trades)
2. Execution Metrics
- Trade execution latency
- Gas costs per trade
- Failed transactions
- Successful vs failed trade ratio
3. Safety Metrics
- Circuit breaker triggers
- Emergency stops
- Position size violations
- Daily volume tracking
4. System Health
- RPC connection status
- WebSocket connection status
- Pool cache size
- Memory/CPU usage
Monitoring Tools
Prometheus + Grafana (included in repo):
docker-compose up -d prometheus grafana
# Access Grafana at http://localhost:3000
Log Monitoring:
# Tail logs in real-time
docker logs -f mev-bot-v2
# Filter for profits
docker logs mev-bot-v2 | grep "profit"
# Filter for errors
docker logs mev-bot-v2 | grep "ERROR\|WARN"
Alerting (recommended):
- Set up Slack/Discord/Telegram webhook
- Alert on circuit breaker triggers
- Alert on large losses (> 0.05 ETH)
- Alert on system errors
🔧 Production Infrastructure
Required Infrastructure
1. Archive RPC Provider (CRITICAL)
- ❌ Public RPC insufficient
- ✅ Use: Alchemy, QuickNode, or Infura
- Cost: ~$200-500/month for archive access
- Required for pool discovery and state queries
2. Private RPC (Recommended)
- Reduces MEV risk on transaction submission
- Flashbots Protect or private mempool
- Cost: Free (Flashbots) or ~$100/month
3. Dedicated Server
- Minimum: 4 CPU cores, 8GB RAM
- Recommended: 8 CPU cores, 16GB RAM
- Low latency network connection to RPC
- Uptime: 99.9%+
4. Monitoring Stack
- Prometheus for metrics
- Grafana for visualization
- Alerting service (PagerDuty, Slack, etc.)
⚠️ Known Limitations & Risks
Technical Limitations
-
WebSocket Sequencer Connection
- Status: Not fully stable on Anvil fork
- Impact: May miss some pending transactions
- Mitigation: Test on live testnet/mainnet
-
Pool Discovery
- Currently uses hardcoded pools for testing
- Production needs archive RPC for discovery
- May miss new pools initially
-
Gas Estimation
- Estimates may be inaccurate under high load
- May overpay or fail transactions
- Needs more testing
-
Profit Calculations
- Not validated against known scenarios yet
- Risk of calculation errors
- MUST test extensively before large capital
Market Risks
-
Competition
- Other MEV bots may front-run
- Profits may be lower than expected
- Need low latency connection
-
Gas Price Volatility
- Network congestion can spike gas
- May eat into profits
- Circuit breaker helps limit damage
-
Smart Contract Risks
- DEX contracts could have bugs
- Pools could be manipulated
- Use whitelisted pools only initially
-
Slippage & Sandwich Attacks
- Larger trades more susceptible
- Strict slippage limits help
- Consider splitting large trades
📋 Pre-Deployment Checklist
Infrastructure
- Archive RPC provider configured and tested
- Private RPC configured (optional but recommended)
- Server meets minimum specs
- Monitoring stack deployed (Prometheus + Grafana)
- Alerting configured and tested
- Backup wallet key secured (hardware wallet recommended)
Configuration
.env.production.safereviewed and customized- All safety limits set conservatively
- DRY_RUN_MODE=true initially
- ENABLE_EXECUTION=false initially
- Gas limits appropriate
- Slippage tolerance conservative
Testing
- Dry-run completed (24+ hours)
- Profit calculations validated
- Circuit breaker tested
- Emergency stop tested
- Testnet deployment successful
- Manual trades verified profitable
Monitoring
- Grafana dashboards configured
- Alerts set up for losses
- Alerts set up for circuit breaker
- Alerts set up for system errors
- Log rotation configured
- Backup/restore tested
Safety
- Emergency stop file path configured
- Circuit breaker thresholds set
- Position limits conservative
- Daily volume limits set
- Gas price limits set
- Whitelist/blacklist configured (if needed)
🚀 Deployment Commands
Step 1: Build Docker Image
docker build -t mev-bot-v2:production .
Step 2: Configure Environment
# Copy safe configuration
cp .env.production.safe .env.production
# Edit with your keys and RPC endpoints
nano .env.production
# CRITICAL: Verify DRY_RUN_MODE=true for first deployment
grep DRY_RUN_MODE .env.production
Step 3: Deploy with Docker
# Start in dry-run mode
docker run -d \
--name mev-bot-v2-production \
--restart unless-stopped \
--env-file .env.production \
-v $(pwd)/logs:/app/logs \
-p 9090:9090 \
mev-bot-v2:production
# Monitor logs in real-time
docker logs -f mev-bot-v2-production
Step 4: Monitor & Validate
# Check status
docker ps | grep mev-bot
# View metrics
curl http://localhost:9090/metrics
# Check for errors
docker logs mev-bot-v2-production | grep ERROR | tail -50
# Monitor circuit breaker status
docker logs mev-bot-v2-production | grep "circuit_breaker"
Step 5: Emergency Stop (if needed)
# Method 1: File-based stop
docker exec mev-bot-v2-production touch /tmp/mev-bot-emergency-stop
# Method 2: Graceful stop
docker stop mev-bot-v2-production
# Method 3: Immediate stop
docker kill mev-bot-v2-production
📞 Support & Troubleshooting
Common Issues
Issue: Bot not finding opportunities
- Check RPC connection is working
- Verify pool discovery running
- Check MIN_PROFIT_WEI isn't too high
- Review MIN_POOL_LIQUIDITY setting
Issue: High gas costs eating profits
- Lower MAX_GAS_PRICE_GWEI
- Use GAS_PRICE_STRATEGY=safe
- Increase MIN_PROFIT_WEI threshold
Issue: Circuit breaker triggering frequently
- Review trade profitability
- Check profit calculations
- Verify gas estimation accurate
- May need to adjust MIN_PROFIT_WEI higher
Issue: Missing transactions
- Check WebSocket connection stable
- Verify archive RPC working
- Review worker count settings
- Check buffer size adequate
Logs to Check
# All errors
docker logs mev-bot-v2-production 2>&1 | grep "ERROR"
# Profitable trades
docker logs mev-bot-v2-production | grep "profit.*ETH"
# Circuit breaker events
docker logs mev-bot-v2-production | grep "circuit_breaker"
# RPC issues
docker logs mev-bot-v2-production | grep "RPC\|connection"
⚖️ Legal & Compliance
DISCLAIMER:
- MEV trading may be considered front-running in some jurisdictions
- Ensure compliance with local regulations
- This software is provided AS-IS with no warranties
- Use at your own risk
- Author not responsible for losses
Recommendations:
- Consult legal counsel before deployment
- Understand local securities/trading laws
- Consider tax implications of trading
- Maintain detailed trade records
📝 Post-Deployment Monitoring
Daily Checks (First Week)
- Review all trades from last 24 hours
- Calculate net profit/loss (including gas)
- Check circuit breaker events
- Review error logs
- Verify RPC connection stable
- Check wallet balance
Weekly Checks (Ongoing)
- Calculate weekly ROI
- Review most/least profitable pools
- Analyze gas cost trends
- Review system resource usage
- Update pool blacklist if needed
- Adjust parameters based on performance
Monthly Reviews
- Comprehensive profit/loss analysis
- Compare to market conditions
- Review and update safety limits
- Update dependencies/security patches
- Backup configuration and logs
- Review and optimize strategies
🎯 Success Criteria
Minimum viable production deployment:
- ✅ Profitable for 7+ consecutive days
- ✅ ROI > 5% after gas costs
- ✅ Win rate > 60%
- ✅ No circuit breaker triggers from bugs
- ✅ Emergency stop tested and working
- ✅ Monitoring functional and alerting
Ready for capital scale-up:
- ✅ Profitable for 30+ days
- ✅ ROI > 10% monthly
- ✅ Win rate > 70%
- ✅ All safety mechanisms tested
- ✅ No unexpected losses
- ✅ Stable system performance
Last Updated: 2025-11-10 Version: 1.0.0-rc1 Status: Pre-Production