Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- Config, docs, scripts, and backup manifests - Submodule refs unchanged (m = modified content in submodules) Made-with: Cursor
5.3 KiB
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
-
Prerequisites
.envinsmom-dbis-138/withPRIVATE_KEYand 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.)
-
Run deploy script
cd smom-dbis-138 ./scripts/deployment/deploy-cusdt-cusdc-all-chains.sh -
Record addresses
- Add
CUSDT_ADDRESS_<chainId>andCUSDC_ADDRESS_<chainId>to.envfor each chain. - Update
canonical-tokens.tsFALLBACK_ADDRESSES if you want to override native USDC/USDT with compliant versions.
- Add
-
Filter by chain (optional)
DEPLOY_CUSDT_CUSDC_FILTER="POLYGON BASE" ./scripts/deployment/deploy-cusdt-cusdc-all-chains.sh -
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 |
Related Docs
- CUSDT_CUSDC_MULTICHAIN_LIQUIDITY_RUNBOOK.md — PMM, Uniswap, Balancer, Curve
- canonical-tokens.ts — Address mapping
- DEPLOYED_COINS_TOKENS_AND_NETWORKS.md — Reference addresses