From e229c82fdf8b10d68baf2dd0961a79e5d01d17f0 Mon Sep 17 00:00:00 2001 From: defiQUG Date: Fri, 27 Mar 2026 22:21:15 -0700 Subject: [PATCH] chore(scripts): align CCIP health/setup scripts with inventory loaders Made-with: Cursor --- scripts/ccip-health-check.sh | 33 ++++++++------------------- scripts/check-fee-requirements.sh | 10 +++----- scripts/complete-ccip-setup.sh | 22 ++++++------------ scripts/verify-complete-ccip-setup.sh | 33 ++++++++------------------- 4 files changed, 28 insertions(+), 70 deletions(-) diff --git a/scripts/ccip-health-check.sh b/scripts/ccip-health-check.sh index b14ff78..3ae45d9 100755 --- a/scripts/ccip-health-check.sh +++ b/scripts/ccip-health-check.sh @@ -7,6 +7,8 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +source "$PROJECT_ROOT/scripts/lib/address-inventory.sh" +source "$PROJECT_ROOT/scripts/lib/ccip-destinations.sh" # Colors RED='\033[0;31m' @@ -20,12 +22,7 @@ log_success() { echo -e "${GREEN}[✓]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } -# 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 +load_explorer_runtime_env # Configuration RPC_URL="${RPC_URL_138:-http://192.168.11.250:8545}" @@ -70,7 +67,7 @@ fi # Check Router log_info "" log_info "2. CCIP Router" -ROUTER="0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e" +ROUTER="$(resolve_address_value CCIP_ROUTER_ADDRESS CCIP_ROUTER_ADDRESS 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e)" ROUTER_BYTECODE=$(cast code "$ROUTER" --rpc-url "$RPC_URL" 2>/dev/null || echo "") if [ -n "$ROUTER_BYTECODE" ] && [ "$ROUTER_BYTECODE" != "0x" ]; then check_healthy "Router deployed and accessible" @@ -92,8 +89,8 @@ fi # Check Bridge Contracts log_info "" log_info "4. Bridge Contracts" -WETH9_BRIDGE="0x971cD9D156f193df8051E48043C476e53ECd4693" -WETH10_BRIDGE="0xe0E93247376aa097dB308B92e6Ba36bA015535D0" +WETH9_BRIDGE="$(resolve_address_value CCIPWETH9_BRIDGE CCIPWETH9_BRIDGE 0x971cD9D156f193df8051E48043C476e53ECd4693)" +WETH10_BRIDGE="$(resolve_address_value CCIPWETH10_BRIDGE CCIPWETH10_BRIDGE 0xe0E93247376aa097dB308B92e6Ba36bA015535D0)" WETH9_BRIDGE_BYTECODE=$(cast code "$WETH9_BRIDGE" --rpc-url "$RPC_URL" 2>/dev/null || echo "") if [ -n "$WETH9_BRIDGE_BYTECODE" ] && [ "$WETH9_BRIDGE_BYTECODE" != "0x" ]; then @@ -132,22 +129,11 @@ fi # Check Bridge Configuration log_info "" log_info "6. Bridge 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[@]} +TOTAL_DESTINATIONS=$(ccip_destination_count) -for CHAIN_NAME in "${!CHAIN_SELECTORS[@]}"; do - SELECTOR="${CHAIN_SELECTORS[$CHAIN_NAME]}" +while IFS=$'\t' read -r _chain_name SELECTOR _weth9 _weth10 _rpc_url; do 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 "") @@ -160,7 +146,7 @@ for CHAIN_NAME in "${!CHAIN_SELECTORS[@]}"; do if [ -n "$DEST_WETH10_CLEAN" ] && ! echo "$DEST_WETH10_CLEAN" | grep -qE "^0x0+$"; then ((WETH10_CONFIGURED++)) || true fi -done +done < <(ccip_destination_rows) if [ $WETH9_CONFIGURED -eq $TOTAL_DESTINATIONS ]; then check_healthy "WETH9 Bridge: All destinations configured" @@ -201,4 +187,3 @@ else log_error "✗ System has health issues" exit 1 fi - diff --git a/scripts/check-fee-requirements.sh b/scripts/check-fee-requirements.sh index e99bd25..3b8d29d 100755 --- a/scripts/check-fee-requirements.sh +++ b/scripts/check-fee-requirements.sh @@ -8,6 +8,7 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" source "$PROJECT_ROOT/scripts/lib/address-inventory.sh" +source "$PROJECT_ROOT/scripts/lib/ccip-destinations.sh" # Colors RED='\033[0;31m' @@ -148,14 +149,9 @@ fi # Check 5: Fee Calculation log_info "" log_info "5. Fee Calculation Check" -declare -A CHAINS=( - ["BSC"]="11344663589394136015" - ["Ethereum"]="5009297550715157269" -) - FEE_CALCULATED=0 -for CHAIN_NAME in "${!CHAINS[@]}"; do - SELECTOR="${CHAINS[$CHAIN_NAME]}" +for CHAIN_NAME in BSC Ethereum; do + SELECTOR="$(ccip_destination_field_by_name "$CHAIN_NAME" selector)" FEE=$(cast call "$WETH9_BRIDGE" "calculateFee(uint64,uint256)" "$SELECTOR" "$AMOUNT_WEI" --rpc-url "$RPC_URL" 2>/dev/null || echo "0") if [ "$FEE" != "0" ] && [ -n "$FEE" ]; then diff --git a/scripts/complete-ccip-setup.sh b/scripts/complete-ccip-setup.sh index 2431148..6811bc8 100755 --- a/scripts/complete-ccip-setup.sh +++ b/scripts/complete-ccip-setup.sh @@ -8,6 +8,7 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" source "$PROJECT_ROOT/scripts/lib/address-inventory.sh" +source "$PROJECT_ROOT/scripts/lib/ccip-destinations.sh" # Colors RED='\033[0;31m' @@ -104,18 +105,9 @@ RPC_URL="${RPC_URL_138:-http://192.168.11.250:8545}" WETH9_BRIDGE="$(resolve_address_value CCIPWETH9_BRIDGE CCIPWETH9_BRIDGE 0x971cD9D156f193df8051E48043C476e53ECd4693)" WETH10_BRIDGE="$(resolve_address_value CCIPWETH10_BRIDGE CCIPWETH10_BRIDGE 0xe0E93247376aa097dB308B92e6Ba36bA015535D0)" -declare -A CHAIN_SELECTORS=( - ["BSC"]="11344663589394136015" - ["Polygon"]="4051577828743386545" - ["Avalanche"]="6433500567565415381" - ["Base"]="15971525489660198786" - ["Arbitrum"]="4949039107694359620" - ["Optimism"]="3734403246176062136" - ["Ethereum"]="5009297550715157269" -) +TOTAL_DESTINATIONS=$(ccip_destination_count) -for CHAIN_NAME in "${!CHAIN_SELECTORS[@]}"; do - SELECTOR="${CHAIN_SELECTORS[$CHAIN_NAME]}" +while IFS=$'\t' read -r _chain_name SELECTOR _weth9 _weth10 _rpc_url; do 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 "") @@ -128,14 +120,14 @@ for CHAIN_NAME in "${!CHAIN_SELECTORS[@]}"; do if [ -n "$DEST_WETH10_CLEAN" ] && ! echo "$DEST_WETH10_CLEAN" | grep -qE "^0x0+$"; then ((WETH10_CONFIGURED++)) || true fi -done +done < <(ccip_destination_rows) log_info "Final Configuration Status:" -log_info " WETH9 Bridge: $WETH9_CONFIGURED/7 destinations" -log_info " WETH10 Bridge: $WETH10_CONFIGURED/7 destinations" +log_info " WETH9 Bridge: $WETH9_CONFIGURED/$TOTAL_DESTINATIONS destinations" +log_info " WETH10 Bridge: $WETH10_CONFIGURED/$TOTAL_DESTINATIONS destinations" log_info "" -if [ $WETH9_CONFIGURED -eq 7 ] && [ $WETH10_CONFIGURED -eq 7 ]; then +if [ "$WETH9_CONFIGURED" -eq "$TOTAL_DESTINATIONS" ] && [ "$WETH10_CONFIGURED" -eq "$TOTAL_DESTINATIONS" ]; then log_success "✓ All destinations configured successfully!" log_info "" log_info "Next steps:" diff --git a/scripts/verify-complete-ccip-setup.sh b/scripts/verify-complete-ccip-setup.sh index 5a6bb79..2687fb9 100755 --- a/scripts/verify-complete-ccip-setup.sh +++ b/scripts/verify-complete-ccip-setup.sh @@ -7,6 +7,8 @@ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +source "$PROJECT_ROOT/scripts/lib/address-inventory.sh" +source "$PROJECT_ROOT/scripts/lib/ccip-destinations.sh" # Colors RED='\033[0;31m' @@ -20,12 +22,7 @@ log_success() { echo -e "${GREEN}[✓]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } -# 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 +load_explorer_runtime_env # Configuration RPC_URL="${RPC_URL_138:-http://192.168.11.250:8545}" @@ -70,7 +67,7 @@ log_info "" # A.1: Router Deployment log_info "A.1: Router Deployment" -ROUTER="0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e" +ROUTER="$(resolve_address_value CCIP_ROUTER_ADDRESS CCIP_ROUTER_ADDRESS 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e)" ROUTER_BYTECODE=$(cast code "$ROUTER" --rpc-url "$RPC_URL" 2>/dev/null || echo "") if [ -n "$ROUTER_BYTECODE" ] && [ "$ROUTER_BYTECODE" != "0x" ]; then check_pass "Router contract deployed: $ROUTER" @@ -92,25 +89,14 @@ fi # A.3: Bridge Destinations log_info "" log_info "A.3: Bridge Destination Configuration" -WETH9_BRIDGE="0x971cD9D156f193df8051E48043C476e53ECd4693" -WETH10_BRIDGE="0xe0E93247376aa097dB308B92e6Ba36bA015535D0" - -declare -A CHAIN_SELECTORS=( - ["BSC"]="11344663589394136015" - ["Polygon"]="4051577828743386545" - ["Avalanche"]="6433500567565415381" - ["Base"]="15971525489660198786" - ["Arbitrum"]="4949039107694359620" - ["Optimism"]="3734403246176062136" - ["Ethereum"]="5009297550715157269" -) +WETH9_BRIDGE="$(resolve_address_value CCIPWETH9_BRIDGE CCIPWETH9_BRIDGE 0x971cD9D156f193df8051E48043C476e53ECd4693)" +WETH10_BRIDGE="$(resolve_address_value CCIPWETH10_BRIDGE CCIPWETH10_BRIDGE 0xe0E93247376aa097dB308B92e6Ba36bA015535D0)" WETH9_CONFIGURED=0 WETH10_CONFIGURED=0 -TOTAL_DESTINATIONS=${#CHAIN_SELECTORS[@]} +TOTAL_DESTINATIONS=$(ccip_destination_count) -for CHAIN_NAME in "${!CHAIN_SELECTORS[@]}"; do - SELECTOR="${CHAIN_SELECTORS[$CHAIN_NAME]}" +while IFS=$'\t' read -r _chain_name SELECTOR _weth9 _weth10 _rpc_url; do # Check WETH9 DEST_WETH9=$(cast call "$WETH9_BRIDGE" "destinations(uint64)" "$SELECTOR" --rpc-url "$RPC_URL" 2>/dev/null || echo "") @@ -125,7 +111,7 @@ for CHAIN_NAME in "${!CHAIN_SELECTORS[@]}"; do if [ -n "$DEST_WETH10_CLEAN" ] && ! echo "$DEST_WETH10_CLEAN" | grep -qE "^0x0+$"; then ((WETH10_CONFIGURED++)) || true fi -done +done < <(ccip_destination_rows) if [ $WETH9_CONFIGURED -eq $TOTAL_DESTINATIONS ]; then check_pass "WETH9 Bridge: All $TOTAL_DESTINATIONS destinations configured" @@ -271,4 +257,3 @@ else log_error "✗ Some checks failed" exit 1 fi -