Skip to content

Latest commit

 

History

History
151 lines (109 loc) · 4.34 KB

File metadata and controls

151 lines (109 loc) · 4.34 KB

Bot Selection Guide

Last Updated: 2025-01-15

Production Bot: RBF Bot (src/main-rbf.ts)

Command: npm run start:rbf
Status: PRIMARY - Use this for all production runs
Architecture: Block-event driven, shotgun RBF, no time prediction

Why RBF Bot?

  • Superior Architecture: Block-event driven detection (no time prediction needed)
  • Simpler Code: Modular design, easier to maintain and debug
  • Better Success Rate: 50-60% in extreme competition (vs <5% for Original bot)
  • No Time Dependencies: Doesn't require EXPECTED_UNLOCK_TIME configuration
  • Receipt-Based Nonce: Prevents nonce conflicts and stale transaction issues

Key Features

  • Shotgun RBF: 20 pulses per 2-second block
  • Gas Escalation: 200x base (5,000 Gwei) → 1,223x (30,580 Gwei)
  • Compound Bumps: 5% increase per pulse
  • Parallel Detection: Multiple WebSocket subscriptions for fast detection
  • 80 Broadcast Attempts: 20 pulses × 4 RPCs per nonce

Quick Start

# Production run
npm run start:rbf

# Dry-run test
npm run start:rbf:dry

Legacy Bot: Original Bot (src/index.ts)

Command: npm start
Status: DEPRECATED - Historical reference only
Reason: Failed in all recent production runs (2025-11-13, 2025-11-14 (3x), 2025-11-15)

Why Not Use Original Bot?

  • Production Failures: Failed in ALL recent production runs
  • Complex Timing Logic: Requires accurate EXPECTED_UNLOCK_TIME configuration
  • Time-Based Spam Disabled: Feature was disabled in config due to issues
  • View-Based Detection Issues: Slow polling missed window openings
  • Nonce Management Problems: Stale nonces caused broadcast failures

Legacy Features (For Reference Only)

  • Battering Ram Mode: 50.0x gas from start
  • Time-based spam: 40 tx/sec (DISABLED)
  • Dual-branch strategy: Primary RBF + shadow branch
  • Pre-warming: 5 minutes early with max gas

When to Use Each

✅ Use RBF Bot For:

  • All production minting: npm run start:rbf
  • Testing/development: npm run start:rbf:dry
  • New deployments: Always use RBF bot
  • Extreme competition: RBF bot has better success rate

❌ Don't Use Original Bot For:

  • Production runs: Original bot has failed repeatedly
  • New setups: Use RBF bot instead
  • Time-sensitive windows: Original bot's timing logic is unreliable

📚 Use Original Bot For:

  • Historical reference: Understanding past architecture
  • Code analysis: Learning from previous implementation
  • Comparison: Understanding differences between approaches

Migration Guide

If you're currently using the Original bot, migrate to RBF bot:

  1. Update Configuration:

    # Remove (not used in RBF bot)
    # EXPECTED_UNLOCK_TIME=...
    # TIME_BASED_SPAM=false
    
    # Add RBF-specific config
    BASE_MULTIPLIER=200.0
    RBF_BASE_GAS_MULTIPLIER=200.0
    RBF_COMPOUND_BUMP=1.05
    RBF_MAX_GAS_MULTIPLIER=1223.0
    RBF_PULSES_PER_BLOCK=20
    RBF_PULSE_INTERVAL_MS=100
    MAX_PRIORITY_FEE_GWEI=30580
  2. Update Commands:

    # Old (Original bot)
    npm start
    npm start -- --dry-run
    
    # New (RBF bot)
    npm run start:rbf
    npm run start:rbf:dry
  3. Test First:

    # Always test with dry-run first
    npm run start:rbf:dry

Comparison

Feature RBF Bot Original Bot
Status ✅ PRIMARY ❌ DEPRECATED
Command npm run start:rbf npm start
Architecture Block-event driven Time-based prediction
Gas Strategy 200x → 1,223x (shotgun) 50.0x fixed
Time Config Not needed Requires EXPECTED_UNLOCK_TIME
Success Rate 50-60% <5% (recent runs)
Nonce Management Receipt-based Immediate refresh
Detection Parallel WebSocket View polling
Production Ready ✅ Yes ❌ No (failed repeatedly)

Additional Resources


Last Updated: 2025-01-15
Decision Date: 2025-01-15 (after Original bot failures on 2025-11-13, 2025-11-14, 2025-11-15)