Files
smom-dbis-138/scripts/deployment/verify-trustless-deployments.sh
2026-03-02 12:14:09 -08:00

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