# GRU Token Scope (Deployed vs Specified)

This document lists GRU-M1 base money, ISO-4217 W tokens, Aave-style asset/debt tokens, and flash loan coverage. All tokens are **ERC-20 compliant** for DEX liquidity pool compatibility. Use deterministic deployment (CREATE2) for cross-chain tokens; same address everywhere.

**ISO-4217 symbol matrix:** For compliant token symbol construction (6-char native, 7-char bridged) and v0/v1 mapping, see [ISO4217_COMPLIANT_TOKEN_MATRIX.md](../../../docs/04-configuration/ISO4217_COMPLIANT_TOKEN_MATRIX.md). On **ChainID 138 only**, token symbols are **v0** (no chain designator): `cUSDT`, `cUSDC`; the X is left out. X is used only when denoting Chain 138 as origin elsewhere (e.g. bridged).

## 1. Base Money (GRU-M1) — ERC-20, DEX-ready

| Token   | Contract / config        | Status   | Decimals | Notes |
|---------|--------------------------|----------|----------|--------|
| cUSDC   | CompliantUSDC.sol        | Deployed | 6        | Chain 138; CREATE2 on other chains. |
| cUSDT   | CompliantUSDT.sol        | Deployed | 6        | Same. |
| cEURC   | CompliantFiatToken.sol   | Specified| 6        | EUR; deploy via CompliantFiatToken. |
| cEURT   | CompliantFiatToken.sol   | Specified| 6        | Tether EUR. |
| cGBPC   | CompliantFiatToken.sol   | Specified| 6        | GBP. |
| cGBPT   | CompliantFiatToken.sol   | Specified| 6        | Tether GBP. |
| cAUDC   | CompliantFiatToken.sol   | Specified| 6        | AUD. |
| cJPYC   | CompliantFiatToken.sol   | Specified| 6        | JPY (often 0 or 2 decimals; 6 for uniformity). |
| cCHFC   | CompliantFiatToken.sol   | Specified| 6        | CHF. |
| cCADC   | CompliantFiatToken.sol   | Specified| 6        | CAD. |
| cXAUC   | CompliantFiatToken.sol   | Specified| 6        | XAU; **1 token = 1 troy oz Au** (canonical). |
| cXAUT   | CompliantFiatToken.sol   | Specified| 6        | XAU; **1 token = 1 troy oz Au** (canonical). |
| LiXAU   | —                        | Specified| 6        | XAU-liquidity-adjusted; map or add. |

Properties for all: ISO-4217 aligned naming and decimals, non-interest-bearing, fully redeemable, E-Money safeguards, reserve attestation hooks. Full ERC-20 (transfer, approve, balanceOf) for DEX pools.

## 2. ISO-4217 W Tokens (M1 eMoney) — ERC-20, DEX-ready

| Token | Contract        | Status   | Decimals | Notes |
|-------|-----------------|----------|----------|--------|
| USDW  | ISO4217WToken   | In script| 2        | DeployISO4217WSystem.s.sol. |
| EURW  | ISO4217WToken   | In script| 2        | Same. |
| GBPW  | ISO4217WToken   | In script| 2        | Same. |
| AUDW  | ISO4217WToken   | Specified| 2        | Deploy via TokenFactory. |
| JPYW  | ISO4217WToken   | Specified| 2        | Same. |
| CHFW  | ISO4217WToken   | Specified| 2        | Same. |
| CADW  | ISO4217WToken   | Specified| 2        | Same. |

Use [TokenFactory](../../contracts/iso4217w/TokenFactory.sol) or extend [DeployISO4217WSystem.s.sol](../../script/deploy/iso4217w/DeployISO4217WSystem.s.sol). Full ERC-20 for DEX.

## 3. Asset Tokens (Aave-style, ac*) — ERC-20, DEX-ready

| Token   | Contract     | Status   | Decimals | CREATE2 salt |
|---------|--------------|----------|----------|----------------------|
| acUSDC  | DepositToken  | Mapped   | 6        | keccak256("DepositToken.acUSDC") |
| acUSDT  | DepositToken  | Mapped   | 6        | keccak256("DepositToken.acUSDT") |
| acEURC  | DepositToken  | Specified| 6        | keccak256("DepositToken.acEURC") |
| acGBPC  | DepositToken  | Specified| 6        | keccak256("DepositToken.acGBPC") |
| acAUDC  | DepositToken  | Specified| 6        | keccak256("DepositToken.acAUDC") |
| acJPYC  | DepositToken  | Specified| 6        | keccak256("DepositToken.acJPYC") |
| acCHFC  | DepositToken  | Specified| 6        | keccak256("DepositToken.acCHFC") |
| acCADC  | DepositToken  | Specified| 6        | keccak256("DepositToken.acCADC") |
| acXAUC  | DepositToken  | Specified| 6        | keccak256("DepositToken.acXAUC") |

