scripts: deployment, NPM, verify, validation, env loader, operator helpers
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Made-with: Cursor
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Check that Chain 138 deployed contracts have bytecode on-chain.
|
||||
# Address list: 59 (core, CCIP, PMM, vault/reserve, CompliantFiatTokens). Source: CONTRACT_ADDRESSES_REFERENCE, ADDRESS_MATRIX.
|
||||
# Address list: 61 (core, CCIP, PMM, vault/reserve, oracle keeper path, CompliantFiatTokens). Source: CONTRACT_ADDRESSES_REFERENCE, ADDRESS_MATRIX.
|
||||
# Usage: ./scripts/verify/check-contracts-on-chain-138.sh [RPC_URL] [--dry-run]
|
||||
# Default RPC: from env RPC_URL_138 (Chain 138 Core standard) or config/ip-addresses.conf, else https://rpc-core.d-bis.org
|
||||
# Optional: SKIP_EXIT=1 to exit 0 even when some addresses MISS (e.g. when RPC unreachable from this host).
|
||||
@@ -65,6 +65,8 @@ else
|
||||
"0x0C4FD27018130A00762a802f91a72D6a64a60F14" # PolicyManager
|
||||
"0x0059e237973179146237aB49f1322E8197c22b21" # TokenImplementation
|
||||
"0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04" # Price Feed Keeper
|
||||
"0x8918eE0819fD687f4eb3e8b9B7D0ef7557493cfa" # OraclePriceFeed (keeper → ReserveSystem)
|
||||
"0x3e8725b8De386feF3eFE5678c92eA6aDB41992B2" # WETH MockPriceFeed (keeper WETH aggregator)
|
||||
"0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800" # MerchantSettlementRegistry
|
||||
"0xe77cb26eA300e2f5304b461b0EC94c8AD6A7E46D" # WithdrawalEscrow
|
||||
"0xAEE4b7fBe82E1F8295951584CBc772b8BBD68575" # UniversalAssetRegistry (proxy)
|
||||
@@ -82,11 +84,11 @@ else
|
||||
"0x6427F9739e6B6c3dDb4E94fEfeBcdF35549549d8" # MirrorRegistry
|
||||
"0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc" # AlltraAdapter
|
||||
"0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc" # TransactionMirror Chain 138 (deployed 2026-02-27; set TRANSACTION_MIRROR_ADDRESS in .env)
|
||||
"0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8" # DODO cUSDT-cUSDC pool
|
||||
"0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D" # DODOPMMIntegration
|
||||
"0x8EF6657D2a86c569F6ffc337EE6b4260Bd2e59d0" # DODOPMMProvider
|
||||
"0xa3Ee6091696B28e5497b6F491fA1e99047250c59" # DODO pool cUSDT/USDT
|
||||
"0x90bd9Bf18Daa26Af3e814ea224032d015db58Ea5" # DODO pool cUSDC/USDC
|
||||
"0xff8d3b8fDF7B112759F076B69f4271D4209C0849" # DODO cUSDT-cUSDC pool
|
||||
"0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d" # DODOPMMIntegration (corrected canonical stack)
|
||||
"0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381" # DODOPMMProvider (corrected canonical stack)
|
||||
"0x6fc60DEDc92a2047062294488539992710b99D71" # DODO pool cUSDT/USDT
|
||||
"0x9f74Be42725f2Aa072a9E0CdCce0E7203C510263" # DODO pool cUSDC/USDC
|
||||
"0x607e97cD626f209facfE48c1464815DDE15B5093" # ReserveSystem
|
||||
"0x34B73e6EDFd9f85a7c25EeD31dcB13aB6E969b96" # ReserveTokenIntegration
|
||||
"0xEA4C892D6c1253797c5D95a05BF3863363080b4B" # RegulatedEntityRegistry (vault)
|
||||
@@ -160,7 +162,7 @@ if [[ $MISS -gt 0 && -z "$rpc_reachable" ]]; then
|
||||
echo " → RPC was unreachable from this host; see WARN above. Run from LAN/VPN or pass a reachable RPC URL." >&2
|
||||
fi
|
||||
# Expected missing (pending deploy or confirm): TransactionMirror, DODO pool; exit 0 when only these are missing
|
||||
EXPECTED_MISSING=("0xb5876547c52CaBf49d7f40233B6f6a140F403d25" "0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8")
|
||||
EXPECTED_MISSING=("0xb5876547c52CaBf49d7f40233B6f6a140F403d25")
|
||||
if [[ -n "${SKIP_EXIT:-}" && "${SKIP_EXIT}" != "0" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
# Check all Chain 138 DODO PMM pool token balances (base + quote).
|
||||
# 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
|
||||
|
||||
@@ -14,14 +18,10 @@ RPC="${1:-${RPC_URL_138:-http://192.168.11.211:8545}}"
|
||||
# Token addresses (Chain 138 canonical)
|
||||
cUSDT="0x93E66202A11B1772E55407B32B44e5Cd8eda7f22"
|
||||
cUSDC="0xf22258f57794CC8E06237084b353Ab30fFfa640b"
|
||||
OFFICIAL_USDT="0x15DF1D5BFDD8Aa4b380445D4e3E9B38d34283619"
|
||||
# Official USDC from integration or placeholder (no contract on 138)
|
||||
OFFICIAL_USDC="0x0000000000000000000000000000000000000000"
|
||||
|
||||
# Pool addresses
|
||||
POOL_CUSDTCUSDC="0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8"
|
||||
POOL_CUSDTUSDT="0xa3Ee6091696B28e5497b6F491fA1e99047250c59"
|
||||
POOL_CUSDCUSDC="0x90bd9Bf18Daa26Af3e814ea224032d015db58Ea5"
|
||||
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() {
|
||||
@@ -35,43 +35,89 @@ balance() {
|
||||
}
|
||||
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 ""
|
||||
|
||||
# Pool 1: cUSDT / cUSDC (base / quote)
|
||||
echo "Pool 1: cUSDT / cUSDC"
|
||||
echo " Address: $POOL_CUSDTCUSDC"
|
||||
r1=$(balance "$cUSDT" "$POOL_CUSDTCUSDC")
|
||||
r2=$(balance "$cUSDC" "$POOL_CUSDTCUSDC")
|
||||
echo " cUSDT (base): raw=$r1 → $(human6 "$r1")"
|
||||
echo " cUSDC (quote): raw=$r2 → $(human6 "$r2")"
|
||||
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 ""
|
||||
|
||||
# Pool 2: cUSDT / USDT (official USDT has no code on 138)
|
||||
echo "Pool 2: cUSDT / USDT (official)"
|
||||
echo " Address: $POOL_CUSDTUSDT"
|
||||
r1=$(balance "$cUSDT" "$POOL_CUSDTUSDT")
|
||||
r2=$(balance "$OFFICIAL_USDT" "$POOL_CUSDTUSDT")
|
||||
echo " cUSDT (base): raw=${r1:-0x0} → $(human6 "$r1")"
|
||||
echo " USDT (quote): raw=${r2:-0x0} → $(human6 "$r2")"
|
||||
echo ""
|
||||
|
||||
# Pool 3: cUSDC / USDC (official USDC not deployed on 138)
|
||||
echo "Pool 3: cUSDC / USDC (official)"
|
||||
echo " Address: $POOL_CUSDCUSDC"
|
||||
r1=$(balance "$cUSDC" "$POOL_CUSDCUSDC")
|
||||
echo " cUSDC (base): raw=$r1 → $(human6 "$r1")"
|
||||
if [[ "$OFFICIAL_USDC" != "0x0000000000000000000000000000000000000000" ]]; then
|
||||
r2=$(balance "$OFFICIAL_USDC" "$POOL_CUSDCUSDC")
|
||||
echo " USDC (quote): raw=$r2 → $(human6 "$r2")"
|
||||
else
|
||||
echo " USDC (quote): N/A (no official USDC contract on 138)"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
echo "Note: Pool 1 (cUSDT/cUSDC) is the only pool with liquidity on 138. Pools 2 and 3 use official USDT/USDC which have no contract on Chain 138."
|
||||
echo "Note: This script verifies the current funded public and private PMM set from the 2026-03-26 docs."
|
||||
echo "Done."
|
||||
|
||||
Reference in New Issue
Block a user