Files
smom-dbis-138/scripts/deployment/verify-ccip-deployment.sh
2026-06-02 05:59:06 -07:00

181 lines
5.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Verify CCIP deployment on ChainID 138
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/init.sh"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Load environment
if [ -f "$PROJECT_ROOT/.env" ]; then
source "$PROJECT_ROOT/.env"
fi
RPC_URL="${RPC_URL_138:-${CHAIN138_RPC_URL:-http://localhost:8545}}"
log_info "=== CCIP Deployment Verification for ChainID 138 ==="
echo "RPC URL: $RPC_URL"
echo ""
# Check if RPC is accessible
if ! cast block-number --rpc-url "$RPC_URL" &>/dev/null; then
log_error "Error: Cannot connect to RPC at $RPC_URL"
exit 1
fi
CHAIN_ID=$(cast chain-id --rpc-url "$RPC_URL" 2>/dev/null || echo "unknown")
if [ "$CHAIN_ID" != "138" ]; then
log_warn "⚠️ Warning: Chain ID is $CHAIN_ID, expected 138"
fi
echo "Chain ID: $CHAIN_ID"
echo ""
# Required addresses
CCIP_ROUTER="${CCIP_CHAIN138_ROUTER:-}"
LINK_TOKEN="${CCIP_CHAIN138_LINK_TOKEN:-}"
WETH9_BRIDGE="${CCIPWETH9_BRIDGE_CHAIN138:-}"
WETH10_BRIDGE="${CCIPWETH10_BRIDGE_CHAIN138:-}"
CHAIN_SELECTOR="${CHAIN138_SELECTOR:-}"
# Verification results
VERIFICATION_PASSED=0
VERIFICATION_FAILED=0
VERIFICATION_WARNINGS=0
check_contract() {
local name=$1
local address=$2
local required=${3:-true}
if [ -z "$address" ] || [ "$address" = "" ]; then
if [ "$required" = "true" ]; then
echo "$name: Not configured"
((VERIFICATION_FAILED++))
else
echo " ⚠️ $name: Not configured (optional)"
((VERIFICATION_WARNINGS++))
fi
return 1
fi
# Check if address has code
CODE=$(cast code "$address" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -z "$CODE" ] || [ "$CODE" = "0x" ]; then
echo "$name: No code at address $address"
((VERIFICATION_FAILED++))
return 1
fi
echo "$name: Deployed at $address"
((VERIFICATION_PASSED++))
return 0
}
verify_router_config() {
local router=$1
if [ -z "$router" ]; then
return 1
fi
echo ""
echo "Router Configuration:"
# Check supported chains
ETH_SELECTOR="5009297550715157269"
ETH_SUPPORTED=$(cast call "$router" "supportedChains(uint64)" "$ETH_SELECTOR" --rpc-url "$RPC_URL" 2>/dev/null || echo "false")
if [ "$ETH_SUPPORTED" = "true" ]; then
echo " ✅ Ethereum Mainnet is supported"
else
echo " ⚠️ Ethereum Mainnet not configured as supported chain"
((VERIFICATION_WARNINGS++))
fi
# Check fee token
FEE_TOKEN=$(cast call "$router" "feeToken()" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$FEE_TOKEN" ]; then
if [ "$FEE_TOKEN" = "0x0000000000000000000000000000000000000000" ]; then
echo " ✅ Fee token: Native ETH"
else
echo " ✅ Fee token: $FEE_TOKEN"
fi
fi
}
verify_bridge_config() {
local bridge=$1
local name=$2
if [ -z "$bridge" ]; then
return 1
fi
echo ""
echo "$name Configuration:"
# Check router
BRIDGE_ROUTER=$(cast call "$bridge" "ccipRouter()" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$BRIDGE_ROUTER" ] && [ "$BRIDGE_ROUTER" != "0x0000000000000000000000000000000000000000" ]; then
echo " ✅ Router: $BRIDGE_ROUTER"
else
echo " ⚠️ Router not configured"
((VERIFICATION_WARNINGS++))
fi
# Check destinations
ETH_SELECTOR="5009297550715157269"
DEST=$(cast call "$bridge" "destinations(uint64)" "$ETH_SELECTOR" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$DEST" ] && echo "$DEST" | grep -q "0x[0-9a-f]\{40\}"; then
echo " ✅ Ethereum Mainnet destination configured"
else
echo " ⚠️ Ethereum Mainnet destination not configured"
((VERIFICATION_WARNINGS++))
fi
}
echo "=== Contract Deployment Verification ==="
check_contract "CCIP Router" "$CCIP_ROUTER" true
check_contract "LINK Token" "$LINK_TOKEN" false
check_contract "CCIPWETH9Bridge" "$WETH9_BRIDGE" true
check_contract "CCIPWETH10Bridge" "$WETH10_BRIDGE" true
if [ -n "$CCIP_ROUTER" ]; then
verify_router_config "$CCIP_ROUTER"
fi
if [ -n "$WETH9_BRIDGE" ]; then
verify_bridge_config "$WETH9_BRIDGE" "CCIPWETH9Bridge"
fi
if [ -n "$WETH10_BRIDGE" ]; then
verify_bridge_config "$WETH10_BRIDGE" "CCIPWETH10Bridge"
fi
echo ""
echo "=== Chain Selector ==="
if [ -n "$CHAIN_SELECTOR" ]; then
echo " ✅ Chain Selector: $CHAIN_SELECTOR"
else
echo " ⚠️ Chain Selector: Not configured"
((VERIFICATION_WARNINGS++))
fi
echo ""
echo "=== Verification Summary ==="
echo "✅ Passed: $VERIFICATION_PASSED"
echo "❌ Failed: $VERIFICATION_FAILED"
echo "⚠️ Warnings: $VERIFICATION_WARNINGS"
echo ""
if [ $VERIFICATION_FAILED -eq 0 ]; then
log_success "✅ All required contracts are deployed!"
if [ $VERIFICATION_WARNINGS -gt 0 ]; then
log_warn "⚠️ Some optional configurations are missing"
fi
exit 0
else
log_error "❌ Some required contracts are missing or invalid"
exit 1
fi