#!/usr/bin/env bash # Complete All Contract Deployments by Priority # Run from project root. Requires: PRIVATE_KEY, RPC_URL_138 (Chain 138 Core) or network access to RPC. # Usage: ./scripts/complete-all-contract-deployments.sh (PRIVATE_KEY read from smom-dbis-138/.env or root .env) set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" cd "$PROJECT_ROOT" # Load PRIVATE_KEY from dotenv (root .env, then smom-dbis-138/.env) [[ -f "${SCRIPT_DIR}/lib/load-project-env.sh" ]] && source "${SCRIPT_DIR}/lib/load-project-env.sh" 2>/dev/null || true source config/ip-addresses.conf 2>/dev/null || true RPC="${RPC_URL_138:-http://192.168.11.211:8545}" if [[ -z "${PRIVATE_KEY:-}" ]]; then echo "ERROR: PRIVATE_KEY required. Set PRIVATE_KEY in smom-dbis-138/.env or root .env." exit 1 fi echo "==============================================" echo "Complete Contract Deployments (Chain 138)" echo "==============================================" echo "RPC: $RPC" echo "" # Priority 1: CCIP WETH9 Bridge echo ">>> Priority 1: CCIP WETH9 Bridge" bash scripts/deploy-and-configure-weth9-bridge-chain138.sh echo " Add printed CCIPWETH9_BRIDGE_CHAIN138 to .env" echo "" # Priority 2: Blockscout verification echo ">>> Priority 2: Blockscout verification" echo " Run: ./scripts/verify-contracts-blockscout.sh" echo "" # Priority 3: alltra-lifi-settlement echo ">>> Priority 3: alltra-lifi-settlement" if [[ -d alltra-lifi-settlement ]]; then RELAYER="${SETTLEMENT_RELAYER_ADDRESS:-$(cast wallet address --private-key "$PRIVATE_KEY" 2>/dev/null || echo "")}" if [[ -n "$RELAYER" ]]; then (cd alltra-lifi-settlement && RPC_URL_138="$RPC" PRIVATE_KEY="$PRIVATE_KEY" SETTLEMENT_RELAYER_ADDRESS="$RELAYER" forge script scripts/deploy/deploy-merchant-settlement-registry.s.sol --rpc-url "$RPC" --broadcast --private-key "$PRIVATE_KEY" 2>&1) || echo " MerchantSettlementRegistry: check logs" source smom-dbis-138/.env 2>/dev/null || true if [[ -n "${COMPLIANT_USDC_ADDRESS:-}" ]] && [[ -n "${WITHDRAWAL_RELAYER_ADDRESS:-}" ]]; then (cd alltra-lifi-settlement && forge script scripts/deploy/deploy-withdrawal-escrow.s.sol --rpc-url "$RPC" --broadcast --private-key "$PRIVATE_KEY" 2>&1) || echo " WithdrawalEscrow: check logs" else echo " WithdrawalEscrow: set COMPLIANT_USDC_ADDRESS, WITHDRAWAL_RELAYER_ADDRESS in .env" fi else echo " Set SETTLEMENT_RELAYER_ADDRESS" fi else echo " alltra-lifi-settlement not found" fi echo "" # Priority 4: Phased core echo ">>> Priority 4: Phased core (UniversalAssetRegistry, UniversalCCIPBridge)" cd smom-dbis-138 forge script script/deploy/01_DeployCore.s.sol --rpc-url "$RPC" --broadcast --private-key "$PRIVATE_KEY" 2>&1 || echo " 01_DeployCore: check deps" echo " Update .env with UNIVERSAL_ASSET_REGISTRY, GOVERNANCE_CONTROLLER from output" forge script script/deploy/02_DeployBridges.s.sol --rpc-url "$RPC" --broadcast --private-key "$PRIVATE_KEY" 2>&1 || echo " 02_DeployBridges: check deps" echo "" echo "==============================================" echo "Done. Run verify-contracts-blockscout.sh next." echo "=============================================="