Files
proxmox/docs/11-references/CW_TOKENS_AND_NETWORKS.md
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

6.7 KiB

cW* Tokens and Networks

Purpose: Single reference for all compliant wrapped tokens (cW*) and the networks where they are defined or deployed.

Source of truth: config/token-mapping-multichain.json (cToCwSymbolMapping), smom-dbis-138/script/deploy/DeployCWTokens.s.sol, smom-dbis-138/.env (for recorded addresses), and scripts/verify/check-cw-evm-deployment-mesh.sh (for the current per-chain EVM deployment summary).


1. All cW* tokens and deployability

All 12 cW* tokens are deployable via DeployCWTokens.s.sol (env flags DEPLOY_CWUSDT=1, DEPLOY_CWEURC=1, etc.; default all 1). Set DEPLOY_*=0 to skip a token.

cW* Token Deploy script Networks deployable (script) Deployed on (addresses in .env)
cWUSDT Yes 1, 10, 25, 56, 100, 137, 42161, 42220, 43114, 8453, 1111 All 10 loaded chains (Mainnet, Optimism, Cronos, BSC, Gnosis, Polygon, Arbitrum, Celo, Avalanche, Base); Wemix desired but not yet loaded
cWUSDC Yes Same All 10 loaded chains
cWEURC Yes Same All 10 loaded chains
cWEURT Yes Same All 10 loaded chains
cWGBPC Yes Same All 10 loaded chains
cWGBPT Yes Same All 10 loaded chains
cWAUDC Yes Same All 10 loaded chains
cWJPYC Yes Same All 10 loaded chains
cWCHFC Yes Same All 10 loaded chains
cWCADC Yes Same All 10 loaded chains
cWXAUC Yes Same All 10 loaded chains
cWXAUT Yes Same All 10 loaded chains

Current mesh status (2026-04-04): the public EVM cW* deployment mesh is 12/12 on all 10 currently loaded public EVM chains: Mainnet, Optimism, Cronos, BSC, Gnosis, Polygon, Arbitrum, Celo, Avalanche, and Base. Wemix remains the only desired public EVM target without a loaded cW* suite in deployment-status.json.


2. Network names (chain ID)

Chain ID Network name
1 Ethereum Mainnet
10 Optimism
25 Cronos
56 BSC (BNB Chain)
100 Gnosis Chain
137 Polygon
42220 Celo
43114 Avalanche C-Chain
8453 Base
42161 Arbitrum One
1111 Wemix

Chains 1, 10, 25, 56, 100, 137, 42161, 42220, 43114, 8453, and 1111 are in the current deploy-tokens-and-weth-all-chains-skip-canonical.sh cW deployment list. Of those, Wemix is still pending live rollout because the destination bridge/funding state is not ready. 651940 (ALL Mainnet) is env-validation only; no cW* deploy from this repo.

Solana (SVM mainnet-beta) is not an EIP-155 chain: it appears under config/token-mapping-multichain.jsonnonEvmNetworks and cross-chain-pmm-lps/config/chains.jsonnonEvm for registry/adapter tracking. The DeployCWTokens EVM flow and pool-matrix hub-stable rows do not apply until an SPL or bridge-wrapped asset program is specified.

ALL Mainnet XAU exception: gold uses a destination-specific naming rule on 651940. For the 138 -> 651940 corridor, the source leg wraps as cWXAUC / cWXAUT, but the bridge-minted ALL Mainnet representation is cWAXAUC / cWAXAUT, which unwraps to cAXAUC / cAXAUT. Treat these as ALL Mainnet-specific symbols, not generic public-chain cW* deploys from DeployCWTokens.s.sol.


2.1 Bridge support status

Chain(s) Bridge / receiver Bridge code mints cW*? Notes
43114 (Avalanche) Dedicated AVAX cW bridge 0x635002c5fb227160cd2eac926d1baa61847f3c75 Yes Proven live for the dedicated non-prefunded cUSDT -> cWUSDT corridor. Treat this as a chain-specific exception, not blanket proof for every cW destination chain.
1 (Ethereum Mainnet) Relay router 0x416564Ab73Ad5710855E98dC7bC7Bff7387285BA + CWMultiTokenBridgeL2 0x2bF74583206A49Be07E0E8A94197C12987AbD7B5 Yes Live and canary-proven for both cUSDC -> cWUSDC and cUSDT -> cWUSDT. The legacy Mainnet CCIPRelayBridge remains WETH-only and should only be used for WETH release flows.
Generic public-chain WETH receiver set (25, 56, 137, 100, 43114, 8453, 42161, 10) CCIPWETH9_BRIDGE_* / CCIPRelayBridge-style WETH receivers No Current legacy suite is WETH-only; ccipReceive only transfers the received token. Granting MINTER/BURNER to these addresses allows DeployCWTokens to run but does not enable cross-chain mint until the receiver is extended or a dedicated cW* receiver (e.g. TwoWayTokenBridgeL2) is deployed. See CW_BRIDGE_APPROACH.md and CW_BRIDGE_TASK_LIST.md.
After Phase B or C Extended bridge or TwoWayTokenBridgeL2 / CCIPReceiverCW Yes (when implemented) Per CW_BRIDGE_APPROACH.md, Option 2 (dedicated receiver) is chosen; deploy TwoWayTokenBridgeL2 or equivalent per chain and point CW_BRIDGE_<CHAIN> to it for cW* mint/burn.

3. How to deploy cWUSDT / cWUSDC

  1. Bridge addresses: CW_BRIDGE_ADDRESS is left as default (zero). Per-chain CW_BRIDGE_<CHAIN> values are set in smom-dbis-138/.env from the deployed bridge suite. Mainnet now uses the dedicated cW-capable CWMultiTokenBridgeL2; the legacy Mainnet CCIPRelayBridge remains WETH-only. Other chains still use CCIPWETH9_BRIDGE_* or a dedicated cW receiver such as the proven AVAX cW bridge. Only a dedicated cW-capable receiver enables mint-on-receive.
  2. Run with --deploy-cw:
    cd smom-dbis-138 && ./scripts/deployment/deploy-tokens-and-weth-all-chains-skip-canonical.sh --deploy-cw
    
    Or deploy to a single chain (e.g. BSC):
    CW_BRIDGE_ADDRESS=0x... forge script script/deploy/DeployCWTokens.s.sol:DeployCWTokens \
      --rpc-url "$BSC_RPC_URL" --chain-id 56 --broadcast --private-key "$PRIVATE_KEY" --legacy
    
  3. Set CWUSDT_<CHAIN>, CWUSDC_<CHAIN> in .env from the script output, and update config/token-mapping-multichain.json addressTo for the corresponding Compliant_USDT_cW / Compliant_USDC_cW entries.

4. References