122 lines
4.2 KiB
Bash
Executable File
122 lines
4.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Verify deployed Trustless Bridge contracts (BondManager, LiquidityPool, Inbox, Lockbox) on each chain.
|
|
# Uses dotenv at smom-dbis-138/.env. Requires: cast (Foundry).
|
|
# Exit 0 if all checked addresses have code; non-zero if any missing.
|
|
set -euo pipefail
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
DOTENV="$REPO_ROOT/.env"
|
|
cd "$REPO_ROOT"
|
|
[[ -f "$DOTENV" ]] && set -a && source "$DOTENV" && set +a
|
|
|
|
PASS=0
|
|
FAIL=0
|
|
FAILED_CHAINS=""
|
|
|
|
check_addr() {
|
|
local label="$1"
|
|
local addr="$2"
|
|
local rpc="$3"
|
|
if [[ -z "$addr" || "$addr" == "0x"*"..." ]]; then return; fi
|
|
local code
|
|
code=$(cast code "$addr" --rpc-url "$rpc" 2>/dev/null || true)
|
|
if [[ -n "$code" && "${#code}" -gt 2 ]]; then
|
|
echo " OK $label $addr"
|
|
PASS=$((PASS+1))
|
|
return 0
|
|
else
|
|
echo " FAIL $label $addr (no code or RPC error)"
|
|
FAIL=$((FAIL+1))
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
verify_chain() {
|
|
local name="$1"
|
|
local rpc="$2"
|
|
shift 2
|
|
if [[ -z "$rpc" ]]; then echo "Skip $name (no RPC)"; return; fi
|
|
echo "--- $name ---"
|
|
local any_fail=0
|
|
while [[ $# -ge 2 ]]; do
|
|
check_addr "$1" "$2" "$rpc" || any_fail=1
|
|
shift 2
|
|
done
|
|
if [[ $any_fail -ne 0 ]]; then FAILED_CHAINS="$FAILED_CHAINS $name"; fi
|
|
echo ""
|
|
}
|
|
|
|
# Mainnet (Ethereum)
|
|
verify_chain "Ethereum Mainnet" "${ETHEREUM_MAINNET_RPC:-}" \
|
|
"BOND_MANAGER" "${BOND_MANAGER_MAINNET:-}" \
|
|
"LIQUIDITY_POOL" "${LIQUIDITY_POOL_ETH_MAINNET:-}" \
|
|
"INBOX" "${INBOX_ETH_MAINNET:-}"
|
|
|
|
# Chain 138
|
|
verify_chain "Chain 138" "${RPC_URL_138:-${CHAIN_138_RPC_URL:-}}" \
|
|
"LOCKBOX_138" "${LOCKBOX_138:-}"
|
|
|
|
# BSC
|
|
verify_chain "BSC" "${BSC_RPC_URL:-}" \
|
|
"BOND_MANAGER" "${BSC_BOND_MANAGER:-}" \
|
|
"LIQUIDITY_POOL" "${BSC_LIQUIDITY_POOL_ETH:-}" \
|
|
"INBOX" "${BSC_INBOX_ETH:-}" \
|
|
"LOCKBOX" "${BSC_LOCKBOX:-}"
|
|
|
|
# Polygon
|
|
verify_chain "Polygon" "${POLYGON_MAINNET_RPC:-}" \
|
|
"BOND_MANAGER" "${POLYGON_BOND_MANAGER:-}" \
|
|
"LIQUIDITY_POOL" "${POLYGON_LIQUIDITY_POOL_ETH:-}" \
|
|
"INBOX" "${POLYGON_INBOX_ETH:-}" \
|
|
"LOCKBOX" "${POLYGON_LOCKBOX:-}"
|
|
|
|
# Base
|
|
verify_chain "Base" "${BASE_MAINNET_RPC:-}" \
|
|
"BOND_MANAGER" "${BASE_BOND_MANAGER:-}" \
|
|
"LIQUIDITY_POOL" "${BASE_LIQUIDITY_POOL_ETH:-}" \
|
|
"INBOX" "${BASE_INBOX_ETH:-}" \
|
|
"LOCKBOX" "${BASE_LOCKBOX:-}"
|
|
|
|
# Optimism
|
|
verify_chain "Optimism" "${OPTIMISM_MAINNET_RPC:-}" \
|
|
"BOND_MANAGER" "${OPTIMISM_BOND_MANAGER:-}" \
|
|
"LIQUIDITY_POOL" "${OPTIMISM_LIQUIDITY_POOL_ETH:-}" \
|
|
"INBOX" "${OPTIMISM_INBOX_ETH:-}" \
|
|
"LOCKBOX" "${OPTIMISM_LOCKBOX:-}"
|
|
|
|
# Cronos
|
|
verify_chain "Cronos" "${CRONOS_RPC_URL:-}" \
|
|
"BOND_MANAGER" "${CRONOS_BOND_MANAGER:-}" \
|
|
"LIQUIDITY_POOL" "${CRONOS_LIQUIDITY_POOL_ETH:-}" \
|
|
"INBOX" "${CRONOS_INBOX_ETH:-}" \
|
|
"LOCKBOX" "${CRONOS_LOCKBOX:-}"
|
|
|
|
# Arbitrum (addresses from deployment run; may not be in .env)
|
|
verify_chain "Arbitrum" "${ARBITRUM_MAINNET_RPC:-}" \
|
|
"BOND_MANAGER" "${ARBITRUM_BOND_MANAGER:-0x26Eb0AC01BAb5756c73945d48e2B8e28D6b32287}" \
|
|
"LIQUIDITY_POOL" "${ARBITRUM_LIQUIDITY_POOL_ETH:-0x866aCe8664FF40E0a8842705E0D140E614eCc67B}" \
|
|
"INBOX" "${ARBITRUM_INBOX_ETH:-0xb1061A71412E18F66FF8D043e3F0682532ECdaf7}" \
|
|
"LOCKBOX" "${ARBITRUM_LOCKBOX:-0x57f8b4DB2d92CAB6093405b53158ab3224D37D24}"
|
|
|
|
# Avalanche
|
|
verify_chain "Avalanche" "${AVALANCHE_RPC_URL:-${AVALANCHE_MAINNET_RPC:-}}" \
|
|
"BOND_MANAGER" "${AVALANCHE_BOND_MANAGER:-0xD1695ed8F7683EE5d1BF55ed34585B22F474a7ef}" \
|
|
"LIQUIDITY_POOL" "${AVALANCHE_LIQUIDITY_POOL_ETH:-0xb6D2f38b9015F32ccE8818509c712264E7fceeD3}" \
|
|
"INBOX" "${AVALANCHE_INBOX_ETH:-0x866aCe8664FF40E0a8842705E0D140E614eCc67B}" \
|
|
"LOCKBOX" "${AVALANCHE_LOCKBOX:-0x7e6fB8D80f81430e560F8232b2A4fd06249d74ce}"
|
|
|
|
# Gnosis
|
|
verify_chain "Gnosis" "${GNOSIS_MAINNET_RPC:-}" \
|
|
"BOND_MANAGER" "${GNOSIS_BOND_MANAGER:-0x73376eB92c16977B126dB9112936A20Fa0De3442}" \
|
|
"LIQUIDITY_POOL" "${GNOSIS_LIQUIDITY_POOL_ETH:-0xb689c1C69DAa08DEb5D8feA2aBF0F64bFD409727}" \
|
|
"INBOX" "${GNOSIS_INBOX_ETH:-0x4C38F9A5ed68A04cd28a72E8c68C459Ec34576f3}" \
|
|
"LOCKBOX" "${GNOSIS_LOCKBOX:-0x0CA60e6f8589c540200daC9D9Cb27BC2e48eE66A}"
|
|
|
|
echo "=============================================="
|
|
echo "Summary: $PASS passed, $FAIL failed"
|
|
if [[ -n "$FAILED_CHAINS" ]]; then
|
|
echo "Chains with failures:$FAILED_CHAINS"
|
|
exit 1
|
|
fi
|
|
exit 0
|