- 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
118 lines
5.7 KiB
Bash
Executable File
118 lines
5.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Legitimate USDT <-> USDC routing on Ethereum mainnet through public cW* PMM rails.
|
|
#
|
|
# Direct cWUSDT/cWUSDC PMM is recorded in deployment-status.json (vault 0xe944…68DB; one pool, both directions).
|
|
# Top up with deploy-mainnet-cwusdt-cwusdc-pool.sh / add-mainnet-public-dodo-cw-liquidity.sh --pair=cwusdt-cwusdc.
|
|
# Official stables connect to both wraps via four pools (3 bps LP fee each on the public rails).
|
|
# Any USDT<->USDC conversion is at least two swaps (two integration txs unless batched elsewhere).
|
|
#
|
|
# Usage:
|
|
# source scripts/lib/load-project-env.sh
|
|
# bash scripts/verify/plan-mainnet-usdt-usdc-via-cw-paths.sh
|
|
# bash scripts/verify/plan-mainnet-usdt-usdc-via-cw-paths.sh --with-examples 1000000
|
|
#
|
|
# Operator policy (recommended):
|
|
# - One treasury EOA or named contract; no sybil wallet farms.
|
|
# - Document purpose (inventory rebalance, peg support, testing); retain logs and tx hashes.
|
|
# - Per-leg --dry-run first; set --min-out from quoted outputs; cap daily notional internally.
|
|
# - "0.16" style budgets: define explicitly (e.g. 16 bps max implied loss vs mid, or $0.16 absolute).
|
|
#
|
|
# See also:
|
|
# scripts/deployment/plan-mainnet-cw-stabilization.sh
|
|
# scripts/deployment/run-mainnet-public-dodo-cw-swap.sh
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
# shellcheck disable=SC1091
|
|
source "$ROOT/scripts/lib/load-project-env.sh" 2>/dev/null || true
|
|
|
|
WITH_EXAMPLES=0
|
|
EXAMPLE_RAW="1000000"
|
|
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--with-examples)
|
|
WITH_EXAMPLES=1
|
|
;;
|
|
--with-examples=*)
|
|
WITH_EXAMPLES=1
|
|
EXAMPLE_RAW="${arg#*=}"
|
|
;;
|
|
-h | --help)
|
|
sed -n '1,35p' "$0"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "[fail] unknown arg: $arg (use --help)" >&2
|
|
exit 2
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo "=== Mainnet USDT <-> USDC via cW* PMM (planning) ==="
|
|
echo
|
|
echo "Canonical pools (cross-chain-pmm-lps/config/deployment-status.json, chains[\"1\"].pmmPools):"
|
|
echo " cWUSDT/USDT 0x79156F6B7bf71a1B72D78189B540A89A6C13F6FC"
|
|
echo " cWUSDC/USDC 0x69776fc607e9edA8042e320e7e43f54d06c68f0E"
|
|
echo " cWUSDT/USDC 0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2"
|
|
echo " cWUSDC/USDT 0xCC0fd27A40775c9AfcD2BBd3f7c902b0192c247A"
|
|
echo " cWUSDT/cWUSDC 0xe944b7Cb012A0820c07f54D51e92f0e1C74168DB (direct wrap↔wrap; one vault, both directions)"
|
|
echo
|
|
echo "Tokens:"
|
|
echo " USDT 0xdAC17F958D2ee523a2206206994597C13D831ec7"
|
|
echo " USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
|
|
echo " cWUSDT ${CWUSDT_MAINNET:-0xaF5017d0163ecb99D9B5D94e3b4D7b09Af44D8AE}"
|
|
echo " cWUSDC ${CWUSDC_MAINNET:-0x2de5F116bFcE3d0f922d9C8351e0c5Fc24b9284a}"
|
|
echo
|
|
echo "Economics:"
|
|
echo " - Two hops at 3 bps each => roughly 6 bps fee drag before slippage and gas (not compound-precise)."
|
|
echo " - Compare both paths off-chain; pick the better quoted out-amount for your size."
|
|
echo
|
|
echo "--- Path A (USDT -> cWUSDC -> USDC) ---"
|
|
echo " Leg 1: pair=cwusdc-usdt direction=quote-to-base (USDT in -> cWUSDC out)"
|
|
echo " Leg 2: pair=cwusdc-usdc direction=base-to-quote (cWUSDC in -> USDC out)"
|
|
echo
|
|
echo "--- Path B (USDT -> cWUSDT -> USDC) ---"
|
|
echo " Leg 1: pair=cwusdt-usdt direction=quote-to-base (USDT in -> cWUSDT out)"
|
|
echo " Leg 2: pair=cwusdt-usdc direction=base-to-quote (cWUSDT in -> USDC out)"
|
|
echo
|
|
echo "--- Path A' (USDC -> cWUSDC -> USDT) ---"
|
|
echo " Leg 1: pair=cwusdc-usdc direction=quote-to-base (USDC in -> cWUSDC out)"
|
|
echo " Leg 2: pair=cwusdc-usdt direction=base-to-quote (cWUSDC in -> USDT out)"
|
|
echo
|
|
echo "--- Path B' (USDC -> cWUSDT -> USDT) ---"
|
|
echo " Leg 1: pair=cwusdt-usdc direction=quote-to-base (USDC in -> cWUSDT out)"
|
|
echo " Leg 2: pair=cwusdt-usdt direction=base-to-quote (cWUSDT in -> USDT out)"
|
|
echo
|
|
echo "--- Path C (USDT -> USDC via direct cW leg, 3 hops) ---"
|
|
echo " Leg 1: pair=cwusdt-usdt direction=quote-to-base (USDT -> cWUSDT)"
|
|
echo " Leg 2: pair=cwusdt-cwusdc direction=base-to-quote (cWUSDT -> cWUSDC)"
|
|
echo " Leg 3: pair=cwusdc-usdc direction=base-to-quote (cWUSDC -> USDC)"
|
|
echo
|
|
echo "--- Path C' (USDC -> USDT via direct cW leg, 3 hops) ---"
|
|
echo " Leg 1: pair=cwusdc-usdc direction=quote-to-base (USDC -> cWUSDC)"
|
|
echo " Leg 2: pair=cwusdt-cwusdc direction=quote-to-base (cWUSDC -> cWUSDT)"
|
|
echo " Leg 3: pair=cwusdt-usdt direction=base-to-quote (cWUSDT -> USDT)"
|
|
echo
|
|
|
|
if [[ "$WITH_EXAMPLES" -eq 1 ]]; then
|
|
echo "=== Example dry-run commands (amount raw 6dp = ${EXAMPLE_RAW}) ==="
|
|
echo "USDT -> USDC path A:"
|
|
echo " bash scripts/deployment/run-mainnet-public-dodo-cw-swap.sh --pair=cwusdc-usdt --direction=quote-to-base --amount=${EXAMPLE_RAW} --dry-run"
|
|
echo " # then use printed out-amount as --amount for leg 2:"
|
|
echo " bash scripts/deployment/run-mainnet-public-dodo-cw-swap.sh --pair=cwusdc-usdc --direction=base-to-quote --amount=<leg1_out_raw> --dry-run"
|
|
echo
|
|
echo "USDT -> USDC path B:"
|
|
echo " bash scripts/deployment/run-mainnet-public-dodo-cw-swap.sh --pair=cwusdt-usdt --direction=quote-to-base --amount=${EXAMPLE_RAW} --dry-run"
|
|
echo " bash scripts/deployment/run-mainnet-public-dodo-cw-swap.sh --pair=cwusdt-usdc --direction=base-to-quote --amount=<leg1_out_raw> --dry-run"
|
|
echo
|
|
echo "USDT -> USDC path C (three legs; chain outputs leg2/leg3 amounts):"
|
|
echo " bash scripts/deployment/run-mainnet-public-dodo-cw-swap.sh --pair=cwusdt-usdt --direction=quote-to-base --amount=${EXAMPLE_RAW} --dry-run"
|
|
echo " bash scripts/deployment/run-mainnet-public-dodo-cw-swap.sh --pair=cwusdt-cwusdc --direction=base-to-quote --amount=<leg1_out_raw> --dry-run"
|
|
echo " bash scripts/deployment/run-mainnet-public-dodo-cw-swap.sh --pair=cwusdc-usdc --direction=base-to-quote --amount=<leg2_out_raw> --dry-run"
|
|
echo
|
|
echo "Live sizing / micro tranches:"
|
|
echo " bash scripts/deployment/plan-mainnet-cw-stabilization.sh"
|
|
fi
|