Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Made-with: Cursor
124 lines
5.4 KiB
Bash
Executable File
124 lines
5.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Check the corrected Chain 138 funded DODO PMM pool token balances (base + quote).
|
|
# Uses eth_call (curl) for compatibility with RPCs that reject some cast call formats.
|
|
#
|
|
# Canonical source for addresses:
|
|
# docs/11-references/ADDRESS_MATRIX_AND_STATUS.md (updated 2026-03-26)
|
|
# docs/11-references/DEPLOYED_TOKENS_BRIDGES_LPS_AND_ROUTING_STATUS.md
|
|
#
|
|
# Usage: ./scripts/verify/check-pmm-pool-balances-chain138.sh [RPC_URL]
|
|
# Default RPC: http://192.168.11.211:8545
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
RPC="${1:-${RPC_URL_138:-http://192.168.11.211:8545}}"
|
|
|
|
# Token addresses (Chain 138 canonical)
|
|
cUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
|
cUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
|
OFFICIAL_USDT="0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1"
|
|
OFFICIAL_USDC="0x71D6687F38b93CCad569Fa6352c876eea967201b"
|
|
cXAUC="0x290E52a8819A4fbD0714E517225429aA2B70EC6b"
|
|
cEURT="0xdf4b71c61E5912712C1Bdd451416B9aC26949d72"
|
|
|
|
pads() { local a; a=$(echo "$1" | sed 's/0x//'); printf '%064s' "$a" | tr ' ' '0'; }
|
|
balance() {
|
|
local tok="$1" acc="$2"
|
|
local d="0x70a08231$(pads "$acc")"
|
|
local res
|
|
res=$(curl -s -X POST "$RPC" -H "Content-Type: application/json" \
|
|
--data "{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"$tok\",\"data\":\"$d\"},\"latest\"],\"id\":1}" \
|
|
| jq -r '.result // empty')
|
|
echo "${res:-0x0000000000000000000000000000000000000000000000000000000000000000}"
|
|
}
|
|
hex2dec() { local h="$1"; [[ -z "$h" || "$h" == "0x" ]] && echo "0" && return; printf '%d' "$h"; }
|
|
human6() { local r; r=$(hex2dec "$1"); echo "scale=6; $r / 1000000" | bc 2>/dev/null || echo "$r"; }
|
|
add_hex() {
|
|
local a b
|
|
a=$(hex2dec "$1")
|
|
b=$(hex2dec "$2")
|
|
printf '0x%x' "$((a + b))"
|
|
}
|
|
|
|
PUBLIC_STABLE_TOTAL="0x0"
|
|
PUBLIC_XAU_TOTAL="0x0"
|
|
PRIVATE_STABLE_TOTAL="0x0"
|
|
PRIVATE_XAU_TOTAL="0x0"
|
|
|
|
print_pool() {
|
|
local label="$1" pool="$2" base_name="$3" base_token="$4" quote_name="$5" quote_token="$6" bucket="$7"
|
|
local base_raw quote_raw
|
|
base_raw=$(balance "$base_token" "$pool")
|
|
quote_raw=$(balance "$quote_token" "$pool")
|
|
|
|
echo "$label"
|
|
echo " Address: $pool"
|
|
echo " $base_name (base): raw=$base_raw -> $(human6 "$base_raw")"
|
|
echo " $quote_name (quote): raw=$quote_raw -> $(human6 "$quote_raw")"
|
|
echo ""
|
|
|
|
if [[ "$bucket" == "public" ]]; then
|
|
if [[ "$base_name" == "cXAUC" ]]; then
|
|
PUBLIC_XAU_TOTAL=$(add_hex "$PUBLIC_XAU_TOTAL" "$base_raw")
|
|
else
|
|
PUBLIC_STABLE_TOTAL=$(add_hex "$PUBLIC_STABLE_TOTAL" "$base_raw")
|
|
fi
|
|
if [[ "$quote_name" == "cXAUC" ]]; then
|
|
PUBLIC_XAU_TOTAL=$(add_hex "$PUBLIC_XAU_TOTAL" "$quote_raw")
|
|
else
|
|
PUBLIC_STABLE_TOTAL=$(add_hex "$PUBLIC_STABLE_TOTAL" "$quote_raw")
|
|
fi
|
|
else
|
|
if [[ "$base_name" == "cXAUC" ]]; then
|
|
PRIVATE_XAU_TOTAL=$(add_hex "$PRIVATE_XAU_TOTAL" "$base_raw")
|
|
else
|
|
PRIVATE_STABLE_TOTAL=$(add_hex "$PRIVATE_STABLE_TOTAL" "$base_raw")
|
|
fi
|
|
if [[ "$quote_name" == "cXAUC" ]]; then
|
|
PRIVATE_XAU_TOTAL=$(add_hex "$PRIVATE_XAU_TOTAL" "$quote_raw")
|
|
else
|
|
PRIVATE_STABLE_TOTAL=$(add_hex "$PRIVATE_STABLE_TOTAL" "$quote_raw")
|
|
fi
|
|
fi
|
|
}
|
|
|
|
echo "=============================================="
|
|
echo " Chain 138 — PMM pool balances"
|
|
echo " RPC: $RPC"
|
|
echo " Pool map: corrected 2026-03-26 public + private funded set"
|
|
echo "=============================================="
|
|
echo ""
|
|
|
|
echo "Public pools"
|
|
echo "------------"
|
|
print_pool "Pool 1: cUSDT / cUSDC" "0xff8d3b8fDF7B112759F076B69f4271D4209C0849" "cUSDT" "$cUSDT" "cUSDC" "$cUSDC" "public"
|
|
print_pool "Pool 2: cUSDT / USDT (official mirror)" "0x6fc60DEDc92a2047062294488539992710b99D71" "cUSDT" "$cUSDT" "USDT" "$OFFICIAL_USDT" "public"
|
|
print_pool "Pool 3: cUSDC / USDC (official mirror)" "0x0309178ae30302D83c76d6Dd402a684eF3160eec" "cUSDC" "$cUSDC" "USDC" "$OFFICIAL_USDC" "public"
|
|
print_pool "Pool 4: cUSDT / cXAUC" "0x1AA55E2001E5651349AfF5A63FD7A7Ae44f0F1b0" "cUSDT" "$cUSDT" "cXAUC" "$cXAUC" "public"
|
|
print_pool "Pool 5: cUSDC / cXAUC" "0xEA9Ac6357CaCB42a83b9082B870610363B177cBa" "cUSDC" "$cUSDC" "cXAUC" "$cXAUC" "public"
|
|
print_pool "Pool 6: cEURT / cXAUC" "0xbA99bc1eAAC164569d5AcA96C806934DDaF970Cf" "cEURT" "$cEURT" "cXAUC" "$cXAUC" "public"
|
|
|
|
echo "Private pools"
|
|
echo "-------------"
|
|
print_pool "Pool 7: cUSDT / cXAUC (private)" "0x94316511621430423a2cff0C036902BAB4aA70c2" "cUSDT" "$cUSDT" "cXAUC" "$cXAUC" "private"
|
|
print_pool "Pool 8: cUSDC / cXAUC (private)" "0x7867D58567948e5b9908F1057055Ee4440de0851" "cUSDC" "$cUSDC" "cXAUC" "$cXAUC" "private"
|
|
print_pool "Pool 9: cEURT / cXAUC (private)" "0x505403093826D494983A93b43Aa0B8601078A44e" "cEURT" "$cEURT" "cXAUC" "$cXAUC" "private"
|
|
|
|
TOTAL_STABLE=$(add_hex "$PUBLIC_STABLE_TOTAL" "$PRIVATE_STABLE_TOTAL")
|
|
TOTAL_XAU=$(add_hex "$PUBLIC_XAU_TOTAL" "$PRIVATE_XAU_TOTAL")
|
|
|
|
echo "Summary"
|
|
echo "-------"
|
|
echo " Public stable liquidity: raw=$PUBLIC_STABLE_TOTAL -> $(human6 "$PUBLIC_STABLE_TOTAL")"
|
|
echo " Public XAU liquidity: raw=$PUBLIC_XAU_TOTAL -> $(human6 "$PUBLIC_XAU_TOTAL")"
|
|
echo " Private stable liquidity: raw=$PRIVATE_STABLE_TOTAL -> $(human6 "$PRIVATE_STABLE_TOTAL")"
|
|
echo " Private XAU liquidity: raw=$PRIVATE_XAU_TOTAL -> $(human6 "$PRIVATE_XAU_TOTAL")"
|
|
echo " Total stable liquidity: raw=$TOTAL_STABLE -> $(human6 "$TOTAL_STABLE")"
|
|
echo " Total XAU liquidity: raw=$TOTAL_XAU -> $(human6 "$TOTAL_XAU")"
|
|
echo ""
|
|
|
|
echo "Note: This script verifies the current funded public and private PMM set from the 2026-03-26 docs."
|
|
echo "Done."
|