Overview
The Securitization Workflow enables financial institutions to bundle loans and bonds into structured finance products, create CDM-compliant securitization pools, notarize transactions on the blockchain, and mint ERC-721 tranche tokens for investors. Code Reference:app/services/securitization_service.py, app/api/securitization_routes.py, client/src/apps/securitization/SecuritizationWorkflow.tsx
Key Features
Pool Creation
- Asset Selection: Select loans and bonds from your portfolio
- Pool Configuration: Define pool parameters and structure
- CDM Compliance: All pools are CDM-compliant
- Auto-Generation: Automatic pool structure generation
app/services/securitization_service.py (create_securitization_pool)
Blockchain Notarization
- MetaMask Integration: Multi-party signing with MetaMask
- Smart Contracts: SecuritizationNotarization contract on Base network
- Immutable Records: Blockchain-based transaction records
- CDM Events: Notarization events stored as CDM events
app/services/blockchain_service.py, app/services/notarization_service.py
Tranche Minting
- ERC-721 Tokens: Mint non-fungible tranche tokens
- Tranche Structure: Define seniority, interest rates, payment priority
- Token Metadata: Rich metadata for each tranche
- Investor Distribution: Distribute tokens to investors
contracts/SecuritizationToken.sol, app/services/securitization_service.py
Payment Distribution
- Payment Waterfall: Automated payment distribution
- Priority Rules: Senior tranches paid first
- Smart Contract Routing: SecuritizationPaymentRouter contract
- USDC Payments: Payments in USDC stablecoin on Base network
contracts/SecuritizationPaymentRouter.sol, app/services/securitization_service.py (distribute_payments)
Workflow
1. Create Securitization Pool
- Select Assets: Choose loans/bonds to include in pool
- Configure Pool: Set pool name, description, parameters
- Define Tranches: Create tranche structure (senior, mezzanine, equity)
- Review: Review pool configuration
- Create: Generate CDM-compliant securitization pool
2. Notarize Pool
- Connect Wallets: All parties connect MetaMask wallets
- Review Terms: Review securitization terms
- Sign: Each party signs the notarization
- Submit: Submit signatures to blockchain
- Confirm: Receive blockchain transaction hash
3. Mint Tranche Tokens
- Select Tranche: Choose tranche to mint
- Configure Token: Set token metadata and properties
- Mint: Deploy ERC-721 token contract
- Distribute: Assign tokens to investors
- Track: Monitor token ownership and transfers
4. Process Payments
- Receive Payments: Collect payments from underlying assets
- Calculate Distribution: Apply payment waterfall rules
- Route Payments: Use smart contract for distribution
- Update Records: Update payment history and CDM events
CDM Compliance
Securitization Models
All securitization data uses CDM models:- SecuritizationPool: Pool structure and metadata
- UnderlyingAsset: Assets in the pool
- Tranche: Tranche definitions
- PaymentWaterfall: Payment distribution rules
app/models/cdm.py (SecuritizationPool, UnderlyingAsset, Tranche, PaymentWaterfall)
CDM Events
All securitization actions generate CDM events:- SecuritizationCreation: Pool creation event
- SecuritizationNotarization: Blockchain notarization event
- TrancheMinting: Token minting event
- PaymentDistribution: Payment distribution event
app/models/cdm_events.py (generate_cdm_securitization_creation, generate_cdm_securitization_notarization)
Smart Contracts
SecuritizationNotarization
Location:contracts/SecuritizationNotarization.sol
Notarizes securitization pools on the blockchain with multi-party signatures.
SecuritizationToken (ERC-721)
Location:contracts/SecuritizationToken.sol
Mints non-fungible tranche tokens representing ownership in securitization pools.
SecuritizationPaymentRouter
Location:contracts/SecuritizationPaymentRouter.sol
Routes payments according to waterfall rules defined in the securitization structure.
Code Reference: contracts/ directory
API Endpoints
Create a new securitization pool. List all securitization pools. Get detailed pool information. Notarize a securitization pool on the blockchain. Mint ERC-721 tokens for a tranche. Distribute payments according to waterfall rules. Code Reference:app/api/securitization_routes.py
Configuration
Environment Variables
Base network RPC URL. Mainnet:
https://mainnet.base.org, Sepolia: https://sepolia.base.orgSecuritizationNotarization contract address (auto-deployed if empty)
SecuritizationToken contract address (auto-deployed if empty)
SecuritizationPaymentRouter contract address (auto-deployed if empty)
USDC token address on Base network. Mainnet:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913User Interface
Securitization Workflow
Location:client/src/apps/securitization/SecuritizationWorkflow.tsx
Features:
- Asset Selection Table: Select loans/bonds for pool
- Pool Configuration Panel: Configure pool parameters
- Tranche Structure Editor: Define tranche structure
- Notarization Interface: Multi-party signing interface
- Token Minting Interface: Mint and distribute tokens
- Payment Dashboard: Monitor payment distributions
Best Practices
- Asset Selection: Choose assets with similar risk profiles
- Tranche Structure: Design clear seniority and payment priority
- Documentation: Maintain complete CDM event trail
- Compliance: Ensure regulatory filing requirements are met
- Testing: Test on Base Sepolia testnet (or a local Hardhat node:
npm run nodeandnpm run deploy:localhostincontracts/) before mainnet deployment
Additional Resources
Last Updated: 2026-01-14
Code Reference:
app/services/securitization_service.py, app/api/securitization_routes.py, client/src/apps/securitization/SecuritizationWorkflow.tsx