Files
mev-beta/scripts/clean-blacklist.sh

105 lines
2.9 KiB
Bash
Executable File

#!/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!"