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

89 lines
6.7 KiB
Markdown

# 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.json``nonEvmNetworks` and `cross-chain-pmm-lps/config/chains.json``nonEvm` 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](../07-ccip/CW_BRIDGE_APPROACH.md) and [CW_BRIDGE_TASK_LIST.md](../00-meta/CW_BRIDGE_TASK_LIST.md). |
| After Phase B or C | Extended bridge or TwoWayTokenBridgeL2 / CCIPReceiverCW | **Yes** (when implemented) | Per [CW_BRIDGE_APPROACH.md](../07-ccip/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`:
```bash
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):
```bash
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
- [C_TO_CW_MAPPER_MAPPING.md](../04-configuration/C_TO_CW_MAPPER_MAPPING.md) — c*→cW* symbol and address mapping for the mapper.
- [TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md](TOKENS_DEPLOYER_DEPLOYED_ON_OTHER_CHAINS.md) — Deployer tokens on other chains; cW* deploy path.
- [config/token-mapping-multichain.json](../../config/token-mapping-multichain.json) — `cToCwSymbolMapping` and per-pair `_cW` tokens.
- **[CW_BRIDGE_TASK_LIST.md](../00-meta/CW_BRIDGE_TASK_LIST.md)** — Detailed task list: note review, checks performed, and phases (bridge extension vs dedicated receiver, deploy cW*, wire config, E2E).