Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 52s
CI/CD Pipeline / Security Scanning (push) Successful in 2m40s
CI/CD Pipeline / Lint and Format (push) Failing after 49s
CI/CD Pipeline / Terraform Validation (push) Failing after 24s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 27s
Deploy ChainID 138 / Deploy ChainID 138 (push) Has been cancelled
Validation / validate-genesis (push) Has been cancelled
Validation / validate-terraform (push) Has been cancelled
Validation / validate-kubernetes (push) Has been cancelled
Verify Deployment / Verify Deployment (push) Has been cancelled
Validation / validate-smart-contracts (push) Failing after 14s
Validation / validate-security (push) Failing after 1m20s
Validation / validate-documentation (push) Failing after 18s
Add canonical btc-l1-ledger config, /btc/contracts API, Python chain138-oracle service, and production deploy scripts so secure.omdnl.org can serve live cBTC, DODO, and PMM pool addresses with headroom-aware mint gating. Co-authored-by: Cursor <cursoragent@cursor.com>
135 lines
5.4 KiB
Bash
135 lines
5.4 KiB
Bash
#!/usr/bin/env bash
|
|
# Deploy 1,000 BTC ledger real contract wiring to production settlement middleware.
|
|
#
|
|
# Run on the OMNL bank host (dev-bis-ali / secure.omdnl.org backend):
|
|
# OMNL_SKIP_GIT_PULL=1 bash scripts/deployment/deploy-btc-ledger-production.sh
|
|
# Or after push to main:
|
|
# bash scripts/deployment/deploy-btc-ledger-production.sh
|
|
#
|
|
set -euo pipefail
|
|
|
|
REPO_DIR="${OMNL_BANK_ROOT:-$HOME/smom-dbis-138}"
|
|
ENV_FILE="${OMNL_BANK_ENV:-$REPO_DIR/.env}"
|
|
LOG_DIR="${OMNL_BANK_LOG_DIR:-$HOME/omnl-bank/logs}"
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
log() { echo "[$(date -Iseconds)] $*"; }
|
|
|
|
cd "$REPO_DIR"
|
|
|
|
if [[ "${OMNL_SKIP_GIT_PULL:-0}" != "1" ]]; then
|
|
log "Pull latest main..."
|
|
git fetch origin
|
|
git checkout main
|
|
git pull --ff-only origin main
|
|
fi
|
|
|
|
export SETTLEMENT_MIDDLEWARE_CONFIG="${SETTLEMENT_MIDDLEWARE_CONFIG:-$REPO_DIR/config/settlement-middleware.production.v1.json}"
|
|
export OMNL_BTC_LEDGER_CONFIG="${OMNL_BTC_LEDGER_CONFIG:-$REPO_DIR/config/btc-l1-ledger-1000.chain138.v1.json}"
|
|
|
|
if [[ ! -f "$OMNL_BTC_LEDGER_CONFIG" ]]; then
|
|
echo "Missing BTC ledger config: $OMNL_BTC_LEDGER_CONFIG" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -f "$ENV_FILE" ]]; then
|
|
set -a
|
|
set +u
|
|
# shellcheck disable=SC1090
|
|
source "$ENV_FILE"
|
|
set -u
|
|
set +a
|
|
fi
|
|
|
|
# Ensure contract env keys are present (merge from canonical JSON if missing).
|
|
if [[ -f "$REPO_DIR/scripts/deployment/sync-btc-ledger-contract-env.mjs" ]]; then
|
|
FRAG="$(mktemp)"
|
|
node "$REPO_DIR/scripts/deployment/sync-btc-ledger-contract-env.mjs" >"$FRAG"
|
|
while IFS= read -r line; do
|
|
key="${line%%=*}"
|
|
if ! grep -q "^${key}=" "$ENV_FILE" 2>/dev/null; then
|
|
echo "$line" >>"$ENV_FILE"
|
|
log "Added missing env: $key"
|
|
fi
|
|
done <"$FRAG"
|
|
rm -f "$FRAG"
|
|
set -a
|
|
set +u
|
|
# shellcheck disable=SC1090
|
|
source "$ENV_FILE"
|
|
set -u
|
|
set +a
|
|
fi
|
|
|
|
log "Building settlement-core + settlement-middleware..."
|
|
for dir in packages/settlement-core services/settlement-middleware; do
|
|
cd "$REPO_DIR/$dir"
|
|
NODE_ENV=development npm install --no-fund --no-audit
|
|
npm run build
|
|
done
|
|
|
|
mkdir -p "$LOG_DIR"
|
|
cd "$REPO_DIR/services/settlement-middleware"
|
|
pkill -f "smom-dbis-138/services/settlement-middleware" 2>/dev/null || true
|
|
fuser -k 3011/tcp 2>/dev/null || true
|
|
sleep 1
|
|
|
|
log "Starting settlement-middleware :3011 with BTC ledger config..."
|
|
nohup env \
|
|
SETTLEMENT_MIDDLEWARE_CONFIG="$SETTLEMENT_MIDDLEWARE_CONFIG" \
|
|
OMNL_BTC_LEDGER_CONFIG="$OMNL_BTC_LEDGER_CONFIG" \
|
|
OMNL_SUPPORTED_CHAINS_CONFIG="${OMNL_SUPPORTED_CHAINS_CONFIG:-$REPO_DIR/config/omnl-supported-chains.v1.json}" \
|
|
OMNL_M2_TOKEN_REGISTRY="${OMNL_M2_TOKEN_REGISTRY:-$REPO_DIR/config/omnl-m2-token-registry.v1.json}" \
|
|
OMNL_API_KEY="${OMNL_API_KEY:-${OMNL_SUPER_ADMIN_SECURE_KEY:-}}" \
|
|
OMNL_SUPER_ADMIN_OFFICE24_KEY="${OMNL_SUPER_ADMIN_OFFICE24_KEY:-}" \
|
|
OMNL_SUPER_ADMIN_EXCHANGE_KEY="${OMNL_SUPER_ADMIN_EXCHANGE_KEY:-}" \
|
|
OMNL_SUPER_ADMIN_SECURE_KEY="${OMNL_SUPER_ADMIN_SECURE_KEY:-}" \
|
|
OMNL_SUPER_ADMIN_FOREX_KEY="${OMNL_SUPER_ADMIN_FOREX_KEY:-}" \
|
|
OMNL_FINERACT_BASE_URL="${OMNL_FINERACT_BASE_URL:-${FINERACT_BASE_URL:-}}" \
|
|
OMNL_FINERACT_TENANT="${OMNL_FINERACT_TENANT:-${FINERACT_TENANT:-omnl}}" \
|
|
OMNL_FINERACT_USER="${OMNL_FINERACT_USER:-}" \
|
|
OMNL_FINERACT_USERNAME="${OMNL_FINERACT_USERNAME:-}" \
|
|
OMNL_FINERACT_PASSWORD="${OMNL_FINERACT_PASSWORD:-}" \
|
|
OMNL_PUBLIC_MONEY_SUPPLY="${OMNL_PUBLIC_MONEY_SUPPLY:-1}" \
|
|
SETTLEMENT_ALLOW_HYBX_PRODUCTION="${SETTLEMENT_ALLOW_HYBX_PRODUCTION:-1}" \
|
|
SETTLEMENT_ALLOW_CHAIN_MINT_EXECUTE="${SETTLEMENT_ALLOW_CHAIN_MINT_EXECUTE:-1}" \
|
|
TOKEN_AGGREGATION_URL="${TOKEN_AGGREGATION_URL:-http://127.0.0.1:3000}" \
|
|
CHAIN138_ORACLE_URL="${CHAIN138_ORACLE_URL:-http://127.0.0.1:3500}" \
|
|
RPC_URL_138="${RPC_URL_138:-${CHAIN_138_RPC_URL:-}}" \
|
|
CHAIN_138_RPC_URL="${CHAIN_138_RPC_URL:-${RPC_URL_138:-}}" \
|
|
OMNL_MINT_OPERATOR_PRIVATE_KEY="${OMNL_MINT_OPERATOR_PRIVATE_KEY:-}" \
|
|
OMNL_REQUIRE_LIVE_BTC_PRICE="${OMNL_REQUIRE_LIVE_BTC_PRICE:-1}" \
|
|
CBTC_ADDRESS_138="${CBTC_ADDRESS_138:-}" \
|
|
BTC_L1_RECIPIENT_ADDRESS="${BTC_L1_RECIPIENT_ADDRESS:-}" \
|
|
BTC_EXISTING_MINT_HOLDER="${BTC_EXISTING_MINT_HOLDER:-}" \
|
|
DODO_PMM_INTEGRATION="${DODO_PMM_INTEGRATION:-${CHAIN_138_DODO_PMM_INTEGRATION:-}}" \
|
|
CHAIN138_POOL_CBTC_CUSDT="${CHAIN138_POOL_CBTC_CUSDT:-}" \
|
|
CHAIN138_POOL_CBTC_CUSDC="${CHAIN138_POOL_CBTC_CUSDC:-}" \
|
|
CHAIN138_POOL_CBTC_CXAUC="${CHAIN138_POOL_CBTC_CXAUC:-}" \
|
|
RESERVE_SYSTEM="${RESERVE_SYSTEM:-}" \
|
|
ORACLE_PROXY_ADDRESS="${ORACLE_PROXY_ADDRESS:-}" \
|
|
ORACLE_AGGREGATOR_ADDRESS="${ORACLE_AGGREGATOR_ADDRESS:-${AGGREGATOR_ADDRESS:-}}" \
|
|
PRICE_FEED_KEEPER_ADDRESS="${PRICE_FEED_KEEPER_ADDRESS:-}" \
|
|
HYBX_MIFOS_FINERACT_SIDECAR_URL="${HYBX_MIFOS_FINERACT_SIDECAR_URL:-}" \
|
|
HYBX_BASE_URL="${HYBX_BASE_URL:-}" \
|
|
HYBX_API="${HYBX_API:-}" \
|
|
npm run start >"$LOG_DIR/settlement-middleware.log" 2>&1 &
|
|
echo $! >"$LOG_DIR/settlement-middleware.pid"
|
|
|
|
sleep 4
|
|
API_KEY="${OMNL_API_KEY:-${OMNL_SUPER_ADMIN_SECURE_KEY:-}}"
|
|
log "Smoke: /btc/contracts"
|
|
curl -sf -H "Authorization: Bearer ${API_KEY}" \
|
|
"http://127.0.0.1:3011/api/v1/settlement/btc/contracts" | head -c 400 || {
|
|
echo "FAIL: /btc/contracts not reachable" >&2
|
|
tail -n 40 "$LOG_DIR/settlement-middleware.log" >&2 || true
|
|
exit 1
|
|
}
|
|
echo
|
|
log "Smoke: /btc/ledger headroom"
|
|
curl -sf -H "Authorization: Bearer ${API_KEY}" \
|
|
"http://127.0.0.1:3011/api/v1/settlement/btc/ledger" | head -c 500 || true
|
|
echo
|
|
log "BTC ledger production deploy complete"
|
|
log "Public: https://secure.omdnl.org/settlement/btc/contracts"
|