Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
78 lines
3.3 KiB
Bash
Executable File
78 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Deploy TransactionMirror to Chain 138.
|
|
# Use this when forge script DeployTransactionMirror.s.sol fails with constructor-args decode (forge create works).
|
|
# Usage: ./scripts/deployment/deploy-transaction-mirror-chain138.sh [--dry-run]
|
|
# --dry-run Print forge create command and exit 0 (no deploy).
|
|
# Requires: smom-dbis-138/.env with PRIVATE_KEY, RPC_URL_138 or RPC_URL (Chain 138 Core). Optional: MIRROR_ADMIN.
|
|
# Also sources load-project-env (secure-secrets, config). Must run from a host that can reach RPC (e.g. LAN to 192.168.11.211:8545).
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
SMOM="${SMOM_DIR:-${PROJECT_ROOT}/smom-dbis-138}"
|
|
|
|
DRY_RUN=false
|
|
for a in "$@"; do [[ "$a" == "--dry-run" ]] && DRY_RUN=true && break; done
|
|
|
|
[[ -f "${SCRIPT_DIR}/../lib/load-project-env.sh" ]] && source "${SCRIPT_DIR}/../lib/load-project-env.sh" 2>/dev/null || true
|
|
[[ -f "${SMOM}/.env" ]] && set -a && source "${SMOM}/.env" 2>/dev/null && set +a || true
|
|
|
|
# RPC_URL_138 or RPC_URL (alias)
|
|
RPC="${RPC_URL_138:-${RPC_URL:-http://192.168.11.211:8545}}"
|
|
export RPC_URL_138="$RPC"
|
|
export ETH_RPC_URL="$RPC"
|
|
GAS_PRICE="${GAS_PRICE:-1000000000}"
|
|
|
|
if ! $DRY_RUN && [[ -z "${PRIVATE_KEY:-}" ]]; then
|
|
echo "ERROR: PRIVATE_KEY not set. Set in smom-dbis-138/.env"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${PRIVATE_KEY#0x}" == "$PRIVATE_KEY" ]]; then
|
|
export PRIVATE_KEY="0x$PRIVATE_KEY"
|
|
fi
|
|
export PRIVATE_KEY # Ensure subshells/forge inherit it
|
|
|
|
# MIRROR_ADMIN or deployer address
|
|
if [[ -n "${MIRROR_ADMIN:-}" ]]; then
|
|
ADMIN="$MIRROR_ADMIN"
|
|
else
|
|
if $DRY_RUN; then ADMIN="<DEPLOYER_ADDRESS>"; else ADMIN=$(cast wallet address --private-key "$PRIVATE_KEY" 2>/dev/null) || { echo "ERROR: cast not found or PRIVATE_KEY invalid"; exit 1; }; fi
|
|
fi
|
|
|
|
if $DRY_RUN; then
|
|
echo "[dry-run] Would run: forge create ... TransactionMirror --constructor-args $ADMIN --rpc-url $RPC --legacy --gas-price $GAS_PRICE"
|
|
echo " Add TRANSACTION_MIRROR_ADDRESS=<deployed> to smom-dbis-138/.env after deploy."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Deploying TransactionMirror to Chain 138 (admin=$ADMIN)"
|
|
echo " RPC=$RPC"
|
|
cd "$SMOM"
|
|
# Use forge script (DeployTransactionMirror.s.sol) — more reliable than forge create with env
|
|
out=$(env ETH_RPC_URL="$RPC" MIRROR_ADMIN="$ADMIN" forge script script/DeployTransactionMirror.s.sol:DeployTransactionMirror \
|
|
--rpc-url "$RPC" \
|
|
--broadcast \
|
|
--private-key "$PRIVATE_KEY" \
|
|
--legacy \
|
|
--gas-price "$GAS_PRICE" 2>&1) || { echo "$out"; echo "Run from a host on LAN that can reach $RPC"; exit 1; }
|
|
echo "$out"
|
|
addr=$(echo "$out" | grep -oE 'TransactionMirror deployed at: (0x[a-fA-F0-9]{40})' | sed 's/TransactionMirror deployed at: //')
|
|
if [[ -n "$addr" ]]; then
|
|
echo ""
|
|
echo "Deployed TransactionMirror at: $addr"
|
|
env_file="${SMOM}/.env"
|
|
if [[ -f "$env_file" ]]; then
|
|
if grep -q "^TRANSACTION_MIRROR_ADDRESS=" "$env_file" 2>/dev/null; then
|
|
sed -i "s|^TRANSACTION_MIRROR_ADDRESS=.*|TRANSACTION_MIRROR_ADDRESS=$addr|" "$env_file"
|
|
echo " Updated TRANSACTION_MIRROR_ADDRESS in $env_file"
|
|
else
|
|
echo "TRANSACTION_MIRROR_ADDRESS=$addr" >> "$env_file"
|
|
echo " Appended TRANSACTION_MIRROR_ADDRESS to $env_file"
|
|
fi
|
|
fi
|
|
fi
|
|
echo ""
|
|
echo "Done. Add TRANSACTION_MIRROR_ADDRESS=<deployed> to smom-dbis-138/.env if not already set."
|