StabilizerNFT System
How the StabilizerNFT coordinates collateral allocation, mint/burn priority ordering, and liquidations.
StabilizerNFT System
What is a Stabilizer?
A Stabilizer is an NFT representing a collateral position in the UPD system. Each Stabilizer:
- Holds stETH as collateral backing UPD
- Has a priority rank (lower NFT ID = higher priority)
- Controls minting and burning operations
- Can be liquidated if undercollateralized
Think of Stabilizers as collateral vaults with a defined priority order for risk distribution.
Becoming a Stabilizer
Minting a StabilizerNFT is a permissionless action — anyone can become a Stabilizer by depositing stETH collateral and minting an NFT. There are no whitelists, no approval process, and no gatekeeper. The system is designed to be open from day one.
At launch, a founding Stabilizer will seed the system with initial liquidity, giving the ecosystem an anchor to bootstrap from. But the system doesn't depend on any single participant — additional Stabilizers can join at any time, independently and without permission.
The economics of being a Stabilizer:
| Role | Benefit | Risk |
|---|---|---|
| Low-ID Stabilizer | First to receive minting demand, earns yield on allocated collateral | Last to face redemptions |
| High-ID Stabilizer | Earns yield on allocated collateral | First to face redemptions (LIFO burn order) |
Because the burn order is LIFO (last in, first out), later Stabilizers bear more redemption pressure and should price that risk accordingly — either via higher yield expectations or lower position sizes.
Mint Priority
When UPD is minted, the system iterates through Stabilizers from lowest ID to highest:
Mint 1,000 UPD:
Stabilizer #1 has capacity → fill from #1 first
If #1 is full → spill to #2
Continue until full amount is allocatedThe lowest-ID Stabilizer (highest priority) is the first to benefit from new minting.
Burn Priority (LIFO)
When UPD is burned, the system iterates from highest ID to lowest:
Burn 1,000 UPD:
Stabilizer #N has collateral → burn from #N first (last in, first out)
Continue from N-1, N-2...The highest-ID Stabilizer (lowest priority) bears the first redemption risk.
This LIFO ordering creates a natural risk/reward structure:
- Low-ID Stabilizers: Get filled first (more UPD minted against them), first to benefit
- High-ID Stabilizers: Get burned first (more redemption risk), should demand higher yield
Position Escrow
Each Stabilizer's allocated stETH is held in its own PositionEscrow contract:
Stabilizer #1 → PositionEscrow #1 (holds stETH backing #1's UPD)
Stabilizer #2 → PositionEscrow #2
...This isolation ensures that one Stabilizer's insolvency doesn't immediately affect others.
Liquidation
If a Stabilizer's collateral value drops below its UPD liability (< 100% collateralization), it becomes eligible for liquidation:
- Liquidator calls
liquidate(stabilizerId)with enough UPD to cover the deficit - The deficit UPD is burned
- Liquidator receives the Stabilizer's stETH collateral at a discount (incentive for liquidation)
- Stabilizer position is closed
The LinkedListLib maintains Stabilizers in sorted order by collateralization ratio for efficient liquidation discovery.
Unallocated Collateral
Stabilizers also have an StabilizerEscrow for unallocated stETH — collateral deposited but not yet backing any UPD. This allows Stabilizers to:
- Pre-fund before minting demand
- Hold a buffer for emergency use
// Deposit unallocated collateral
await stabilizer.depositCollateral({ stEthAmount })
// Withdraw unallocated collateral
await stabilizer.withdrawCollateral({ stEthAmount })The StabilizerNFT is the entry point for the UPP pool's compliance layer. When the pool mints/burns UPD, it interacts with the StabilizerNFT, not UPDToken directly.