#!/usr/bin/env bash # Check Documented LINK Token Deployment # Verifies the documented successful deployment at 0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03 set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' log_info() { echo -e "${BLUE}[INFO]${NC} $1"; } 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 if [ -f "$PROJECT_ROOT/.env" ]; then source "$PROJECT_ROOT/.env" 2>/dev/null || true fi if [ -z "$PRIVATE_KEY" ]; then log_error "PRIVATE_KEY not set in .env" exit 1 fi CHAIN138_RPC="${RPC_URL_138:-http://192.168.11.211:8545}" LINK_DEPLOYED="0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03" WALLET=$(cast wallet address --private-key "$PRIVATE_KEY") log_info "=== Documented LINK Token Deployment Check ===" log_info "Documented Address: $LINK_DEPLOYED" log_info "Wallet: $WALLET" log_info "RPC: $CHAIN138_RPC" log_info "" # Check 1: Contract Existence log_info "1. Checking if contract exists..." LINK_CODE=$(cast code "$LINK_DEPLOYED" --rpc-url "$CHAIN138_RPC" 2>/dev/null || echo "") if [ -z "$LINK_CODE" ] || [ "${#LINK_CODE}" -lt 10 ]; then log_error " ❌ Contract not found at $LINK_DEPLOYED" log_info "" log_info "The documented deployment may not be on the current RPC endpoint." log_info "Expected RPC was: http://192.168.11.250:8545" log_info "Current RPC is: $CHAIN138_RPC" exit 1 else CODE_SIZE=$(( ${#LINK_CODE} / 2 )) log_success " ✓ Contract exists (code size: $CODE_SIZE bytes)" fi # Check 2: Token Info log_info "" log_info "2. Checking token information..." NAME=$(cast call "$LINK_DEPLOYED" "name()(string)" --rpc-url "$CHAIN138_RPC" 2>/dev/null || echo "") SYMBOL=$(cast call "$LINK_DEPLOYED" "symbol()(string)" --rpc-url "$CHAIN138_RPC" 2>/dev/null || echo "") DECIMALS=$(cast call "$LINK_DEPLOYED" "decimals()(uint8)" --rpc-url "$CHAIN138_RPC" 2>/dev/null || echo "") if [ -n "$NAME" ] && [ -n "$SYMBOL" ]; then log_success " Name: $NAME" log_success " Symbol: $SYMBOL" log_info " Decimals: $DECIMALS" else log_warn " ⚠ Could not retrieve token info" fi # Check 3: Wallet Balance log_info "" log_info "3. Checking wallet LINK balance..." BALANCE=$(cast call "$LINK_DEPLOYED" "balanceOf(address)(uint256)" "$WALLET" --rpc-url "$CHAIN138_RPC" 2>&1 || echo "ERROR") if [[ "$BALANCE" == *"ERROR"* ]]; then log_error " ❌ Could not check balance: $BALANCE" else BALANCE_LINK=$(echo "$BALANCE" | cast --to-unit wei ether 2>/dev/null || echo "0") log_info " Balance: $BALANCE_LINK LINK" MIN_LINK="1.0" if (( $(echo "$BALANCE_LINK >= $MIN_LINK" | bc -l 2>/dev/null || echo "0") )); then log_success " ✓ Sufficient balance (>= $MIN_LINK LINK)" else log_warn " ⚠ Low balance: $BALANCE_LINK LINK (recommended: >= $MIN_LINK LINK)" fi fi # Summary log_info "" log_info "=== Summary ===" log_success "✓ LINK token contract found at: $LINK_DEPLOYED" log_info " This matches documented successful deployment" log_info "" log_info "To use this LINK token:" log_info "1. Update .env: LINK_TOKEN=$LINK_DEPLOYED" log_info "2. Update CCIP Router fee token if needed" log_info "3. Verify wallet has sufficient LINK for fees"