Files
proxmox/scripts/deployment/acquire-official-usdc-from-cusdc-chain138.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

71 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Acquire official Chain 138 USDC from the deployer's cUSDC inventory using the
# canonical DODO cUSDC/USDC mirror pool.
#
# Default amount: 250,000 USDC worth of cUSDC (250000e6).
# This unblocks upstream-native WETH/USDC seeding without disturbing the live
# router-v2 venue layer.
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
if [[ -f "${PROJECT_ROOT}/scripts/lib/load-project-env.sh" ]]; then
# shellcheck source=/dev/null
source "${PROJECT_ROOT}/scripts/lib/load-project-env.sh"
fi
require_cmd() {
command -v "$1" >/dev/null 2>&1 || {
echo "[fail] missing required command: $1" >&2
exit 1
}
}
require_cmd cast
RPC_URL="${CHAIN138_CUSDC_USDC_SWAP_RPC_URL:-http://192.168.11.221:8545}"
PRIVATE_KEY="${PRIVATE_KEY:-}"
DEPLOYER="${DEPLOYER_ADDRESS:-0x4A666F96fC8764181194447A7dFdb7d471b301C8}"
POOL="${POOL_CUSDCUSDC:-0xc39B7D0F40838cbFb54649d327f49a6DAC964062}"
INTEGRATION="${DODO_PMM_INTEGRATION_ADDRESS:-${CHAIN_138_DODO_PMM_INTEGRATION:-0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895}}"
CUSDC="${COMPLIANT_USDC_ADDRESS:-0xf22258f57794CC8E06237084b353Ab30fFfa640b}"
USDC="${OFFICIAL_USDC_ADDRESS:-0x71D6687F38b93CCad569Fa6352c876eea967201b}"
AMOUNT_IN="${AMOUNT_IN:-250000000000}" # 250,000 with 6 decimals
MIN_OUT="${MIN_OUT:-249000000000}" # 249,000 with 6 decimals
GAS_PRICE_WEI="${CHAIN138_DEPLOY_GAS_PRICE_WEI:-1000}"
if [[ -z "${PRIVATE_KEY}" ]]; then
echo "[fail] PRIVATE_KEY is required" >&2
exit 1
fi
echo "== Acquire official USDC from cUSDC on Chain 138 =="
echo "RPC: ${RPC_URL}"
echo "Deployer: ${DEPLOYER}"
echo "Pool: ${POOL}"
echo "Integration: ${INTEGRATION}"
echo "Amount in: ${AMOUNT_IN} (cUSDC, 6 decimals)"
echo "Min out: ${MIN_OUT} (USDC, 6 decimals)"
echo
allowance="$(cast call --rpc-url "${RPC_URL}" "${CUSDC}" 'allowance(address,address)(uint256)' "${DEPLOYER}" "${INTEGRATION}")"
echo "[info] current cUSDC allowance to integration: ${allowance}"
quote="$(cast call --rpc-url "${RPC_URL}" "${POOL}" 'querySellBase(address,uint256)(uint256,uint256)' "${DEPLOYER}" "${AMOUNT_IN}")"
quoted_out="$(printf '%s\n' "${quote}" | sed -n '1p' | awk '{print $1}')"
echo "[info] quoted output via canonical mirror pool: ${quoted_out} USDC raw"
cast send "${INTEGRATION}" \
'swapExactIn(address,address,uint256,uint256)' \
"${POOL}" "${CUSDC}" "${AMOUNT_IN}" "${MIN_OUT}" \
--rpc-url "${RPC_URL}" \
--private-key "${PRIVATE_KEY}" \
--legacy \
--gas-price "${GAS_PRICE_WEI}"
echo
new_usdc="$(cast call --rpc-url "${RPC_URL}" "${USDC}" 'balanceOf(address)(uint256)' "${DEPLOYER}" | awk '{print $1}')"
echo "[ok] new official USDC balance: ${new_usdc}"