UPD — Universal Private DollarConcepts

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:

RoleBenefitRisk
Low-ID StabilizerFirst to receive minting demand, earns yield on allocated collateralLast to face redemptions
High-ID StabilizerEarns yield on allocated collateralFirst 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 allocated

The 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:

  1. Liquidator calls liquidate(stabilizerId) with enough UPD to cover the deficit
  2. The deficit UPD is burned
  3. Liquidator receives the Stabilizer's stETH collateral at a discount (incentive for liquidation)
  4. 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.

On this page