Concept
The x/depository module manages the lifecycle of Global Notes and their associated Participation Tokens (PTs). It enables the issuance, transfer control, and surrender of tokenized securities backed by notarised assets from the x/notary module.
Overview
The x/depository module enables:
- Platform administrators to register depositories that serve as custodians for Global Notes
- Depository owners to authorise SPV (Special Purpose Vehicle) issuers
- SPV issuers to issue Global Notes linked to notarised assets and mint corresponding PT tokens
- Control over PT token transferability (pause/unpause)
- Surrender of Global Notes at maturity, burning all associated PT tokens
The sequence of events is as follows:
How It Works
The x/depository module integrates with x/bank for token operations and x/notary for asset verification:
Platform Admin → RegisterDepository → Depository Created
↓
Depository Owner → AddAuthorizedIssuer → SPV Authorized
↓
SPV Issuer → IssuePTWithGlobalNote → GlobalNote + PT Tokens Minted
↓
PT Tokens Distributed to Holders
↓
SPV Issuer → SurrenderGlobalNote → PT Tokens Burned + Holdings Recorded
Key Components
Depository
A depository represents a custodian entity that holds Global Notes. Each depository has:
- Owner: Can manage authorised issuers and update depository parameters
- Pauser: Can pause/unpause the depository operations
- Region: Geographic identifier for regulatory compliance
Global Note
A Global Note represents tokenized securities and contains:
- ISIN: International Securities Identification Number (unique identifier)
- Depository ID: The custodian depository
- SPV Issuer: The authorised issuer address
- Global Note Hash: Hash of the underlying asset data
- Total Supply: Number of PT tokens representing the note
- Asset Type ID: Links to x/notary asset type
- Notarised Asset ID: Links to the notarised asset in x/notary
Participation Tokens (PT)
PTs are fungible tokens representing fractional ownership of a Global Note:
- Minted when a Global Note is issued
- Transferable via x/bank (unless paused)
- Burned when the Global Note is surrendered
Transfer Controls
The module implements transfer controls via bank hooks:
- PT Transferability: Each ISIN can have transfers paused/unpaused
- Before Send Hook: Validates transfers aren't blocked before execution
- Native Token Bypass: Native chain tokens bypass these controls
Integration with x/notary
Global Notes are linked to notarised assets:
asset_type_id: Identifies the type of underlying assetnotarised_asset_id: References a specific notarised asset
This ensures that PT tokens are always backed by verified, on-chain asset data.
Key Design Points
- Hierarchical Authorization: Platform Admin → Depository Owner → SPV Issuer
- Asset-Backed Tokens: All PTs are linked to notarised assets via x/notary
- Pausable Operations: Both depositories and individual PT transfers can be paused
- Complete Surrender: Global Note surrender collects and burns all outstanding PTs
- Holder Tracking: Final PT holder balances are recorded at surrender for off-chain settlement
- Versioning of GlobalNote: All the GlobalNotes have the hashchain that proves that the sequence of updates.