Files
proxmox/docs/04-configuration/22_TOKENS_13_CHAINS_DEPLOYMENT_RUNBOOK.md
defiQUG b3a8fe4496
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
chore: sync all changes to Gitea
- Config, docs, scripts, and backup manifests
- Submodule refs unchanged (m = modified content in submodules)

Made-with: Cursor
2026-03-02 11:37:34 -08:00

5.3 KiB

22 Tokens on All 13 Chains — Deployment Runbook

Purpose: Ensure all 22 token types are represented across all 13 chains in DUAL_CHAIN_TOKEN_LIST and DUAL_CHAIN_NETWORKS.

Status: Token list expanded; on-chain deployment documented
Last updated: 2026-02-28


Overview

Item Count
Chains 13 (138, 1, 651940, 25, 56, 100, 137, 10, 42161, 8453, 43114, 42220, 1111)
Token list entries 52+ (USDC, USDT, WETH on all; custom tokens on 138, 1, 25, 651940)
Unique token symbols 17 (ETH-USD, WETH, WETH10, LINK, cUSDT, cUSDC, USDT, USDC, DAI, WETH9, USDW, EURW, GBPW, AUDW, JPYW, CHFW, CADW)

Token List Coverage (DUAL_CHAIN_TOKEN_LIST)

Per-chain coverage

Chain Name USDC USDT WETH Custom (cUSDT, cUSDC, WETH10, ISO-4217 W)
138 DeFi Oracle Meta ✓ (cUSDT, cUSDC, WETH10, LINK, ETH-USD)
1 Ethereum ✓ (DAI, ETH-USD)
651940 ALL Mainnet
25 Cronos ✓ (WETH9) ✓ (WETH10, LINK, USDW, EURW, GBPW, AUDW, JPYW, CHFW, CADW)
56 BSC
100 Gnosis
137 Polygon
10 Optimism
42161 Arbitrum
8453 Base
43114 Avalanche
42220 Celo
1111 Wemix

Note: Wemix uses WEMIX as native; no standard WETH. USDC/USDT use canonical addresses from canonical-tokens.ts.


Canonical Addresses (token-aggregation)

smom-dbis-138/services/token-aggregation/src/config/canonical-tokens.ts defines FALLBACK_ADDRESSES for cUSDC and cUSDT on all 13 chains:

  • Chain 138 / 651940: Custom cUSDT/cUSDC
  • L2s (1, 56, 100, 137, 10, 42161, 8453, 43114, 25, 42220, 1111): Native USDC/USDT addresses (no custom deployment required for token list)

On-Chain Deployment (Custom Tokens)

When to deploy

  • cUSDT / cUSDC: Deploy only if you need compliant versions on L2s (e.g. for PMM, CCIP, or regulatory use). Otherwise, use native USDC/USDT.
  • WETH10: Only on Chain 138 and Cronos (25).
  • ISO-4217 W (USDW, EURW, GBPW, etc.): Only on Cronos (25) today; expand to other chains if required.

Deploy cUSDT/cUSDC to all 13 chains

  1. Prerequisites

    • .env in smom-dbis-138/ with PRIVATE_KEY and per-chain RPC:
      • ETHEREUM_MAINNET_RPC, BSC_RPC_URL, POLYGON_MAINNET_RPC, BASE_MAINNET_RPC, OPTIMISM_MAINNET_RPC, ARBITRUM_MAINNET_RPC, AVALANCHE_RPC_URL, CRONOS_RPC_URL, GNOSIS_MAINNET_RPC, CELO_MAINNET_RPC, WEMIX_MAINNET_RPC
    • Deployer funded with native gas on each chain (ETH, BNB, MATIC, CRO, xDAI, AVAX, CELO, WEMIX, etc.)
  2. Run deploy script

    cd smom-dbis-138
    ./scripts/deployment/deploy-cusdt-cusdc-all-chains.sh
    
  3. Record addresses

    • Add CUSDT_ADDRESS_<chainId> and CUSDC_ADDRESS_<chainId> to .env for each chain.
    • Update canonical-tokens.ts FALLBACK_ADDRESSES if you want to override native USDC/USDT with compliant versions.
  4. Filter by chain (optional)

    DEPLOY_CUSDT_CUSDC_FILTER="POLYGON BASE" ./scripts/deployment/deploy-cusdt-cusdc-all-chains.sh
    
  5. Dry run

    DEPLOY_CUSDT_CUSDC_DRY_RUN=1 ./scripts/deployment/deploy-cusdt-cusdc-all-chains.sh
    

Sync and Deploy Token List

After updating DUAL_CHAIN_TOKEN_LIST.tokenlist.json:

# 1. Sync configs to all locations
bash scripts/sync-dual-chain-configs.sh

# 2. Deploy to VMID 5000 (Proxmox)
# From repo root — via Proxmox host (pct):
PROXMOX_HOST=192.168.11.12  # or PROXMOX_HOST_R630_02
scp explorer-monorepo/backend/api/rest/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json \
    explorer-monorepo/backend/api/rest/config/metamask/DUAL_CHAIN_NETWORKS.json \
    root@${PROXMOX_HOST}:/tmp/
ssh root@${PROXMOX_HOST} "
  pct exec 5000 -- mkdir -p /var/www/html/config
  pct push 5000 /tmp/DUAL_CHAIN_TOKEN_LIST.tokenlist.json /var/www/html/config/DUAL_CHAIN_TOKEN_LIST.tokenlist.json
  pct push 5000 /tmp/DUAL_CHAIN_NETWORKS.json /var/www/html/config/DUAL_CHAIN_NETWORKS.json
"

# Or use the deploy script (when on Proxmox host with pct):
# ./explorer-monorepo/scripts/deploy-explorer-config-to-vmid5000.sh

Verification

Check Command / location
Token list JSON python3 -c "import json; json.load(open('explorer-monorepo/backend/api/rest/config/metamask/DUAL_CHAIN_TOKEN_LIST.tokenlist.json'))"
Config validation ./scripts/validation/validate-config-files.sh
Token on chain cast call <ADDRESS> "totalSupply()(uint256)" --rpc-url $RPC_URL
Explorer config GET https://<explorer>/api/config/DUAL_CHAIN_TOKEN_LIST.tokenlist.json