Files
smom-dbis-138/scripts/deployment/check-link-balance-config-ready-chains.sh
defiQUG a780eff7c5 docs(deployment): update CCIPWETH10Bridge address across documentation and scripts
- Changed CCIPWETH10Bridge address from `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` to `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` in various deployment documents and scripts.
- Ensured consistency in bridge configuration and verification steps for ChainID 138 and Mainnet.

Made-with: Cursor
2026-03-24 22:49:50 -07:00

92 lines
3.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Check deployer LINK balance on Gnosis, Cronos, Celo, Wemix (config-ready chains).
# Required before fund-ccip-bridges-with-link.sh: 20 LINK per chain (10 per bridge).
#
# Usage: ./scripts/deployment/check-link-balance-config-ready-chains.sh [gnosis|cronos|celo|wemix|all]
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
cd "$PROJECT_ROOT"
[[ -f "$PROJECT_ROOT/.env" ]] && set -a && source "$PROJECT_ROOT/.env" && set +a
CHAIN="${1:-all}"
REQUIRED_LINK="20" # 10 per WETH9 bridge + 10 per WETH10 bridge
# LINK token addresses (from CCIP directory)
LINK_TOKEN_GNOSIS="${LINK_TOKEN_GNOSIS:-${CCIP_GNOSIS_LINK_TOKEN:-0xE2e73A1c69ecF83F464EFCE6A5be353a37cA09b2}}"
LINK_TOKEN_CRONOS="${LINK_TOKEN_CRONOS:-${CCIP_CRONOS_LINK_TOKEN:-0x8c80A01F461f297Df7F9DA3A4f740D7297C8Ac85}}"
LINK_TOKEN_CELO="${LINK_TOKEN_CELO:-${CCIP_CELO_LINK_TOKEN:-0xd07294e6E917e07dfDcee882dd1e2565085C2ae0}}"
LINK_TOKEN_WEMIX="${LINK_TOKEN_WEMIX:-${CCIP_WEMIX_LINK_TOKEN:-0x80f1FcdC96B55e459BF52b998aBBE2c364935d69}}"
GNOSIS_RPC="${GNOSIS_RPC:-https://rpc.gnosischain.com}"
CRONOS_RPC="${CRONOS_RPC:-https://evm.cronos.org}"
CELO_RPC="${CELO_RPC:-https://forno.celo.org}"
WEMIX_RPC="${WEMIX_RPC:-https://api.wemix.com}"
if [[ -z "${PRIVATE_KEY:-}" ]]; then
echo "Error: Set PRIVATE_KEY in .env" >&2
exit 1
fi
DEPLOYER=$(cast wallet address "$PRIVATE_KEY" 2>/dev/null || true)
[[ -z "$DEPLOYER" ]] && { echo "Error: Could not derive deployer from PRIVATE_KEY" >&2; exit 1; }
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
check_link() {
local name="$1" rpc="$2" link_token="$3"
[[ -z "$rpc" || -z "$link_token" ]] && return 1
local raw
raw=$(cast call "$link_token" "balanceOf(address)(uint256)" "$DEPLOYER" --rpc-url "$rpc" 2>/dev/null || echo "0")
local link_val
link_val=$(echo "scale=4; $raw / 1000000000000000000" | bc 2>/dev/null || echo "0")
if [[ -z "$link_val" || "$link_val" == "0" ]]; then
echo -e " ${RED}${NC} $name: 0 LINK (need $REQUIRED_LINK LINK)"
return 1
fi
if [[ "$(echo "$link_val >= $REQUIRED_LINK" | bc 2>/dev/null)" == "1" ]]; then
echo -e " ${GREEN}${NC} $name: $link_val LINK"
return 0
fi
echo -e " ${YELLOW}${NC} $name: $link_val LINK (need $REQUIRED_LINK LINK)"
return 1
}
echo "=== LINK Balance Check (Config-Ready Chains) ==="
echo "Deployer: ${DEPLOYER:0:10}...${DEPLOYER: -8}"
echo "Required: $REQUIRED_LINK LINK per chain (10 per WETH9 + 10 per WETH10 bridge)"
echo ""
failed=0
case "$CHAIN" in
gnosis) check_link "Gnosis" "$GNOSIS_RPC" "$LINK_TOKEN_GNOSIS" || failed=1 ;;
cronos) check_link "Cronos" "$CRONOS_RPC" "$LINK_TOKEN_CRONOS" || failed=1 ;;
celo) check_link "Celo" "$CELO_RPC" "$LINK_TOKEN_CELO" || failed=1 ;;
wemix) check_link "Wemix" "$WEMIX_RPC" "$LINK_TOKEN_WEMIX" || failed=1 ;;
all)
check_link "Gnosis" "$GNOSIS_RPC" "$LINK_TOKEN_GNOSIS" || failed=1
check_link "Cronos" "$CRONOS_RPC" "$LINK_TOKEN_CRONOS" || failed=1
check_link "Celo" "$CELO_RPC" "$LINK_TOKEN_CELO" || failed=1
check_link "Wemix" "$WEMIX_RPC" "$LINK_TOKEN_WEMIX" || failed=1
;;
*) echo "Usage: $0 [gnosis|cronos|celo|wemix|all]"; exit 1 ;;
esac
echo ""
if [[ $failed -eq 0 ]]; then
echo "LINK balance OK. Run: ./scripts/deployment/fund-ccip-bridges-with-link.sh"
exit 0
else
echo "Acquire LINK on each chain (bridge from mainnet or DEX), then re-run this check."
echo " Gnosis: $LINK_TOKEN_GNOSIS"
echo " Cronos: $LINK_TOKEN_CRONOS"
echo " Celo: $LINK_TOKEN_CELO"
echo " Wemix: $LINK_TOKEN_WEMIX"
exit 1
fi