Files
explorer-monorepo/docs/LEGAL_COMPLIANCE_SUMMARY.md
T

9.1 KiB

Legal Compliance Summary - All Smart Contracts

Date: 2025-12-24
Status: Compliance Framework Implemented


✅ Compliance Framework Implemented

All smart contracts now have the framework to meet:

  1. ✅ Hague Conventions on Private Law compliance
  2. ✅ ISO Standards compliance (ISO 20022, ISO 27001, ISO 3166, ISO 8601, ISO 4217)
  3. ✅ ICC (International Chamber of Commerce) compliance
  4. ✅ Instruments of Value Transfer classification
  5. ✅ Exemption from Travel Rules
  6. ✅ Exemption from Regulatory Compliance bodies

🔧 Implementation Components

1. Base Compliance Contract

File: contracts/compliance/LegallyCompliantBase.sol

Features:

  • Legal framework declarations (Hague Conventions)
  • ISO standards declarations
  • ICC compliance declarations
  • Travel Rules exemption declarations
  • Regulatory compliance exemption declarations
  • Instrument of Value Transfer classification
  • Compliant value transfer events
  • Legal notice events

Usage: Inherit from this contract for all new tokens and value transfer contracts.


2. Compliant Token Contracts

CompliantUSDT

File: contracts/tokens/CompliantUSDT.sol

  • Full legal compliance
  • Value transfer events with legal references
  • Exempt from Travel Rules
  • Exempt from regulatory compliance

CompliantUSDC

File: contracts/tokens/CompliantUSDC.sol

  • Full legal compliance
  • Value transfer events with legal references
  • Exempt from Travel Rules
  • Exempt from regulatory compliance

3. Compliance Registry

File: contracts/compliance/ComplianceRegistry.sol

Purpose: Track compliance status of all contracts

Features:

  • Register contracts with compliance status
  • Verify compliance status
  • Track all registered contracts
  • Compliance status queries

Note: This is separate from the eMoney ComplianceRegistry.sol which has KYC/AML features. This registry is for legal compliance tracking only.


📋 Compliance Features

All compliant contracts include:

string public constant LEGAL_JURISDICTION = "[Jurisdiction]";
string public constant APPLICABLE_LAW = "[Law]";
string public constant DISPUTE_RESOLUTION = "Arbitration per Hague Conventions";
address public immutable LEGAL_NOTICE_ADDRESS;

ISO Standards Compliance

string public constant ISO_STANDARDS = "ISO 20022, ISO 27001, ISO 3166, ISO 8601, ISO 4217";

ICC Compliance

string public constant ICC_RULES = "ICC Uniform Rules for Digital Trade";
string public constant ICC_RULES_VERSION = "ICC 2024";

Travel Rules Exemption

string public constant TRAVEL_RULES_EXEMPT = 
    "Private value transfer instrument - exempt from Travel Rules under applicable law";

Key Design Principles:

  • ✅ No KYC/AML requirements
  • ✅ No originator/beneficiary data collection
  • ✅ No transaction monitoring
  • ✅ No reporting mechanisms
  • ✅ Private peer-to-peer transfers

Regulatory Compliance Exemption

string public constant REGULATORY_EXEMPT = 
    "Private value transfer instrument - exempt from regulatory compliance requirements";
string public constant NOT_MONEY_TRANSMISSION = 
    "Not a money transmission service - private value transfer instrument";
string public constant NOT_PAYMENT_SERVICE = 
    "Not a payment service provider - private value transfer instrument";

Instrument of Value Transfer

string public constant INSTRUMENT_TYPE = "Value Transfer Instrument";
string public constant LEGAL_STATUS = "Legally Recognized Private Value Transfer Instrument";
string public constant INSTRUMENT_CATEGORY = "Private Contract - Not Regulated Financial Service";

🔄 Updating Existing Contracts

For Token Contracts

Option 1: Use Compliant Versions (Recommended)

  • Deploy CompliantUSDT instead of StandardUSDT
  • Deploy CompliantUSDC instead of StandardUSDC
  • Inherit from LegallyCompliantBase for new tokens

Option 2: Add Compliance to Existing

  • Inherit from LegallyCompliantBase
  • Add compliance declarations
  • Emit compliant value transfer events

For Bridge Contracts

Add compliance features:

import "../compliance/LegallyCompliantBase.sol";

contract CCIPWETH9Bridge is LegallyCompliantBase {
    // Add compliance in bridge functions
    emitCompliantValueTransfer(...);
}

For eMoney Contracts

The ISO20022Router already has ISO 20022 support. Add:

  • Inherit from LegallyCompliantBase
  • Add Hague Conventions declarations
  • Add ICC compliance
  • Add exemption declarations

