Files
proxmox/docs/04-configuration/C_TO_CW_MAPPER_MAPPING.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

3.4 KiB
Raw Blame History

c* → cW* Mapper Mapping (Multi-Chain)

Purpose: Define the mapping of compliant tokens (c*) on Chain 138 to their wrapped representations (cW*) on other chains for bridge/mapper tooling.

Source of truth

  • Config: config/token-mapping-multichain.json
    • cToCwSymbolMapping — Symbol correspondence: each c* symbol maps to its cW* symbol (e.g. cUSDTcWUSDT).
    • Per-pair tokens — For each fromChainId: 138toChainId: <chain> pair, tokens with key Compliant_*_cW define: addressFrom = c* contract on 138, addressTo = cW* contract on the destination chain (or 0x0 placeholder until deployed).

Symbol mapping (c* → cW*)

c* (Chain 138) cW* (other chains)
cUSDT cWUSDT
cUSDC cWUSDC
cEURC cWEURC
cEURT cWEURT
cGBPC cWGBPC
cGBPT cWGBPT
cAUDC cWAUDC
cJPYC cWJPYC
cCHFC cWCHFC
cCADC cWCADC
cXAUC cWXAUC
cXAUT cWXAUT

Per-chain address mapping

For each destination chain, the mapper (or bridge config) should resolve:

  • Compliant_USDT_cW: Chain 138 cUSDT address → cWUSDT address on destination
  • Compliant_USDC_cW: Chain 138 cUSDC address → cWUSDC address on destination
  • Compliant_EURC_cW: Chain 138 cEURC address → cWEURC address on destination

(Additional c* → cW* pairs can be added to token-mapping-multichain.json when those c* and cW* are deployed.)

In token-mapping-multichain.json, entries with key suffix _cW use addressTo: "0x0000000000000000000000000000000000000000" as a placeholder until the cW* contract is deployed on that chain. Operators: after deploying cW* (e.g. via DeployCWTokens.s.sol or equivalent), update the corresponding addressTo in the JSON (or in env-driven config that overrides it). The receiver/bridge on the destination chain must support minting cW* (e.g. dedicated cW* receiver such as TwoWayTokenBridgeL2, or an extended bridge that calls cW*.mint(recipient, amount) in ccipReceive); see CW_BRIDGE_APPROACH.md and CW_BRIDGE_TASK_LIST.md.

Consumer behavior

  • Mapper / bridge: When resolving "cUSDT on 138 → token on chain 56", use:

    • Native representation: key Compliant_USDTaddressTo = that chains native USDT (e.g. BSC USDT).
    • Wrapped representation: key Compliant_USDT_cWaddressTo = that chains cWUSDT. If addressTo is zero, treat as "cW* not deployed" and optionally fall back to native or reject.
  • Loading: config/token-mapping-loader.cjs builds addressMapFromTo / addressMapToFrom from tokens. Keys *_cW are first-class; filter by key suffix or use cToCwSymbolMapping for symbol-level logic.