Use [DepositToken](../../contracts/vault/tokens/DepositToken.sol) with `decimals_` set to underlying (e.g. 6). Freely transferable; DEX-ready.

## 4. Debt Tokens (Aave-style, vdc* / sdc*) — ERC-20, optionally DEX-ready

| Token     | Contract   | Status   | Decimals | Transferable | CREATE2 salt |
|-----------|-------------|----------|----------|---------------|----------------------|
| vdcUSDC   | DebtToken   | Mapped   | 6        | configurable  | keccak256("DebtToken.vdcUSDC") |
| sdcUSDC   | DebtToken   | Mapped   | 6        | configurable  | keccak256("DebtToken.sdcUSDC") |
| vdcEURC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.vdcEURC") |
| sdcEURC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.sdcEURC") |
| vdcGBPC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.vdcGBPC") |
| sdcGBPC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.sdcGBPC") |
| vdcAUDC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.vdcAUDC") |
| sdcAUDC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.sdcAUDC") |
| vdcJPYC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.vdcJPYC") |
| sdcJPYC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.sdcJPYC") |
| vdcCHFC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.vdcCHFC") |
| sdcCHFC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.sdcCHFC") |
| vdcCADC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.vdcCADC") |
| sdcCADC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.sdcCADC") |
| vdcXAUC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.vdcXAUC") |
| sdcXAUC   | DebtToken   | Specified| 6        | configurable  | keccak256("DebtToken.sdcXAUC") |

Use [DebtToken](../../contracts/vault/tokens/DebtToken.sol) with `decimals_` and `transferable_`. When `transferable_ == true`, full ERC-20 for DEX; when false, mint/burn/vault-only (default).

## 5. Flash Loans

| Location        | Status   | Notes |
|-----------------|----------|--------|
| WETH10          | Implemented | [WETH10.sol](../../contracts/tokens/WETH10.sol) implements ERC-3156. |
| Liquidity pools | Specified | Pools should expose flash loan capability; gate via ComplianceRegistry/allowlist. |

## 6. Reserve Attestation and E-Money Hooks

- **Base money:** Par redeemability, safeguarded reserves, no yield on base money, transaction monitoring hooks.
- **Where:** ComplianceGuard and TokenRegistry (iso4217w); PolicyManager and ComplianceRegistry (emoney); ReserveOracle for attestation.
- See ISO-20022 and E-Money runbook (docs/runbooks).

## 7. ERC-20 and DEX Compatibility

- **Base (c*) and W (*W):** Full ERC-20 (name, symbol, decimals, balanceOf, transfer, approve, allowance, Transfer/Approval events). Compatible with Uniswap, DODO, Balancer, etc.
- **Asset (ac*):** Same; DepositToken is fully transferable and supports configurable decimals to match underlying.
- **Debt (vdc*/sdc*):** ERC-20 interface; when `transferable` is true, same as above; when false, only mint/burn/vault (no general transfers).
- **VaultFactory:** Tokens created via [VaultFactory.createVault](../../contracts/vault/VaultFactory.sol) use the 5-arg `DepositToken.initialize` and `DebtToken.initialize` only, so they get **18 decimals** and non-transferable debt. For cUSDC/cUSDT (6 decimals) and DEX compatibility, deploy deposit/debt tokens via deterministic scripts using `initializeWithDecimals` / `initializeFull` (see runbooks).
- **Reporting:** Token Aggregation Service exposes all tokens, pools, liquidity, and volume for **CoinMarketCap** and **CoinGecko** via `/api/v1/report/*` (see token-aggregation docs).

## 8. Naming and Decimals

- ac* and vdc*/sdc* use same decimals as underlying (e.g. cUSDC 6 → acUSDC 6, vdcUSDC 6).
- No per-chain address maps; use deterministic deployment (see [MULTI_CHAIN_EXECUTION_DETERMINISTIC_DEPLOYMENT.md](../../../docs/runbooks/MULTI_CHAIN_EXECUTION_DETERMINISTIC_DEPLOYMENT.md)).
- **Canonical symbol grammar:** In the GRU M00 Diamond spec, logical roles **a** (asset) and **d** (debt) map to deployed names **ac** (DepositToken) and **vdc**/sdc (DebtToken). Full grammar (c/a/d, W-before/after-ISO): [GRU_M00_DIAMOND_FACET_MAP.md](../../../docs/04-configuration/GRU_M00_DIAMOND_FACET_MAP.md) §5.
