2026-02-10 11:32:49 -08:00
|
|
|
#!/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:-}"
|
2026-03-02 12:14:13 -08:00
|
|
|
WETH9_BRIDGE="0x971cD9D156f193df8051E48043C476e53ECd4693"
|
2026-02-10 11:32:49 -08:00
|
|
|
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 ""
|
|
|
|
|
|