Redemption
The redemption system provides two execution paths based on AssetReserve liquidity availability, ensuring users maintain continuous access to their collateral.
NUSD redemption process flow
Instant Redemption
The primary redemption path, executed when AssetReserve holds sufficient collateral to immediately fulfill requests.
Process FlowInitiation
User calls redeem()
on Router.sol
with parameters:
- NUSD amount to redeem
- Desired collateral asset
- Beneficiary address
Liquidity Verification
- Router queries AssetReserve liquidity status
- Executes
quoteRedemption()
to validate collateral availability - Routes to appropriate Redeemer contract upon confirmation
Valuation & Calculation
The Redeemer contract performs:
- Fair market value determination for NUSD-to-collateral conversion
- Output calculation considering:
- Slippage protection:
order.collateralAmount
as minimum output - Rate limiting: Enforces
maxRedeemPerBlock
constraints
- Slippage protection:
NUSD Burning
- Redeemer executes
burn()
onNUSD.sol
contract - User's NUSD removed from total supply
- Transaction atomically reduces circulating NUSD
Collateral Release
- Router calls
processRedemption()
on AssetReserve - Collateral transfers to beneficiary address
Queued Redemption
Alternative path activated when requested collateral temporarily exceeds available AssetReserve liquidity.
Process FlowInitiation & Liquidity Assessment
- User initiates standard redemption via
Router.sol
- Router detects insufficient collateral for immediate execution
Request Queuing
- User's NUSD transferred to Router contract for custody
- Router generates redemption Order with:
- Unique request ID (auto-incremented)
- Status:
PENDING
- Storage in
redemptionRequests
mapping
Keeper Monitoring
Authorized keepers (REDEMPTION_KEEPER_ROLE) monitor and execute:
- Track AssetReserve liquidity replenishment
- Identify serviceable pending requests
- Call
serveRedemptionRequest()
with request ID
Deferred Execution
Upon keeper activation:
- Router retrieves queued Order details
- Executes standard redemption flow using custodied NUSD
- Redeemer performs oracle valuation and burning
- AssetReserve releases collateral to original beneficiary
- Updates request status to
COMPLETED
System Guarantees
This dual-path architecture ensures:
- Liquidity Efficiency: Instant redemptions when possible
- Redemption Certainty: Queued system guarantees eventual execution
- Transparency: All pending requests tracked onchain
- Protocol Stability: Rate limits prevent liquidity runs
The system prioritizes user experience while maintaining protocol solvency, creating a robust redemption infrastructure that adapts to varying liquidity conditions.