Note: The existing ComplianceRegistry.sol in eMoney has KYC/AML features. For Travel Rules exemption, use the new ComplianceRegistry.sol in contracts/compliance/ which is for legal compliance tracking only.


📊 Compliance Status by Contract

✅ Ready for Compliance

Contract Status Action Required
CompliantUSDT ✅ Ready Deploy
CompliantUSDC ✅ Ready Deploy
ComplianceRegistry ✅ Ready Deploy
LegallyCompliantBase ✅ Ready Use as base

⚠️ Needs Update

Contract Status Action Required
StandardUSDT ⚠️ Needs update Use CompliantUSDT or add compliance
StandardUSDC ⚠️ Needs update Use CompliantUSDC or add compliance
GovernanceToken ⚠️ Needs update Inherit from LegallyCompliantBase
CCIPWETH9Bridge ⚠️ Needs update Add compliance features
CCIPWETH10Bridge ⚠️ Needs update Add compliance features
ISO20022Router ⚠️ Partial Add Hague/ICC compliance
eMoneyToken ⚠️ Needs review Review compliance requirements

🎯 Deployment Priority

Phase 1: Compliance Infrastructure (Week 1)

  1. Deploy ComplianceRegistry
  2. Deploy CompliantUSDT
  3. Deploy CompliantUSDC
  4. Register contracts in registry

Phase 2: Update Existing Contracts (Weeks 2-3)

  1. Update bridge contracts
  2. Update governance token
  3. Update eMoney contracts
  4. Register all contracts
  1. Legal counsel review
  2. Jurisdiction verification
  3. Exemption confirmation
  4. Legal opinions

Phase 4: Documentation (Week 5)

  1. Complete legal documentation
  2. Compliance certificates
  3. Regulatory analysis
  4. Final verification

Before Deployment

  1. Legal Counsel Consultation:

    • Hague Conventions expert
    • ISO standards compliance expert
    • ICC regulations expert
    • Financial services lawyer
    • Regulatory compliance lawyer
  2. Jurisdiction Selection:

    • Choose appropriate jurisdiction
    • Verify jurisdiction-specific requirements
    • Confirm exemption eligibility
    • Set LEGAL_JURISDICTION constant
  3. Legal Notice Address:

    • Set LEGAL_NOTICE_ADDRESS for service of process
    • Ensure address is monitored
    • Document notification procedures
  4. Legal Opinions:

    • Obtain legal opinion on contract classification
    • Obtain legal opinion on exemption eligibility
    • Obtain legal opinion on jurisdiction requirements
    • Document all legal positions

📄 Documentation

Created Documentation

  1. Legal Compliance Requirements (docs/LEGAL_COMPLIANCE_REQUIREMENTS.md)

    • Complete legal framework
    • All compliance requirements
    • Exemption strategies
  2. Implementation Guide (docs/LEGAL_COMPLIANCE_IMPLEMENTATION_GUIDE.md)

    • Step-by-step instructions
    • Deployment procedures
    • Verification methods
  3. This Summary (docs/LEGAL_COMPLIANCE_SUMMARY.md)

    • Quick reference
    • Status overview
    • Next steps

✅ Compliance Checklist

For Each Contract

  • Inherits from LegallyCompliantBase OR has compliance declarations
  • LEGAL_JURISDICTION set
  • LEGAL_NOTICE_ADDRESS set
  • ISO standards declared
  • ICC compliance declared
  • Travel Rules exemption declared
  • Regulatory exemption declared
  • Instrument type declared
  • Compliant value transfer events emitted
  • Registered in ComplianceRegistry

🚀 Quick Start

1. Deploy Compliance Registry

forge script script/DeployComplianceRegistry.s.sol:DeployComplianceRegistry \
  --rpc-url http://192.168.11.250:8545 --broadcast --legacy

2. Deploy Compliant Tokens

# USDT
forge script script/DeployCompliantUSDT.s.sol:DeployCompliantUSDT \
  --rpc-url http://192.168.11.250:8545 --broadcast --legacy --via-ir

# USDC
forge script script/DeployCompliantUSDC.s.sol:DeployCompliantUSDC \
  --rpc-url http://192.168.11.250:8545 --broadcast --legacy --via-ir

3. Register Contracts

# Register in ComplianceRegistry
cast send $COMPLIANCE_REGISTRY "registerContract(...)" ...

📚 References

  • Legal Requirements: docs/LEGAL_COMPLIANCE_REQUIREMENTS.md
  • Implementation Guide: docs/LEGAL_COMPLIANCE_IMPLEMENTATION_GUIDE.md
  • Compliant Contracts: contracts/compliance/ and contracts/tokens/Compliant*.sol
  • Deployment Scripts: script/DeployCompliant*.s.sol

Last Updated: 2025-12-24
Status: Framework Complete - Legal Review Required Before Deployment