Files
mev-beta/docs/BLOCKERS_SUMMARY.md

5.8 KiB

MEV Bot - Critical Blockers Summary (QUICK REFERENCE)

Executive Summary

Zero profitable executions. System detects opportunities but fails to execute. 10 critical blockers identified.


The Problem In One Sentence

Token amounts extracted from swap events are ZERO, causing profit rejection for all opportunities before they reach the execution layer.


10 CRITICAL BLOCKERS

# Blocker Impact Location Fix Time
1 Zero Amount Detection Blocks 95%+ of opportunities pkg/profitcalc/profit_calc.go:104-134 2-4h
2 Token Graph Empty No arbitrage paths found pkg/arbitrage/multihop.go:167-173 1-2h
3 BatchFetch Contract Reverts Cannot get pool state pkg/scanner/market/scanner.go:139-142 2-3h
4 Invalid Profit Margins Extreme negative values (-330K%) pkg/profitcalc/profit_calc.go:261-294 1h
5 Unknown Token Filtering 95% tokens cannot be priced pkg/profitcalc/profit_calc.go:152-161 2-3h
6 Execution Disconnected Opportunities never execute pkg/arbitrage/service.go 2-3h
7 Profit Threshold Too High Rejects valid opportunities pkg/arbitrage/detection_engine.go:188 1h
8 BatchFetch Contract Wrong RPC rate limits hit pkg/datafetcher/batch_fetcher.go 2-3h
9 No Executor Integration Flash loans never trigger pkg/arbitrage/executor.go 2-3h
10 Parser Zero Amounts Swap events lose data pkg/events/parser.go 2-4h

Total Fix Time: 8-14 hours


Root Cause Chain

1. Event Parser Extracts ZERO amounts
   ↓
2. Profit Calculator Receives ZERO values
   ↓
3. Profit Margin = negative / 0 = EXTREME VALUE
   ↓
4. Bounds Check Rejects (< -1.0)
   ↓
5. Marked: isExecutable = false
   ↓
6. Execution Loop Never Triggered
   ↓
Result: ZERO PROFITS, ZERO EXECUTIONS

Most Critical Fixes (Priority Order)

FIX #1: Event Parser (2-4 hours)

File: pkg/events/parser.go or pkg/arbitrum/parser/core.go Problem: Swap event amounts are extracted as ZERO Solution:

  • Validate event signature matching
  • Fix decimal handling in amount conversion
  • Test with real Arbitrum swap transactions

FIX #2: Token Graph (1-2 hours)

File: pkg/arbitrage/multihop.go:522-594 Problem: Token graph has only 8 hardcoded pools with placeholder data Solution:

  • Link 314 cached pools to token graph
  • Implement pool discovery loop
  • Verify minimum 20 tokens, 50 pools

FIX #3: Execution Pipeline (2-3 hours)

File: pkg/arbitrage/service.go Problem: Detected opportunities are never executed Solution:

  • Connect opportunity forwarder to executor
  • Implement execution goroutine
  • Add transaction monitoring

Evidence From Logs

Zero Amounts in Opportunities

2025/11/02 15:22:33 [OPPORTUNITY] Amount In: 0.000000 tokens
                                   Amount Out: 0.000000 tokens

Automatic Rejection

rejectReason:negative profit after gas and slippage costs
profitMargin:-330178.9776420681  (EXTREME NEGATIVE)

Zero Execution Stats

2025/11/02 15:22:38 [INFO] Arbitrage Service Stats
    Detected: 0
    Executed: 0
    Successful: 0
    Success Rate: 0.00%
    Total Profit: 0.000000 ETH

BatchFetch Failures

2025/11/02 15:22:49 [WARN] Failed to fetch batch 0-1: execution reverted
(repeated 25+ times)

System Status

Component Status Evidence
Detection Engine WORKING Detects multiple opportunities/minute
Amount Extraction BROKEN All amounts = 0.000000
Profit Calculation BROKEN Uses invalid amounts
Execution Pipeline DISCONNECTED No executor calls
Token Graph INCOMPLETE 8 hardcoded pools only
Pool State Fetch FAILING BatchFetch contract reverts

What Works vs What Doesn't

What's Working

  • RPC connection to Arbitrum
  • Event monitoring and parsing (structure is correct)
  • Opportunity detection (finds swaps correctly)
  • Pool caching (314 pools cached)
  • Key generation and wallet setup

What's Broken

  • Token amount extraction (shows as 0.000000)
  • Profit margin calculation (extreme values)
  • Token graph initialization (empty/incomplete)
  • Batch pool data fetching (contract calls fail)
  • Execution connection (never triggered)
  • Flash executor integration (dormant)

Quick Diagnosis Steps

Run these to verify the blockers:

# 1. Check event parser is extracting zero amounts
grep "Amount In: 0.000000" logs/mev_bot.log | wc -l
# Expected: 50+ (confirms Blocker #1)

# 2. Check token graph connectivity
grep "has no adjacent tokens" logs/mev_bot.log
# Expected: Found (confirms Blocker #2)

# 3. Check batch fetcher failures
grep "batch fetch V3 data failed" logs/mev_bot.log | wc -l
# Expected: 20+ (confirms Blocker #3)

# 4. Check zero executions
grep "Executed: 0" logs/mev_bot.log | wc -l
# Expected: All recent stats (confirms Blocker #6)

Expected Outcome After Fixes

After fixing blockers #1-2 (4-6 hours):

  • Token amounts extracted correctly
  • Token graph has 20+ tokens with 50+ pools
  • Profit calculator receives valid amounts
  • 50%+ of opportunities marked as executable

After fixing blocker #6 (2-3 hours):

  • Execution pipeline triggers for valid opportunities
  • First profitable trade executes
  • System achieves positive P&L

Next Steps

  1. DEBUG: Add logging to event parser to verify amount extraction
  2. FIX: Correct the amount extraction logic in parser
  3. VALIDATE: Confirm profit calculations use non-zero amounts
  4. CONNECT: Wire opportunity detection to execution pipeline
  5. TEST: Execute first successful arbitrage trade

Detailed Analysis: See MEV_BOT_COMPREHENSIVE_AUDIT_20251104.md