#!/usr/bin/env bash # Verify Cronos cW rollout addresses exist on-chain and the configured bridge has mint/burn roles. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" SMOM_ROOT="${PROJECT_ROOT}/smom-dbis-138" if [[ -f "$SMOM_ROOT/scripts/lib/deployment/dotenv.sh" ]]; then # shellcheck disable=SC1090 source "$SMOM_ROOT/scripts/lib/deployment/dotenv.sh" load_deployment_env --repo-root "$SMOM_ROOT" else set -a source "$SMOM_ROOT/.env" set +a fi RPC="${CRONOS_CW_VERIFY_RPC_URL:-${CRONOS_RPC_URL:-${CRONOS_RPC:-https://cronos-evm-rpc.publicnode.com}}}" BRIDGE="${CW_BRIDGE_CRONOS:-}" if [[ -z "$BRIDGE" ]]; then echo "[FAIL] CW_BRIDGE_CRONOS is not set" >&2 exit 1 fi MINTER_ROLE="$(cast keccak "MINTER_ROLE")" BURNER_ROLE="$(cast keccak "BURNER_ROLE")" symbols=( CWUSDT_CRONOS CWUSDC_CRONOS CWAUSDT_CRONOS CWUSDW_CRONOS CWEURC_CRONOS CWEURT_CRONOS CWGBPC_CRONOS CWGBPT_CRONOS CWAUDC_CRONOS CWJPYC_CRONOS CWCHFC_CRONOS CWCADC_CRONOS CWXAUC_CRONOS CWXAUT_CRONOS ) missing_code=0 missing_roles=0 echo "=== Cronos cW Rollout Verification ===" echo "RPC: $RPC" echo "Bridge: $BRIDGE" for var in "${symbols[@]}"; do addr="${!var:-}" if [[ -z "$addr" ]]; then echo "[FAIL] $var is unset" missing_code=$((missing_code + 1)) continue fi code="$(cast code "$addr" --rpc-url "$RPC" 2>/dev/null || true)" if [[ -z "$code" || "$code" == "0x" ]]; then echo "[FAIL] $var -> $addr has no bytecode" missing_code=$((missing_code + 1)) continue fi has_minter="$(cast call "$addr" "hasRole(bytes32,address)(bool)" "$MINTER_ROLE" "$BRIDGE" --rpc-url "$RPC" 2>/dev/null || echo false)" has_burner="$(cast call "$addr" "hasRole(bytes32,address)(bool)" "$BURNER_ROLE" "$BRIDGE" --rpc-url "$RPC" 2>/dev/null || echo false)" if [[ "$has_minter" != "true" || "$has_burner" != "true" ]]; then echo "[FAIL] $var -> $addr roles MINTER=$has_minter BURNER=$has_burner" missing_roles=$((missing_roles + 1)) continue fi echo "[OK] $var -> $addr" done echo "Summary: missing_code=$missing_code missing_roles=$missing_roles" if (( missing_code > 0 || missing_roles > 0 )); then exit 1 fi