#!/bin/bash echo "Cleaning Pool Blacklist - Removing Invalid Addresses" echo "====================================================" echo "" # Backup the current blacklist cp logs/pool_blacklist.json logs/pool_blacklist.json.backup.$(date +%Y%m%d_%H%M%S) echo "✅ Backed up current blacklist" # Create a temporary file for valid pools TEMP_FILE="/tmp/valid_pools.json" echo "[]" > $TEMP_FILE # RPC endpoint RPC="https://arb1.arbitrum.io/rpc" # Get all blacklisted pools POOLS=$(cat logs/pool_blacklist.json | jq -r '.[] | .address') TOTAL=0 VALID=0 INVALID=0 echo "" echo "Checking each pool for contract existence..." echo "" for POOL in $POOLS; do TOTAL=$((TOTAL + 1)) # Check if contract exists CODE=$(curl -s -X POST $RPC \ -H "Content-Type: application/json" \ -d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getCode\",\"params\":[\"$POOL\",\"latest\"],\"id\":1}" \ | jq -r '.result') if [[ "$CODE" != "0x" ]] && [[ -n "$CODE" ]] && [[ ${#CODE} -gt 10 ]]; then # Contract exists - keep in blacklist ENTRY=$(cat logs/pool_blacklist.json | jq --arg addr "$POOL" '.[] | select(.address == $addr)') if [ ! -z "$ENTRY" ]; then echo "$ENTRY" | jq -s '.' | jq '.[0]' >> $TEMP_FILE.tmp VALID=$((VALID + 1)) echo "✅ $POOL - Valid contract ($(( ${#CODE} / 2 - 1 )) bytes)" fi else # No contract - remove from blacklist INVALID=$((INVALID + 1)) echo "❌ $POOL - No contract, removing" fi # Show progress if [ $((TOTAL % 10)) -eq 0 ]; then echo " Progress: $TOTAL pools checked..." fi done # Combine all valid entries into a proper JSON array if [ -f $TEMP_FILE.tmp ]; then cat $TEMP_FILE.tmp | jq -s '.' > $TEMP_FILE rm $TEMP_FILE.tmp fi echo "" echo "Summary" echo "=======" echo "Total pools checked: $TOTAL" echo "Valid contracts: $VALID" echo "Invalid (removed): $INVALID" echo "" # Replace the blacklist with cleaned version if [ $VALID -gt 0 ]; then mv $TEMP_FILE logs/pool_blacklist.json echo "✅ Blacklist updated with $VALID valid pools" else echo "⚠️ No valid pools found - keeping original blacklist" fi echo "" echo "Testing a few valid UniswapV3 pools to ensure they work..." echo "" # Test known good pools GOOD_POOLS=( "0xC31E54c7a869B9FcBEcc14363CF510d1c41fa443" # WETH/USDC.e "0x641C00A822e8b671738d32a431a4Fb6074E5c79d" # USDT/WETH ) for POOL in "${GOOD_POOLS[@]}"; do echo -n "Testing $POOL: " TOKEN0=$(curl -s -X POST $RPC \ -H "Content-Type: application/json" \ -d "{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"$POOL\",\"data\":\"0x0dfe1681\"},\"latest\"],\"id\":1}" \ | jq -r '.result // "error"') if [[ "$TOKEN0" == "0x"* ]] && [[ ${#TOKEN0} -eq 66 ]]; then echo "✅ Works" else echo "❌ Failed" fi done echo "" echo "Cleanup complete!"