8.3 KiB
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. 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-backed. |
| cXAUT | CompliantFiatToken.sol | Specified | 6 | Tether XAU. |
| 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 or extend 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 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 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 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
transferableis true, same as above; when false, only mint/burn/vault (no general transfers). - VaultFactory: Tokens created via VaultFactory.createVault use the 5-arg
DepositToken.initializeandDebtToken.initializeonly, so they get 18 decimals and non-transferable debt. For cUSDC/cUSDT (6 decimals) and DEX compatibility, deploy deposit/debt tokens via deterministic scripts usinginitializeWithDecimals/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).
- 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 §5.