9.3 KiB
9.3 KiB
SSU Mint Burn Flow
Overview
The Synthetic Settlement Unit (SSU) is a stabilized cross-border settlement asset with composition: 40% currency, 30% commodity, 20% CBDC, 10% LAM. This flow documents the minting and burning processes, including composition calculation and liquidity verification.
Prerequisites
- SSU exists or can be created (default SSU)
- Sufficient liquidity in underlying assets (for minting)
- Valid mint/burn request
- SSU service operational
- Composition service available
Visual Flow Diagram
Minting Flow
┌─────────────┐
│ Mint Request│
└──────┬──────┘
│
│ 1. Get/Create SSU
▼
┌─────────────────────────┐
│ Get or Create Default │
│ SSU │
│ - Lookup active SSU │
│ - Create if not exists │
└──────┬──────────────────┘
│
│ 2. Verify Liquidity
▼
┌─────────────────────────┐
│ Verify Liquidity for │
│ Minting │
│ - Check underlying │
│ - Verify sufficient │
└──────┬──────────────────┘
│
│ 3. Calculate Composition
▼
┌─────────────────────────┐
│ Calculate SSU │
│ Composition │
│ - 40% currency │
│ - 30% commodity │
│ - 20% CBDC │
│ - 10% LAM │
└──────┬──────────────────┘
│
│ 4. Create Transaction
▼
┌─────────────────────────┐
│ Create Mint Transaction │
│ - Transaction ID │
│ - Amount │
│ - Type: mint │
└──────┬──────────────────┘
│
│ 5. Complete
▼
┌─────────────┐
│ SSU Minted │
└─────────────┘
Burning Flow
┌─────────────┐
│ Burn Request│
└──────┬──────┘
│
│ 1. Verify SSU
▼
┌─────────────────────────┐
│ Verify SSU Exists │
│ - Lookup SSU by ID │
│ - Check status: active │
└──────┬──────────────────┘
│
│ 2. Create Transaction
▼
┌─────────────────────────┐
│ Create Burn Transaction │
│ - Transaction ID │
│ - Amount │
│ - Type: burn │
└──────┬──────────────────┘
│
│ 3. Complete
▼
┌─────────────┐
│ SSU Burned │
└─────────────┘
Step-by-Step Process
Minting Process
Step 1: Get or Create Default SSU
- Receive mint request with:
- Amount to mint
- Trigger bank ID (optional)
- Transaction ID (optional)
- Lookup default SSU:
- Search for SSU with name: "DBIS Global SSU"
- Filter by status:
active
- If SSU doesn't exist:
- Generate SSU ID:
SSU-{uuid} - Create SSU record:
- SSU ID
- SSU name: "DBIS Global SSU"
- Description: "DBIS Synthetic Settlement Unit - Global settlement asset"
- Underlying assets: empty array (initialized later)
- Status:
active
- Initialize composition via composition service
- Generate SSU ID:
- Return SSU (existing or newly created)
Code Reference: src/core/settlement/ssu/ssu-service.ts:46-208
Step 2: Verify Liquidity for Minting
- Validate mint amount:
- Convert to Decimal
- Verify:
amount > 0 - If invalid, throw error: "Mint amount must be greater than zero"
- Verify underlying asset liquidity:
- In production: check liquidity pools for:
- 40% currency reserves
- 30% commodity reserves
- 20% CBDC reserves
- 10% LAM reserves
- Currently: assume liquidity available (simplified)
- In production: check liquidity pools for:
- If insufficient liquidity, throw error
Code Reference: src/core/settlement/ssu/ssu-service.ts:213-221
Step 3: Calculate Composition
- Call composition service to calculate current composition:
- Pass SSU ID
- Service calculates based on:
- Current market values
- Reserve availability
- Target composition ratios
- Composition service returns:
- Currency percentage: 40%
- Commodity percentage: 30%
- CBDC percentage: 20%
- LAM percentage: 10%
- Store composition for this mint operation
Code Reference: src/core/settlement/ssu/ssu-composition.service.ts
Step 4: Create Mint Transaction
- Call SSU transaction service to create transaction:
- SSU ID
- Transaction type:
mint - Amount: mint amount
- Source bank ID: trigger bank ID (if provided)
- Settlement ID: transaction ID (if provided)
- Transaction service creates:
- Transaction ID
- Transaction record
- Links to SSU
- Update SSU balance (if tracked):
- In production: increment SSU total supply
- Currently: simplified (balance tracking)
- Return transaction ID
Code Reference: src/core/settlement/ssu/ssu-service.ts:57-68
Burning Process
Step 1: Verify SSU Exists
- Receive burn request with:
- SSU ID
- Amount to burn
- Reason (optional)
- Lookup SSU by ID
- Verify SSU exists and status is
active - If not found or inactive, throw error: "SSU not found or not active"
Code Reference: src/core/settlement/ssu/ssu-service.ts:74-94
Step 2: Create Burn Transaction
- Call SSU transaction service to create transaction:
- SSU ID
- Transaction type:
burn - Amount: burn amount
- Transaction service creates:
- Transaction ID
- Transaction record
- Links to SSU
- Update SSU balance (if tracked):
- In production: decrement SSU total supply
- Currently: simplified (balance tracking)
- Return transaction ID
Code Reference: src/core/settlement/ssu/ssu-service.ts:84-93
Error Handling
Error: SSU Not Found
- Detection: SSU lookup returns null
- Action: Throw error "SSU not found or not active"
- Recovery: Verify SSU ID, create SSU if needed
Error: SSU Inactive
- Detection: SSU status is not
active - Action: Throw error "SSU not found or not active"
- Recovery: Activate SSU, retry
Error: Invalid Mint Amount
- Detection: Amount <= 0
- Action: Throw error "Mint amount must be greater than zero"
- Recovery: Correct amount, retry
Error: Insufficient Liquidity
- Detection: Underlying assets don't have sufficient liquidity
- Action: Throw error, prevent minting
- Recovery: Add liquidity to pools, retry
Error: Composition Calculation Failure
- Detection: Composition service returns error
- Action: Throw error, prevent minting
- Recovery: Verify composition service, retry
Integration Points
Related Services
- SSU Service:
src/core/settlement/ssu/ssu-service.ts - SSU Composition Service:
src/core/settlement/ssu/ssu-composition.service.ts - SSU Transaction Service:
src/core/settlement/ssu/ssu-transaction.service.ts - Liquidity Services: GLP, ID-SLG for liquidity verification
API Endpoints
POST /api/v1/ssu/mint- Mint SSUPOST /api/v1/ssu/burn- Burn SSUGET /api/v1/ssu/:ssuId- Get SSU detailsGET /api/v1/ssu- List active SSUs
Database Models
SyntheticSettlementUnit- SSU recordsSsuTransaction- SSU transaction recordsSsuComposition- Composition records
Performance Metrics
- SSU Lookup/Creation: < 10ms target
- Liquidity Verification: < 20ms target
- Composition Calculation: < 30ms target
- Transaction Creation: < 10ms target
- Total End-to-End: < 70ms target
- Throughput: 5,000+ operations/second
- Availability: 99.99% uptime target
Security Considerations
SSU Validation
- Only active SSUs can be used
- SSU ID verification prevents unauthorized access
Liquidity Verification
- Ensures underlying assets available
- Prevents over-minting
- Maintains composition ratios
Transaction Tracking
- All mint/burn operations logged
- Transaction IDs provide audit trail
- Links to source transactions
Testing Scenarios
Happy Path - Minting
- Valid mint request
- SSU exists or created
- Sufficient liquidity
- Composition calculated
- Transaction created
- SSU minted
Happy Path - Burning
- Valid burn request
- SSU exists and active
- Transaction created
- SSU burned
Error Scenarios
- SSU not found
- SSU inactive
- Invalid mint amount
- Insufficient liquidity
- Composition calculation failure
Edge Cases
- Maximum mint amount
- Minimum mint amount
- Mint with zero amount (should fail)
- Burn more than available
- Concurrent mint/burn operations
Related Flows: