Files
smom-dbis-138/scripts/deployment/preflight-monad-deploy.sh
defiQUG 1ec308c3a0
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m12s
CI/CD Pipeline / Security Scanning (push) Successful in 2m21s
CI/CD Pipeline / Lint and Format (push) Failing after 25s
CI/CD Pipeline / Terraform Validation (push) Failing after 24s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 22s
Deploy ChainID 138 / Deploy ChainID 138 (push) Failing after 41s
Validation / validate-genesis (push) Successful in 27s
Validation / validate-terraform (push) Failing after 25s
Validation / validate-kubernetes (push) Failing after 9s
Validation / validate-smart-contracts (push) Failing after 9s
Validation / validate-security (push) Failing after 1m6s
Validation / validate-documentation (push) Failing after 16s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 23s
Verify Deployment / Verify Deployment (push) Failing after 52s
Add Monad CCIP deploy scripts, relay hardening, and bridge contract updates.
Includes Monad↔Chain138 CCIP proof/deploy/verify tooling, relay service guards,
bridge integration tweaks, and frontend ENS/network config follow-ups.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-13 12:52:49 -07:00

78 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Preflight Monad mainnet (143) CCIP stack deploy: RPC, deployer MON balance, CCIP router code.
#
# Usage: cd smom-dbis-138 && ./scripts/deployment/preflight-monad-deploy.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
cd "$PROJECT_ROOT"
if [[ -f "$SCRIPT_DIR/../lib/deployment/dotenv.sh" ]]; then
# shellcheck disable=SC1090
source "$SCRIPT_DIR/../lib/deployment/dotenv.sh"
load_deployment_env --repo-root "$PROJECT_ROOT"
elif [[ -f "$PROJECT_ROOT/.env" ]]; then
set -a
# shellcheck disable=SC1090
source "$PROJECT_ROOT/.env"
set +a
fi
DEPLOYER="${DEPLOYER_ADDRESS:-0x4A666F96fC8764181194447A7dFdb7d471b301C8}"
RPC="${MONAD_MAINNET_RPC:-https://rpc.monad.xyz}"
# Infura template without expanded INFURA_PROJECT_ID is unusable — fall back to public RPC
if [[ "$RPC" =~ infura\.io/v3/?$ ]]; then
RPC="${MONAD_MAINNET_RPC_PUBLIC:-https://rpc.monad.xyz}"
fi
ROUTER="${CCIP_MONAD_ROUTER:-0x33566fE5976AAa420F3d5C64996641Fc3858CaDB}"
MIN_MON="${MONAD_DEPLOY_MIN_MON:-1}"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo "=== Monad deploy preflight (chain 143) ==="
echo "Deployer: $DEPLOYER"
echo "RPC: ${RPC%%\?*}"
if ! command -v cast >/dev/null 2>&1; then
echo -e "${RED}cast (Foundry) required${NC}" >&2
exit 1
fi
chain_id=$(cast chain-id --rpc-url "$RPC" 2>/dev/null || echo "")
if [[ "$chain_id" != "143" ]]; then
echo -e "${RED}RPC chain-id=$chain_id (expected 143)${NC}" >&2
exit 1
fi
echo -e "${GREEN}RPC OK (chain 143)${NC}"
bal_wei=$(cast balance "$DEPLOYER" --rpc-url "$RPC" 2>/dev/null || echo "0")
bal_mon=$(cast --to-unit "$bal_wei" ether 2>/dev/null || echo "0")
echo "Deployer MON balance: $bal_mon"
if awk -v b="$bal_mon" -v m="$MIN_MON" 'BEGIN { exit !(b+0 >= m+0) }'; then
echo -e "${GREEN}Balance OK (>= ${MIN_MON} MON recommended)${NC}"
else
echo -e "${RED}Insufficient MON (need >= ${MIN_MON})${NC}" >&2
exit 1
fi
code=$(cast code "$ROUTER" --rpc-url "$RPC" 2>/dev/null || echo "0x")
if [[ "$code" == "0x" || -z "$code" ]]; then
echo -e "${RED}CCIP router has no code at $ROUTER${NC}" >&2
exit 1
fi
echo -e "${GREEN}CCIP router code present${NC}"
if [[ -n "${CCIPWETH9_BRIDGE_MONAD:-}" && -n "${CCIPWETH10_BRIDGE_MONAD:-}" ]]; then
echo -e "${YELLOW}CCIPWETH9_BRIDGE_MONAD / CCIPWETH10_BRIDGE_MONAD already set — deploy script will skip unless forced${NC}"
fi
echo ""
echo "Preflight OK. Next:"
echo " DRY_RUN=1 ./scripts/deployment/deploy-monad-ccip-stack.sh"
echo " ./scripts/deployment/deploy-monad-ccip-stack.sh --execute"