Files
proxmox/scripts/deployment/add-mainnet-truu-pmm-topup.sh
defiQUG dbd517b279 Sync workspace: config, docs, scripts, CI, operator rules, and submodule pointers.
- Update dbis_core, cross-chain-pmm-lps, explorer-monorepo, metamask-integration, pr-workspace/chains
- Omit embedded publish git dirs and empty placeholders from index

Made-with: Cursor
2026-04-12 06:12:20 -07:00

143 lines
4.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Add liquidity to an existing Mainnet cWUSDT/TRUU or cWUSDC/TRUU DODO PMM pool using
# **all wallet balance that fits** both legs at the USD reference ratio from the first
# cWUSDT/TRUU seed (B_ref=1_500_000 raw cW, Q_ref=372_348_929_900_893 raw TRUU).
#
# Requires: same env as deploy-mainnet-pmm-cw-truu-pool.sh (ETHEREUM_MAINNET_RPC,
# PRIVATE_KEY, DODO_PMM_INTEGRATION_MAINNET). Pool must already exist.
#
# Usage:
# bash scripts/deployment/add-mainnet-truu-pmm-topup.sh --pair=cwusdc-truu
# bash scripts/deployment/add-mainnet-truu-pmm-topup.sh --pair=cwusdt-truu --dry-run
# bash scripts/deployment/add-mainnet-truu-pmm-topup.sh --pair=cwusdt-truu --reserve-bps=2000
# (keep 20% of the ratio-matched max on-wallet for trading; deploy 80%)
#
# Optional: PMM_TRUU_INITIAL_I (default matches live pools: 2482326199339289065).
# If TRUU or cW balance is zero, exits 0 after printing a short message (nothing to do).
#
# See: docs/03-deployment/MAINNET_PMM_TRUU_CWUSD_PEG_AND_BOT_RUNBOOK.md
# load-env.sh overwrites SCRIPT_DIR; keep proxmox/scripts/deployment for sibling deploy script.
DEPLOYMENT_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${DEPLOYMENT_SCRIPT_DIR}/../.." && pwd)"
source "${PROJECT_ROOT}/smom-dbis-138/scripts/load-env.sh" >/dev/null 2>&1
PAIR=""
DRY_RUN=0
RESERVE_BPS=0
B_REF=1500000
Q_REF=372348929900893
INITIAL_I="${PMM_TRUU_INITIAL_I:-2482326199339289065}"
for arg in "$@"; do
case "$arg" in
--pair=*) PAIR="${arg#*=}" ;;
--dry-run) DRY_RUN=1 ;;
--reserve-bps=*) RESERVE_BPS="${arg#*=}" ;;
*)
echo "[fail] unknown arg: $arg" >&2
exit 2
;;
esac
done
if [[ "$RESERVE_BPS" -lt 0 || "$RESERVE_BPS" -ge 10000 ]]; then
echo "[fail] --reserve-bps must be 0..9999" >&2
exit 2
fi
if [[ -z "$PAIR" ]]; then
echo "[fail] required: --pair=cwusdt-truu or --pair=cwusdc-truu" >&2
exit 1
fi
command -v cast >/dev/null 2>&1 || {
echo "[fail] cast required" >&2
exit 1
}
command -v python3 >/dev/null 2>&1 || {
echo "[fail] python3 required" >&2
exit 1
}
RPC_URL="${ETHEREUM_MAINNET_RPC:-}"
PRIVATE_KEY="${PRIVATE_KEY:-}"
if [[ -z "$RPC_URL" || -z "$PRIVATE_KEY" ]]; then
echo "[fail] ETHEREUM_MAINNET_RPC and PRIVATE_KEY required" >&2
exit 1
fi
TRUU_MAINNET="${TRUU_MAINNET:-0xDAe0faFD65385E7775Cf75b1398735155EF6aCD2}"
case "$PAIR" in
cwusdt-truu)
BASE_TOKEN="${CWUSDT_MAINNET:-0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE}"
;;
cwusdc-truu)
BASE_TOKEN="${CWUSDC_MAINNET:-0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a}"
;;
*)
echo "[fail] unsupported pair: $PAIR" >&2
exit 2
;;
esac
DEPLOYER="$(cast wallet address --private-key "$PRIVATE_KEY")"
BASE_BAL="$(cast call "$BASE_TOKEN" 'balanceOf(address)(uint256)' "$DEPLOYER" --rpc-url "$RPC_URL" | awk '{print $1}')"
TRUU_BAL="$(cast call "$TRUU_MAINNET" 'balanceOf(address)(uint256)' "$DEPLOYER" --rpc-url "$RPC_URL" | awk '{print $1}')"
read -r BASE_AMT QUOTE_AMT <<EOF
$(python3 - <<PY
b_ref = $B_REF
q_ref = $Q_REF
cb = int("$BASE_BAL")
ct = int("$TRUU_BAL")
if cb <= 0 or ct <= 0:
print(0, 0)
raise SystemExit(0)
# Max base limited by TRUU: quote = base * q_ref / b_ref <= ct
base_max_from_truu = ct * b_ref // q_ref
base = min(cb, base_max_from_truu)
quote = base * q_ref // b_ref
print(base, quote)
PY
)
EOF
if [[ -z "${BASE_AMT:-}" || -z "${QUOTE_AMT:-}" ]]; then
echo "[fail] could not compute amounts" >&2
exit 1
fi
if [[ "$BASE_AMT" -eq 0 || "$QUOTE_AMT" -eq 0 ]]; then
if [[ "$BASE_BAL" -eq 0 || "$TRUU_BAL" -eq 0 ]]; then
echo "[info] nothing to add: cW balance=$BASE_BAL TRUU balance=$TRUU_BAL (need both > 0)"
else
echo "[info] nothing to add: TRUU balance=$TRUU_BAL is below one reference-ratio step of cW (need ≥$(( Q_REF / B_REF )) raw TRUU per 1 raw cW increment, 6-dec tokens; B_ref/Q_ref=$B_REF/$Q_REF; fund more TRUU or pass explicit amounts to deploy-mainnet-pmm-cw-truu-pool.sh)"
fi
exit 0
fi
if [[ "$RESERVE_BPS" -gt 0 ]]; then
DEPLOY_MULT=$((10000 - RESERVE_BPS))
BASE_AMT=$((BASE_AMT * DEPLOY_MULT / 10000))
QUOTE_AMT=$((QUOTE_AMT * DEPLOY_MULT / 10000))
echo "[info] applied --reserve-bps=$RESERVE_BPS (deploy $DEPLOY_MULT/10000 of ratio-matched max)"
fi
if [[ "$BASE_AMT" -eq 0 || "$QUOTE_AMT" -eq 0 ]]; then
echo "[info] nothing to add after reserve scaling (try smaller --reserve-bps)" >&2
exit 0
fi
echo "[info] pair=$PAIR deployer=$DEPLOYER base_raw=$BASE_AMT quote_raw=$QUOTE_AMT (ratio B_ref/Q_ref=$B_REF/$Q_REF)"
exec bash "${DEPLOYMENT_SCRIPT_DIR}/deploy-mainnet-pmm-cw-truu-pool.sh" \
--pair="$PAIR" \
--initial-price="$INITIAL_I" \
--base-amount="$BASE_AMT" \
--quote-amount="$QUOTE_AMT" \
$([[ "$DRY_RUN" -eq 1 ]] && echo --dry-run)