# Compliance Architecture Explanation

**Date**: 2025-12-24  
**Purpose**: Clarify the distinction between different compliance systems

---

## 🔍 Two Types of Compliance

### 1. Legal Compliance (NEW - For Travel Rules Exemption)

**Purpose**: Ensure contracts meet legal requirements and are exempt from Travel Rules

**Location**: `contracts/compliance/LegallyCompliantBase.sol` and `contracts/compliance/ComplianceRegistry.sol`

**Features**:
- ✅ Hague Conventions compliance
- ✅ ISO standards compliance
- ✅ ICC compliance
- ✅ Travel Rules exemption
- ✅ Regulatory compliance exemption
- ✅ Instrument of Value Transfer classification

**Key Point**: **NO KYC/AML** - This is for exemption, not compliance enforcement

---

### 2. eMoney Compliance Registry (EXISTING - For Policy Enforcement)

**Purpose**: Enforce compliance policies in eMoney system (KYC/AML, freezing, risk tiers)

**Location**: `contracts/emoney/ComplianceRegistry.sol`

**Features**:
- Account allowed/frozen status
- Risk tier management
- Jurisdiction tracking
- Policy enforcement

**Key Point**: This has **KYC/AML features** which are NOT compatible with Travel Rules exemption

---

## ⚠️ Important Distinction

### For Travel Rules Exemption

**USE**: `contracts/compliance/LegallyCompliantBase.sol` and `contracts/compliance/ComplianceRegistry.sol`

**DO NOT USE**: `contracts/emoney/ComplianceRegistry.sol` for Travel Rules exempt contracts

**Reason**: The eMoney ComplianceRegistry has KYC/AML features (allowed, frozen, riskTier) which would trigger Travel Rules requirements.

---

## 🎯 Implementation Strategy

### For Value Transfer Tokens (USDT, USDC, etc.)

**Use**: `LegallyCompliantBase` + Legal Compliance Registry

**Design**:
- No KYC/AML requirements
- No account freezing
- No risk tier management
- Pure value transfer
- Private peer-to-peer

### For eMoney System

**Use**: Existing eMoney ComplianceRegistry (if needed for policy enforcement)

**Note**: If eMoney tokens need Travel Rules exemption, they should NOT use the KYC/AML features of the eMoney ComplianceRegistry, or should have an opt-out mechanism.

---

## 📋 Contract Classification

### Travel Rules Exempt Contracts

These contracts should use `LegallyCompliantBase`:
- ✅ CompliantUSDT
- ✅ CompliantUSDC
- ✅ Governance Token (if exempt)
- ✅ Bridge contracts (if exempt)
- ✅ Any private value transfer instrument

### Policy-Enforced Contracts

These contracts may use eMoney ComplianceRegistry:
- ⚠️ eMoneyToken (if policy enforcement needed)
- ⚠️ ISO20022Router (if compliance checks needed)

**Note**: If these need Travel Rules exemption, they should NOT enforce KYC/AML policies.

---

## 🔧 Migration Path

### Option 1: Separate Systems (Recommended)

- **Value Transfer Tokens**: Use `LegallyCompliantBase` + Legal Compliance Registry
- **eMoney System**: Use existing eMoney ComplianceRegistry (if policy enforcement needed)
- **Clear separation**: No mixing of systems

### Option 2: Unified System (If Needed)

- Create unified compliance system that supports both:
  - Legal compliance (for exemption)
  - Optional policy enforcement (if not exempt)
- More complex but allows flexibility

---

## ✅ Recommended Approach

**For Travel Rules Exemption**:
1. Use `LegallyCompliantBase` for all value transfer contracts
2. Use Legal Compliance Registry for tracking
3. **DO NOT** implement KYC/AML features
4. **DO NOT** use eMoney ComplianceRegistry for exempt contracts

**For eMoney System**:
1. If Travel Rules exemption needed: Do NOT use KYC/AML features
2. If policy enforcement needed: Use eMoney ComplianceRegistry but understand it may affect exemption status
3. Consider separate eMoney tokens for exempt vs. non-exempt use cases

---

**Last Updated**: 2025-12-24

