2026-02-10 11:32:49 -08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# Complete All Prerequisites for Bridge Funding
|
|
|
|
|
# This script orchestrates all prerequisite steps
|
|
|
|
|
# Usage: ./complete-prerequisites.sh
|
|
|
|
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
2026-03-27 22:10:38 -07:00
|
|
|
source "$PROJECT_ROOT/scripts/lib/address-inventory.sh"
|
2026-02-10 11:32:49 -08:00
|
|
|
|
|
|
|
|
# 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"; }
|
|
|
|
|
log_header() { echo -e "${CYAN}[HEADER]${NC} $1"; }
|
|
|
|
|
|
2026-03-27 22:10:38 -07:00
|
|
|
load_explorer_runtime_env
|
2026-02-10 11:32:49 -08:00
|
|
|
|
|
|
|
|
RPC_URL="${RPC_URL_138:-http://192.168.11.250:8545}"
|
2026-03-27 22:10:38 -07:00
|
|
|
LINK_TOKEN="$(resolve_address_value LINK_TOKEN LINK_TOKEN 0x326C977E6efc84E512bB9C30f76E30c160eD06FB)"
|
2026-02-10 11:32:49 -08:00
|
|
|
|
|
|
|
|
log_header "========================================="
|
|
|
|
|
log_header "Complete Prerequisites for Bridge Funding"
|
|
|
|
|
log_header "========================================="
|
|
|
|
|
log_info ""
|
|
|
|
|
|
|
|
|
|
# Step 1: Check LINK token deployment
|
|
|
|
|
log_header "Step 1: Check LINK Token Deployment"
|
|
|
|
|
log_info ""
|
|
|
|
|
|
|
|
|
|
LINK_CODE=$(cast code "$LINK_TOKEN" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
|
|
|
|
|
if [ -n "$LINK_CODE" ] && [ "$LINK_CODE" != "0x" ]; then
|
|
|
|
|
# Try to verify it's a valid ERC20
|
|
|
|
|
NAME=$(cast call "$LINK_TOKEN" "name()" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
|
|
|
|
|
if [ -n "$NAME" ]; then
|
|
|
|
|
log_success "✓ LINK token is deployed and valid"
|
|
|
|
|
log_info " Address: $LINK_TOKEN"
|
|
|
|
|
log_info " Name: $NAME"
|
|
|
|
|
LINK_DEPLOYED=true
|
|
|
|
|
else
|
|
|
|
|
log_warn "Contract exists but may not be a valid ERC20 token"
|
|
|
|
|
LINK_DEPLOYED=false
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
log_warn "LINK token not deployed"
|
|
|
|
|
LINK_DEPLOYED=false
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ "$LINK_DEPLOYED" = false ]; then
|
|
|
|
|
log_info ""
|
|
|
|
|
log_info "Attempting to deploy LINK token..."
|
|
|
|
|
if [ -f "$SCRIPT_DIR/deploy-link-token.sh" ]; then
|
|
|
|
|
if "$SCRIPT_DIR/deploy-link-token.sh"; then
|
|
|
|
|
log_success "✓ LINK token deployed successfully"
|
|
|
|
|
LINK_DEPLOYED=true
|
|
|
|
|
else
|
|
|
|
|
log_error "Failed to deploy LINK token"
|
|
|
|
|
log_info "Please deploy manually or check deployment script"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
log_error "deploy-link-token.sh not found"
|
|
|
|
|
log_info "Please deploy LINK token manually"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
log_info ""
|
|
|
|
|
log_header "Step 2: Check Account LINK Balance"
|
|
|
|
|
log_info ""
|
|
|
|
|
|
|
|
|
|
if [ -z "${PRIVATE_KEY:-}" ]; then
|
2026-03-27 22:10:38 -07:00
|
|
|
log_error "PRIVATE_KEY not available in effective environment"
|
2026-02-10 11:32:49 -08:00
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ACCOUNT=$(cast wallet address "$PRIVATE_KEY" 2>/dev/null || echo "")
|
|
|
|
|
if [ -z "$ACCOUNT" ]; then
|
|
|
|
|
log_error "Could not derive address from PRIVATE_KEY"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
LINK_BAL=$(cast call "$LINK_TOKEN" "balanceOf(address)" "$ACCOUNT" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
|
|
|
|
|
LINK_BAL_ETH=$(cast --from-wei "$LINK_BAL" ether 2>/dev/null || echo "0")
|
|
|
|
|
|
|
|
|
|
log_info "Account: $ACCOUNT"
|
|
|
|
|
log_info "LINK Balance: $LINK_BAL_ETH LINK"
|
|
|
|
|
|
|
|
|
|
REQUIRED_LINK="20"
|
|
|
|
|
if (( $(echo "$LINK_BAL_ETH < $REQUIRED_LINK" | bc -l 2>/dev/null || echo 1) )); then
|
|
|
|
|
log_warn "Insufficient LINK balance"
|
|
|
|
|
log_info " Current: $LINK_BAL_ETH LINK"
|
|
|
|
|
log_info " Required: $REQUIRED_LINK LINK"
|
|
|
|
|
log_info " Needed: $(echo "scale=2; $REQUIRED_LINK - $LINK_BAL_ETH" | bc) LINK"
|
|
|
|
|
log_info ""
|
|
|
|
|
log_info "Options to acquire LINK:"
|
|
|
|
|
log_info "1. If you deployed the token, you should have received the initial supply"
|
|
|
|
|
log_info "2. Transfer LINK from another account"
|
|
|
|
|
log_info "3. Use a faucet (if available on ChainID 138)"
|
|
|
|
|
log_info "4. Bridge LINK from another chain"
|
|
|
|
|
log_info ""
|
|
|
|
|
log_warn "⚠️ Cannot proceed without sufficient LINK balance"
|
|
|
|
|
log_info "Please acquire LINK tokens before continuing"
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
log_success "✓ Sufficient LINK balance"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
log_info ""
|
|
|
|
|
log_header "Step 3: Fund Bridge Contracts"
|
|
|
|
|
log_info ""
|
|
|
|
|
|
|
|
|
|
if [ -f "$SCRIPT_DIR/fund-bridge-contracts.sh" ]; then
|
|
|
|
|
log_info "Funding bridge contracts with 10 LINK each..."
|
|
|
|
|
if "$SCRIPT_DIR/fund-bridge-contracts.sh" 10; then
|
|
|
|
|
log_success "✓ Bridge contracts funded successfully"
|
|
|
|
|
else
|
|
|
|
|
log_error "Failed to fund bridge contracts"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
log_error "fund-bridge-contracts.sh not found"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
log_info ""
|
|
|
|
|
log_header "Step 4: Verify Funding"
|
|
|
|
|
log_info ""
|
|
|
|
|
|
|
|
|
|
# Run funding report
|
|
|
|
|
if [ -f "$SCRIPT_DIR/get-funding-report.sh" ]; then
|
|
|
|
|
"$SCRIPT_DIR/get-funding-report.sh" | tail -30
|
|
|
|
|
else
|
|
|
|
|
log_warn "get-funding-report.sh not found, skipping verification"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
log_info ""
|
|
|
|
|
log_header "========================================="
|
|
|
|
|
log_header "Prerequisites Complete!"
|
|
|
|
|
log_header "========================================="
|
|
|
|
|
log_info ""
|
|
|
|
|
log_success "✓ LINK token deployed/verified"
|
|
|
|
|
log_success "✓ Account has sufficient LINK"
|
|
|
|
|
log_success "✓ Bridge contracts funded"
|
|
|
|
|
log_info ""
|
|
|
|
|
log_info "You can now proceed with bridge operations!"
|
|
|
|
|
log_info ""
|