Files
explorer-monorepo/scripts/generate-ccip-status-report.sh
2026-03-02 12:14:13 -08:00

168 lines
5.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Generate CCIP Status Report
# Task 141: Create CCIP Status Report Script
# Usage: ./generate-ccip-status-report.sh [output_file]
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
# Load environment variables if .env exists
if [ -f "$PROJECT_ROOT/.env" ]; then
source "$PROJECT_ROOT/.env"
elif [ -f "$PROJECT_ROOT/../.env" ]; then
source "$PROJECT_ROOT/../.env"
fi
# Configuration
RPC_URL="${RPC_URL_138:-http://192.168.11.250:8545}"
OUTPUT_FILE="${1:-docs/CCIP_STATUS_REPORT_$(date +%Y%m%d_%H%M%S).md}"
# Create report
{
echo "# CCIP Status Report"
echo ""
echo "**Date**: $(date)"
echo "**Network**: ChainID 138"
echo "**RPC URL**: $RPC_URL"
echo ""
echo "---"
echo ""
echo "## Executive Summary"
echo ""
# Router status
echo "### CCIP Router"
ROUTER="0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e"
ROUTER_BYTECODE=$(cast code "$ROUTER" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$ROUTER_BYTECODE" ] && [ "$ROUTER_BYTECODE" != "0x" ]; then
echo "- **Status**: ✅ Deployed"
echo "- **Address**: $ROUTER"
else
echo "- **Status**: ❌ Not Found"
fi
echo ""
# Sender status
echo "### CCIP Sender"
SENDER="0x105F8A15b819948a89153505762444Ee9f324684"
SENDER_BYTECODE=$(cast code "$SENDER" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$SENDER_BYTECODE" ] && [ "$SENDER_BYTECODE" != "0x" ]; then
echo "- **Status**: ✅ Deployed"
echo "- **Address**: $SENDER"
else
echo "- **Status**: ❌ Not Found"
fi
echo ""
# Bridge status
echo "### Bridge Contracts"
WETH9_BRIDGE="0x971cD9D156f193df8051E48043C476e53ECd4693"
WETH10_BRIDGE="0xe0E93247376aa097dB308B92e6Ba36bA015535D0"
WETH9_BRIDGE_BYTECODE=$(cast code "$WETH9_BRIDGE" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
WETH10_BRIDGE_BYTECODE=$(cast code "$WETH10_BRIDGE" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$WETH9_BRIDGE_BYTECODE" ] && [ "$WETH9_BRIDGE_BYTECODE" != "0x" ]; then
echo "- **WETH9 Bridge**: ✅ Deployed ($WETH9_BRIDGE)"
else
echo "- **WETH9 Bridge**: ❌ Not Found"
fi
if [ -n "$WETH10_BRIDGE_BYTECODE" ] && [ "$WETH10_BRIDGE_BYTECODE" != "0x" ]; then
echo "- **WETH10 Bridge**: ✅ Deployed ($WETH10_BRIDGE)"
else
echo "- **WETH10 Bridge**: ❌ Not Found"
fi
echo ""
# Destination configuration
echo "### Bridge Destination Configuration"
declare -A CHAIN_SELECTORS=(
["BSC"]="11344663589394136015"
["Polygon"]="4051577828743386545"
["Avalanche"]="6433500567565415381"
["Base"]="15971525489660198786"
["Arbitrum"]="4949039107694359620"
["Optimism"]="3734403246176062136"
["Ethereum"]="5009297550715157269"
)
WETH9_CONFIGURED=0
WETH10_CONFIGURED=0
TOTAL_DESTINATIONS=${#CHAIN_SELECTORS[@]}
for CHAIN_NAME in "${!CHAIN_SELECTORS[@]}"; do
SELECTOR="${CHAIN_SELECTORS[$CHAIN_NAME]}"
DEST_WETH9=$(cast call "$WETH9_BRIDGE" "destinations(uint64)" "$SELECTOR" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
DEST_WETH9_CLEAN=$(echo "$DEST_WETH9" | grep -oE "^0x[0-9a-fA-F]{40}$" | head -1 || echo "")
if [ -n "$DEST_WETH9_CLEAN" ] && ! echo "$DEST_WETH9_CLEAN" | grep -qE "^0x0+$"; then
((WETH9_CONFIGURED++)) || true
fi
DEST_WETH10=$(cast call "$WETH10_BRIDGE" "destinations(uint64)" "$SELECTOR" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
DEST_WETH10_CLEAN=$(echo "$DEST_WETH10" | grep -oE "^0x[0-9a-fA-F]{40}$" | head -1 || echo "")
if [ -n "$DEST_WETH10_CLEAN" ] && ! echo "$DEST_WETH10_CLEAN" | grep -qE "^0x0+$"; then
((WETH10_CONFIGURED++)) || true
fi
done
echo "- **WETH9 Bridge**: $WETH9_CONFIGURED/$TOTAL_DESTINATIONS destinations configured"
echo "- **WETH10 Bridge**: $WETH10_CONFIGURED/$TOTAL_DESTINATIONS destinations configured"
echo ""
# Token status
echo "### Token Contracts"
WETH9="0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
WETH10="0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f"
WETH9_BYTECODE=$(cast code "$WETH9" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
WETH10_BYTECODE=$(cast code "$WETH10" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$WETH9_BYTECODE" ] && [ "$WETH9_BYTECODE" != "0x" ]; then
echo "- **WETH9**: ✅ Deployed ($WETH9)"
else
echo "- **WETH9**: ❌ Not Found"
fi
if [ -n "$WETH10_BYTECODE" ] && [ "$WETH10_BYTECODE" != "0x" ]; then
echo "- **WETH10**: ✅ Deployed ($WETH10)"
else
echo "- **WETH10**: ❌ Not Found"
fi
echo ""
echo "---"
echo ""
echo "## Detailed Status"
echo ""
echo "### System Health"
echo ""
echo "Run comprehensive verification:"
echo "\`\`\`bash"
echo "./scripts/verify-complete-ccip-setup.sh"
echo "\`\`\`"
echo ""
echo "### Next Steps"
echo ""
if [ $WETH9_CONFIGURED -lt $TOTAL_DESTINATIONS ] || [ $WETH10_CONFIGURED -lt $TOTAL_DESTINATIONS ]; then
echo "1. Configure missing bridge destinations"
echo "2. Verify configuration"
echo "3. Test bridge operations"
else
echo "1. Test bridge operations"
echo "2. Monitor system health"
echo "3. Review configuration"
fi
echo ""
echo "---"
echo ""
echo "**Report Generated**: $(date)"
} > "$OUTPUT_FILE"
echo "Status report generated: $OUTPUT_FILE"