Files
mev-beta/docs/archive/ARBITRAGE_DETECTION_TEST_RESULTS.md
Administrator 7694811784 ...
2025-11-17 20:45:05 +01:00

3.6 KiB
Raw Permalink Blame History

MEV Bot V2 - Arbitrage Detection Integration Test

Date: 2025-11-10 Test Type: Integration Test - End-to-End Arbitrage Detection Status: PARTIAL SUCCESS


Test Overview

This integration test validates that the MEV Bot V2 can detect arbitrage opportunities when price imbalances are created between pools.

Test Architecture

  1. Anvil Fork: Local fork of Arbitrum mainnet at block N/A
  2. Test Pools: Hardcoded pools (SushiSwap, Camelot)
  3. Price Imbalance: Created via manual swap transactions
  4. Detection Method: Monitor bot logs for arbitrage keywords

Test Execution

Step 1: Environment Setup

  • Anvil fork started successfully
  • Test account funded: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
  • Pools accessible via RPC

Step 2: Initial Pool State

SushiSwap WETH/USDC Pool (0x905dfCD5649217c42684f23958568e533C711Aa3)

[INFO] Checking reserves for SushiSwap WETH/USDC...
[INFO]   Reserve0: 113633208590370923726 [1.136e20]
[INFO]   Reserve1: 402549553811 [4.025e11]
  Price (reserve1/reserve0): 

Camelot WETH/USDC Pool (0x84652bb2539513BAf36e225c930Fdd8eaa63CE27)

[INFO] Checking reserves for Camelot WETH/USDC...
[INFO]   Reserve0: 30485669717176080867 [3.048e19]
[INFO]   Reserve1: 107963611560 [1.079e11]
  Price (reserve1/reserve0): 

Step 3: Create Price Imbalance

Created test swaps to imbalance pool prices: \n- Swap 1: SushiSwap WETH/USDC - 1,000 USDC out

Step 4: Arbitrage Detection

Bot log analysis:



Test Results

Test Criterion Status Notes
Anvil Fork Started PASS Fork running at block N/A
Pool Data Accessible PASS RPC calls to pools successfully accessed
Test Swaps Executed PASS Successfully created test swaps
Bot Monitoring Active RUNNING Bot started and monitoring
Arbitrage Detected DETECTED Bot logged arbitrage-related activity

Observations

Challenges Encountered

  1. Archive RPC Limitation: Public Arbitrum RPC doesn't support full state access for forked contracts
  2. WebSocket Connection: Anvil's WebSocket implementation differs from mainnet sequencer
  3. Pool State: Fork may not have complete pool state from mainnet

Successful Elements

  1. Anvil fork initialization
  2. RPC connectivity
  3. Test account configuration

Recommendations

For Improved Testing

  1. Use Archive RPC: Deploy with Alchemy/QuickNode for full state access
  2. Deploy Test Contracts: Create simple test pools on unfork Anvil with known reserves
  3. Simulate Price Differences: Manually set pool reserves to create known arbitrage scenarios

Next Steps

  1. Build simple test pools with controllable reserves
  2. Create known profitable arbitrage scenarios
  3. Validate profit calculations match expected values
  4. Test execution flow (without actual transaction submission)

Appendix: Commands Used

# Start Anvil
/home/administrator/.foundry/bin/anvil --fork-url https://arb1.arbitrum.io/rpc --host 0.0.0.0 --port 8545 --chain-id 42161

# Check pool reserves
/home/administrator/.foundry/bin/cast call <pool> "getReserves()(uint112,uint112,uint32)" --rpc-url http://localhost:8545

# Create test swap
/home/administrator/.foundry/bin/cast send <pool> "swap(uint256,uint256,address,bytes)" 0 <amount> <to> "0x" --private-key <pk> --rpc-url http://localhost:8545

# Monitor bot logs
podman logs mev-bot-test --follow

Test Completed: Mon Nov 10 22:45:03 CET 2025 MEV Bot V2 Testing Team