Files
mev-beta/scripts/run.sh
Krypto Kajun 850223a953 fix(multicall): resolve critical multicall parsing corruption issues
- Added comprehensive bounds checking to prevent buffer overruns in multicall parsing
- Implemented graduated validation system (Strict/Moderate/Permissive) to reduce false positives
- Added LRU caching system for address validation with 10-minute TTL
- Enhanced ABI decoder with missing Universal Router and Arbitrum-specific DEX signatures
- Fixed duplicate function declarations and import conflicts across multiple files
- Added error recovery mechanisms with multiple fallback strategies
- Updated tests to handle new validation behavior for suspicious addresses
- Fixed parser test expectations for improved validation system
- Applied gofmt formatting fixes to ensure code style compliance
- Fixed mutex copying issues in monitoring package by introducing MetricsSnapshot
- Resolved critical security vulnerabilities in heuristic address extraction
- Progress: Updated TODO audit from 10% to 35% complete

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-17 00:12:55 -05:00

82 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# run.sh - Run the MEV bot
echo "Running MEV bot..."
# Build the application first
./scripts/build.sh
if [ $? -eq 0 ]; then
# Normalize GO_ENV when passed as .env.* style
if [[ -n "$GO_ENV" && "$GO_ENV" == .env.* ]]; then
GO_ENV="${GO_ENV#.env.}"
export GO_ENV
fi
# Load environment variables from .env.production if it exists
if [ -f ".env.production" ]; then
echo "🔧 Loading production environment variables from .env.production..."
set -a # Automatically export all variables
source .env.production
set +a # Stop automatically exporting
else
echo "❌ .env.production file not found! Creating one with defaults..."
echo "Please configure .env.production for production deployment"
exit 1
fi
# Validate required environment variables
if [ -z "$MEV_BOT_ENCRYPTION_KEY" ]; then
echo "❌ MEV_BOT_ENCRYPTION_KEY not found in .env.production"
echo "Please set this variable for secure operations"
exit 1
fi
if [ -z "$CONTRACT_ARBITRAGE_EXECUTOR" ]; then
echo "❌ CONTRACT_ARBITRAGE_EXECUTOR not found in .env.production"
echo "Please set the deployed arbitrage executor contract address"
exit 1
fi
# Set required environment variables with production values
export ARBITRUM_RPC_ENDPOINT="${ARBITRUM_RPC_ENDPOINT:-wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57}"
export ARBITRUM_WS_ENDPOINT="${ARBITRUM_WS_ENDPOINT:-$ARBITRUM_RPC_ENDPOINT}"
export METRICS_ENABLED="${METRICS_ENABLED:-true}"
export METRICS_PORT="${METRICS_PORT:-9090}"
export MEV_BOT_KEYSTORE_PATH="${MEV_BOT_KEYSTORE_PATH:-keystore/production}"
export MEV_BOT_AUDIT_LOG="${MEV_BOT_AUDIT_LOG:-logs/production_audit.log}"
export MEV_BOT_BACKUP_PATH="${MEV_BOT_BACKUP_PATH:-backups/production}"
mkdir -p "$MEV_BOT_KEYSTORE_PATH"
mkdir -p "$MEV_BOT_BACKUP_PATH"
mkdir -p "$(dirname "$MEV_BOT_AUDIT_LOG")"
echo "Keystore path: $MEV_BOT_KEYSTORE_PATH"
env | grep MEV_BOT_KEYSTORE_PATH
echo ""
echo "🚀 PRODUCTION MEV BOT STARTUP"
echo "================================"
echo "📡 Network Configuration:"
echo " RPC: $ARBITRUM_RPC_ENDPOINT"
echo " WS: $ARBITRUM_WS_ENDPOINT"
echo " Metrics Port: $METRICS_PORT"
echo ""
echo "📝 Deployed Contracts:"
echo " ArbitrageExecutor: $CONTRACT_ARBITRAGE_EXECUTOR"
echo " FlashSwapper: $CONTRACT_FLASH_SWAPPER"
echo " DataFetcher: $CONTRACT_DATA_FETCHER"
echo ""
echo "🔐 Security:"
echo " Encryption Key: ${MEV_BOT_ENCRYPTION_KEY:0:8}...***"
echo ""
# Run the application
./bin/mev-bot start
else
echo "Failed to build the application!"
exit 1
fi