- 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
143 lines
4.7 KiB
Bash
Executable File
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)
|