| `X` | Chain 138 (origin reference only) | 138 | Used only when denoting origin 138 on other chains (e.g. bridged) |
| `A` | Alltra Mainnet | 651940 | ALL Mainnet |
**Chain 138:** On ChainID 138, token symbols are **v0 only** — the chain designator is **left out**. Use `cUSDC`, `cUSDT` (no `X`). The `X` designator is used only for bridged tokens on public chains when the origin is Chain 138 (e.g. `cWXUSDC`). Reserved designators: do not reuse. Add new chains via registry.
---
## 3. ISO4217_SET
Reference: [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). Supported subset for implementation:
- **Future:** Add codes via registry; validation enforces **3 uppercase letters only** (no 4-letter codes in v1)
---
## 4. Validation Rules
### Native (len = 6)
-`s[0] == 'c'`
-`s[1] in FIN_CHAIN_SET`
-`s[2:5] in ISO4217_SET` (positions 2, 3, 4)
-`s[5] in {'C','T','W'}`
### Bridged (len = 7)
-`s[0] == 'c'`
-`s[1] == 'W'`
-`s[2] in FIN_CHAIN_SET` (origin chain)
-`s[3:6] in ISO4217_SET` (positions 3, 4, 5)
-`s[6] in {'C','T','W'}`
---
## 5. v0 Symbols (Chain 138 Only)
On **ChainID 138 only**, compliant token symbols use the **v0 form** with **no chain designator** (the X is left out):
| v0 Symbol | Identity | Type | Chain |
| --------- | -------------- | ----- | ------ |
| `cUSDT` | ISO USD, Type T | Token | 138 |
| `cUSDC` | ISO USD, Type C | Coin | 138 |
- These symbols are **maintained only on Chain 138**; they are not used on other chains.
- Registry maps v0 → `{ iso, type, originChain: 'X' }` for reporting and for bridged-origin reference; on-chain on 138 the symbol stays `cUSDC` / `cUSDT`.
---
## 6. Chain 138: No X in Native Symbols
- **On Chain 138:** Native token symbols remain **v0** — `cUSDC`, `cUSDT` (no `X`, no designator). Do not use `cXUSDC` or `cXUSDT` on Chain 138.
- **X** is used only when referring to Chain 138 as **origin** elsewhere (e.g. bridged tokens on public chains: `cWXUSDC`, `cWXUSDT`).
- Registry maps v0 → v1 identity for reporting and validation; the on-chain symbol on 138 does not change.
The generic bridged rule above uses the **origin financial chain designator** in position 3. For the specific **Chain 138 -> ALL Mainnet (651940)** gold corridor, the repo uses an explicit **ALL Mainnet naming exception**:
| Flow leg | XAUC | XAUT |
| --- | --- | --- |
| Source-side wrapped leg | `cWXAUC` | `cWXAUT` |
| Bridge-minted ALL Mainnet wrapped leg | `cWAXAUC` | `cWAXAUT` |
| Unwrapped ALL Mainnet native leg | `cAXAUC` | `cAXAUT` |
This exception is intentional and should be interpreted from the **pair mapping + chainId + contract address**, not by applying the generic 7-character bridged rule blindly.
- **Chain 138:** Native symbols are **v0 only** (no X): `cUSDC`, `cUSDT`. No 6-char form with X is used on Chain 138.
- **Other financial chains:** Native symbols use 6-char with designator (e.g. Alltra `cAUSDC`, `cAUSDT`).
- **Bridged symbols** (7-char) live on **Public chains** (Ethereum, Base, Polygon, etc.); use `cWXUSDC` when origin is Chain 138.
- Chain specificity remains defined by **chainId + contract address**; the symbol encodes **class + origin** (except v0 on 138, which encodes class only).
---
## References
- [CHAIN138_TOKEN_ADDRESSES.md](../11-references/CHAIN138_TOKEN_ADDRESSES.md) — v0 symbol mapping