Files
proxmox/scripts/deployment/pipeline-ei-matrix-mint-cwusdc.sh
defiQUG 4ebf2d7902
Some checks failed
Deploy to Phoenix / validate (push) Failing after 1s
Deploy to Phoenix / deploy (push) Has been skipped
Deploy to Phoenix / deploy-atomic-swap-dapp (push) Has been skipped
Deploy to Phoenix / cloudflare (push) Has been skipped
chore(repo): sync operator workspace (config, scripts, docs, multi-chain)
Add optional Cosmos/Engine-X/act-runner templates, CWUSDC/EI-matrix tooling,
non-EVM route planner in multi-chain-execution (tests passing), token list and
extraction updates, and documentation (MetaMask matrix, GRU/CWUSDC packets).

Ignore institutional evidence tarballs/sha256 under reports/status.

Validated with: bash scripts/verify/run-all-validation.sh --skip-genesis

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 16:25:08 -07:00

70 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Single operator pipeline: preflight + mint cWUSDC to every EI matrix wallet on Ethereum mainnet.
#
# This does NOT bridge from Chain 138 — it mints on mainnet via MINTER_ROLE on CWUSDC_MAINNET.
#
# Usage:
# ./scripts/deployment/pipeline-ei-matrix-mint-cwusdc.sh --dry-run --mint-raw 1000000
# ./scripts/deployment/pipeline-ei-matrix-mint-cwusdc.sh --total-mint-raw 1000000000000 --spread-pct 15
# ./scripts/deployment/pipeline-ei-matrix-mint-cwusdc.sh --mint-raw 1000000 -- --limit 10 # extra args after --
#
# Env: loads scripts/lib/load-project-env.sh (PRIVATE_KEY, ETHEREUM_MAINNET_RPC, CWUSDC_MAINNET).
#
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
cd "$PROJECT_ROOT"
PASS=()
while [[ $# -gt 0 ]]; do
if [[ "$1" == "--" ]]; then shift; PASS+=("$@"); break; fi
PASS+=("$1")
shift
done
# shellcheck disable=SC1091
source "$PROJECT_ROOT/scripts/lib/load-project-env.sh"
CWUSDC="${CWUSDC_MAINNET:-0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a}"
PUBLIC_ETH_RPC="${ETHEREUM_MAINNET_PUBLIC_RPC:-https://ethereum-rpc.publicnode.com}"
RPC="${ETHEREUM_MAINNET_RPC:-${RPC_URL_1:-${ETH_MAINNET_RPC_URL:-$PUBLIC_ETH_RPC}}}"
echo "══════════════════════════════════════════════════════════════"
echo "Pipeline: EI matrix mainnet cWUSDC mint"
echo "══════════════════════════════════════════════════════════════"
echo "Grid: config/pmm-soak-wallet-grid.json"
echo "Token: $CWUSDC"
echo "RPC: $RPC"
echo ""
command -v cast &>/dev/null || { echo "cast required" >&2; exit 1; }
[[ -n "${PRIVATE_KEY:-}" ]] || { echo "PRIVATE_KEY not set" >&2; exit 1; }
FROM=$(cast wallet address --private-key "$PRIVATE_KEY")
CID=$(cast chain-id --rpc-url "$RPC" 2>/dev/null | tr -d '[:space:]' || echo "?")
echo "Signer: $FROM"
echo "Chain ID: $CID (expected 1)"
if [[ "$CID" != "1" ]]; then
echo "[WARN] Not Ethereum mainnet — aborting." >&2
exit 1
fi
ROLE=$(cast keccak "MINTER_ROLE")
if [[ "${SKIP_EI_MATRIX_MINT_PREFLIGHT:-}" == "1" ]]; then
echo "Preflight: skipped (SKIP_EI_MATRIX_MINT_PREFLIGHT=1)"
elif HR=$(cast call "$CWUSDC" "hasRole(bytes32,address)(bool)" "$ROLE" "$FROM" --rpc-url "$RPC" 2>/dev/null); then
HR_TR=$(echo "$HR" | tr -d '[:space:]' | tr '[:upper:]' '[:lower:]')
if [[ "$HR_TR" == *true* || "$HR_TR" == *0x0000000000000000000000000000000000000000000000000000000000000001* ]]; then
echo "Preflight: MINTER_ROLE on cWUSDC for signer — OK"
else
echo "[WARN] hasRole(MINTER_ROLE) not true for signer (got: $HR) — mints may revert if minter is elsewhere." >&2
fi
else
echo "[WARN] Could not call hasRole — continuing (token ABI may differ)." >&2
fi
echo ""
echo "→ Running mint-cwusdc-ei-matrix-wallets.sh ${PASS[*]}"
echo ""
exec "$SCRIPT_DIR/mint-cwusdc-ei-matrix-wallets.sh" "${PASS[@]}"