Files
proxmox/docs/runbooks/MULTI_CHAIN_EXECUTION_ISO20022_EMONEY.md
defiQUG bea1903ac9
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Sync all local changes: docs, config, scripts, submodule refs, verification evidence
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 15:46:06 -08:00

83 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ISO-20022 and E-Money (GRU Multi-Chain)
**Last Updated:** 2026-01-31
**Document Version:** 1.0
**Status:** Active Documentation
---
This document describes ISO-20022 metadata support and E-Money hooks for GRU base money tokens. All transfers, mints, burns, and cross-chain actions must be mappable to ISO-20022 semantics where applicable.
## 1. ISO-20022 Canonical Message (Extended)
The [IISO20022Router.CanonicalMessage](../../../smom-dbis-138/contracts/emoney/interfaces/IISO20022Router.sol) struct includes:
| Field | Purpose |
|-------|---------|
| msgType | pacs.008, pain.001, camt.054, etc. |
| instructionId | InstrId unique reference |
| endToEndId | EndToEndId (optional) |
| msgId | MsgId (optional) |
| uetr | UETR (optional) |
| accountRefId | Account reference |
| counterpartyRefId | Counterparty reference |
| debtorId | Debtor identifier (optional) |
| creditorId | Creditor identifier (optional) |
| purpose | Purpose / remittance info (optional) |
| settlementMethod | Settlement method (optional) |
| categoryPurpose | Category purpose (optional) |
| token | Token address |
| amount | Amount |
| currencyCode | Currency code |
| payloadHash | Hash of off-chain payload |
All transfer, mint, burn, and cross-chain entry points (e.g. BridgeVault, UniversalCCIPBridge, AlltraCustomBridge) should carry or reference these fields where applicable e.g. via event parameters or a dedicated metadata field so that off-chain systems can map to ISO-20022.
## 2. E-Money Requirements (Base Money)
Base money tokens (GRU-M1: cUSDC, cUSDT, cEURC, etc.) must satisfy:
- **Par redeemability:** 1 unit of token = 1 unit of underlying; redeemable at par.
- **Safeguarded reserves:** Reserves held in segregated form; attestation via ReserveOracle or equivalent.
- **No yield on base money:** Base money tokens do not accrue interest (yield is on asset tokens, e.g. acUSDC).
- **Transaction monitoring hooks:** ComplianceGuard / PolicyManager / ComplianceRegistry enforce allowlists, KYT, and circuit breakers.
## 3. Where E-Money Hooks Are Enforced
| Requirement | Contract / component | Notes |
|-------------|----------------------|--------|
| Par redeemability | Token implementation (CompliantUSDC, ISO4217WToken) | Mint/burn 1:1; no rebase on base money. |
| Safeguarded reserves | ReserveOracle (iso4217w), StablecoinReserveVault, PolicyManager | Attestation and reserve checks before mint. |
| No yield on base money | Token implementation, Vault/DepositToken separation | Base money = c*; yield only on ac* (DepositToken). |
| Transaction monitoring | ComplianceGuard (iso4217w), ComplianceRegistry (emoney), PolicyManager | Allowlists, KYT integration, circuit breakers. |
## 4. ComplianceGuard and TokenRegistry (iso4217w)
- **ComplianceGuard:** Validates mint/burn/transfer against policy (allowlists, caps, KYC).
- **TokenRegistry:** Registers tokens and links to ComplianceGuard and reserve attestation.
- Use these for all GRU-M1 tokens so that transfers and mints are gated and mappable to ISO-20022 metadata (e.g. debtor/creditor, purpose) where required.
## 5. PolicyManager and ComplianceRegistry (emoney)
- **PolicyManager:** Central policy (e.g. per-token rules, circuit breakers).
- **ComplianceRegistry:** Marks entities (e.g. BridgeVault138) as compliant for transfers.
- Wire base money transfers and bridge lock/unlock through these so that transaction monitoring and E-Money safeguards are applied.
## 6. Reserve Attestation
- **ReserveOracle** (iso4217w): Provides reserve attestation for W tokens.
- **StablecoinReserveVault / ReserveSystem:** Hold and attest reserves for stablecoins.
- Base money mints should require a valid reserve attestation (or equivalent check) before minting; document the exact hook (e.g. MintController + ReserveOracle) in the tokenization docs.
## 7. Summary
- **ISO-20022:** CanonicalMessage extended with MsgId, UETR, debtorId, creditorId, purpose, settlementMethod, categoryPurpose. Use in submitInbound/submitOutbound and in events for transfer/mint/burn/cross-chain so that off-chain systems can map to ISO-20022.
- **E-Money:** Par redeemability, safeguarded reserves, no yield on base money, transaction monitoring enforced in ComplianceGuard, TokenRegistry, PolicyManager, ComplianceRegistry, and ReserveOracle as above.
## 8. Related: GRU M1 Listing & Dry-Run
For CMC and CoinGecko listing preparation, dominance simulation, peg stress-tests, and dry-run procedures, see:
- **[GRU M1 Master Implementation Plan](../gru-m1/GRU_M1_MASTER_IMPLEMENTATION_PLAN.md)** — End-to-end listing framework
- **[GRU M1 Listing Dry-Run Runbook](GRU_M1_LISTING_DRY_RUN_RUNBOOK.md)** — Procedural runbook for dry-runs