Skip to content
LogoLogo

Redemptions

Any eUSD holder can redeem, position or not: burn X eUSD and receive exactly $X of eSPY at the oracle price. No fee, no waiting period, works 24/7.

Riskiest-first ordering

Each collateral keeps an onchain doubly-linked list of every position with debt, sorted ascending by nominal ratio (collateral units × 1e18 / debt). The head of the list is the riskiest position; redemptions consume from the head and walk toward safer positions.

Because every position in one collateral shares the same oracle price, the price cancels out of the comparison. The ordering stays valid at any price with no re-sorting on price moves; only actions that change a position's own collateral or debt re-insert it at its correct slot. This is the same SortedTroves pattern Liquity has run on mainnet since 2021.

Loading diagram...

What the redeemed owner experiences

  • Seizure is bounded by the position's debt: at most $1 of collateral leaves per 1 eUSD of debt retired. Equity above the debt is untouchable.
  • The owner's remaining ratio strictly improves (see the worked example on How the peg holds).
  • eUSD the owner previously minted stays valid and fully fungible. A fully-redeemed position keeps its residual collateral.
  • An underwater head position is the one special case: the redeemer takes its collateral, burns only that collateral's value in eUSD, and the unbacked debt residual stays on the owner's books off the sorted list until cleared by repay, close, liquidation, or a collateral top-up.

Per-collateral branches

Redemption is per collateral: the caller passes the collateral address and receives only that token. Riskiest-first ordering applies within one collateral, never across collaterals, so a stressed list for one collateral never blocks redemptions against another. This is the same branch model as Liquity v2.

The hint parameter

Write operations take a hint: the expected list neighbor of the touched position, computed off-chain for free via the findInsertHint view. A correct hint makes insertion O(1); a stale hint walks only the few displaced nodes; a missing hint falls back to a full list walk paid by the caller. The Own front-end computes hints automatically; direct integrators should always supply one.