Files
explorer-monorepo/scripts/complete-all-prerequisites.sh

143 lines
5.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# Complete All Prerequisites - One Script to Rule Them All
# Deploys LINK token, mints tokens, and funds bridges
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
source "$PROJECT_ROOT/.env" 2>/dev/null || source "$PROJECT_ROOT/../.env" 2>/dev/null || true
RPC_URL="${RPC_URL_138:-http://192.168.11.250:8545}"
LINK_TOKEN="${LINK_TOKEN:-}"
WETH9_BRIDGE="0x971cD9D156f193df8051E48043C476e53ECd4693"
WETH10_BRIDGE="0xe0E93247376aa097dB308B92e6Ba36bA015535D0"
ACCOUNT=$(cast wallet address "$PRIVATE_KEY")
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ COMPLETE ALL PREREQUISITES ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
echo "Account: $ACCOUNT"
echo "RPC: $RPC_URL"
echo ""
# Step 1: Check if LINK token exists and is confirmed
if [ -n "$LINK_TOKEN" ] && [ ${#LINK_TOKEN} -eq 42 ]; then
CODE=$(cast code "$LINK_TOKEN" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$CODE" ] && [ "$CODE" != "0x" ] && [ ${#CODE} -gt 100 ]; then
echo "✅ LINK Token already deployed: $LINK_TOKEN"
LINK_CONFIRMED=true
else
echo "⏳ LINK Token not yet confirmed: $LINK_TOKEN"
LINK_CONFIRMED=false
fi
else
echo "❌ LINK Token not configured"
LINK_CONFIRMED=false
fi
# Step 2: Deploy LINK token if not confirmed
if [ "${LINK_CONFIRMED:-false}" != "true" ]; then
echo ""
echo "=== Deploying LINK Token ==="
DEPLOY_OUTPUT=$("$SCRIPT_DIR/force-deploy-link.sh" $(cast --to-wei 10 gwei) 2>&1 || true)
echo "$DEPLOY_OUTPUT"
# Extract deployed address
NEW_LINK=$(echo "$DEPLOY_OUTPUT" | grep -oE "0x[0-9a-fA-F]{40}" | head -1 || echo "")
if [ -n "$NEW_LINK" ] && [ ${#NEW_LINK} -eq 42 ]; then
echo ""
echo "✓ Deployment transaction sent: $NEW_LINK"
echo "Waiting 60 seconds for network confirmation..."
sleep 60
# Update .env
sed -i "s|^LINK_TOKEN=.*|LINK_TOKEN=$NEW_LINK|" "$PROJECT_ROOT/.env" 2>/dev/null || \
echo "LINK_TOKEN=$NEW_LINK" >> "$PROJECT_ROOT/.env"
export LINK_TOKEN="$NEW_LINK"
# Verify
CODE=$(cast code "$NEW_LINK" --rpc-url "$RPC_URL" 2>/dev/null || echo "")
if [ -n "$CODE" ] && [ "$CODE" != "0x" ] && [ ${#CODE} -gt 100 ]; then
echo "✅ LINK Token confirmed!"
LINK_CONFIRMED=true
else
echo "⏳ Still waiting for confirmation..."
echo " Check with: cast code $NEW_LINK --rpc-url $RPC_URL"
exit 0
fi
else
echo ""
echo "❌ Deployment failed. Check output above."
echo " Try manual deployment: ./scripts/deploy-via-remix-instructions.sh"
exit 1
fi
fi
# Step 3: Mint tokens if balance is low
if [ "${LINK_CONFIRMED:-false}" = "true" ]; then
echo ""
echo "=== Checking LINK Balance ==="
BALANCE=$(cast call "$LINK_TOKEN" "balanceOf(address)" "$ACCOUNT" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
BALANCE_ETH=$(cast --from-wei "$BALANCE" ether 2>/dev/null || echo "0")
echo "Current Balance: $BALANCE_ETH LINK"
if (( $(echo "$BALANCE_ETH < 20" | bc -l 2>/dev/null || echo 1) )); then
echo ""
echo "=== Minting 1M LINK Tokens ==="
MINT_AMOUNT="1000000000000000000000000"
cast send "$LINK_TOKEN" "mint(address,uint256)" "$ACCOUNT" "$MINT_AMOUNT" \
--rpc-url "$RPC_URL" \
--private-key "$PRIVATE_KEY" \
--gas-price $(cast --to-wei 10 gwei) \
--legacy \
2>&1 | tail -5
echo "Waiting 20 seconds for mint confirmation..."
sleep 20
BALANCE=$(cast call "$LINK_TOKEN" "balanceOf(address)" "$ACCOUNT" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
BALANCE_ETH=$(cast --from-wei "$BALANCE" ether 2>/dev/null || echo "0")
echo "New Balance: $BALANCE_ETH LINK"
else
echo "✓ Sufficient balance"
fi
fi
# Step 4: Fund bridges
if [ "${LINK_CONFIRMED:-false}" = "true" ]; then
echo ""
echo "=== Funding Bridge Contracts ==="
export LINK_TOKEN
"$SCRIPT_DIR/fund-bridge-contracts.sh" 10 2>&1 | tail -25
echo ""
echo "=== Verifying Bridge Funding ==="
WETH9_LINK=$(cast call "$LINK_TOKEN" "balanceOf(address)" "$WETH9_BRIDGE" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
WETH9_LINK_ETH=$(cast --from-wei "$WETH9_LINK" ether 2>/dev/null || echo "0")
WETH10_LINK=$(cast call "$LINK_TOKEN" "balanceOf(address)" "$WETH10_BRIDGE" --rpc-url "$RPC_URL" 2>/dev/null || echo "0")
WETH10_LINK_ETH=$(cast --from-wei "$WETH10_LINK" ether 2>/dev/null || echo "0")
echo "WETH9 Bridge: $WETH9_LINK_ETH LINK"
echo "WETH10 Bridge: $WETH10_LINK_ETH LINK"
if (( $(echo "$WETH9_LINK_ETH >= 10" | bc -l 2>/dev/null || echo 0) )) && \
(( $(echo "$WETH10_LINK_ETH >= 10" | bc -l 2>/dev/null || echo 0) )); then
echo ""
echo "✅✅✅ ALL PREREQUISITES COMPLETE!"
echo " ✓ LINK token deployed"
echo " ✓ LINK tokens minted"
echo " ✓ Bridges funded"
echo ""
echo "🎉 SYSTEM FULLY OPERATIONAL!"
else
echo ""
echo "⚠ Some bridges may still need funding"
fi
fi
echo ""