- Update dbis_core, cross-chain-pmm-lps, explorer-monorepo, metamask-integration, pr-workspace/chains - Omit embedded publish git dirs and empty placeholders from index Made-with: Cursor
85 lines
2.2 KiB
Bash
Executable File
85 lines
2.2 KiB
Bash
Executable File
#!/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
|