Skip to main content

Redemption

Any RD holder can exchange RD for collateral at $1 of value per RD (par, normally exactly $1.00), less a small fee. This is the mechanism that puts a price floor under RD.

The mental model

You give the protocol some RD. It burns that RD against the debt of one or more borrowers, gives you their collateral at the oracle price, and charges you a small fee. The borrowers end up with less debt and less collateral but a roughly unchanged ICR.

If you're an arbitrageur and RD is trading below par on a DEX, you buy cheap RD, redeem at par, sell the collateral, and pocket the spread, pushing RD's market price back up. That's the floor.

When you can redeem

  • After the bootstrap period. Redemption is disabled for the first 14 days after deployment. The system needs that time to settle.
  • When there is redeemable supply. The protocol enforces a redemption "quota" that refills over time. If a lot of redemption has already happened recently, you may need to wait a bit before more is available. You can read live capacity from Aggregator.redemptionQuotaAvailable().
  • When at least one branch has unshielded debt. Redemption walks the unshielded book first, by branch. If every branch has only shielded troves left, normal-mode redemption is exhausted (and you'd be looking at shutdown-mode redemption, see Shutdown redemption).

What "at par" means

For every 1 RD you redeem, you receive collateral worth 1 × par USD at the current oracle price, minus the redemption fee. Examples (par = $1.00, ETH = $3,000):

  • Redeem 3,000 RD with a 0.5% fee → you get (3000 × $1.00) / $3,000 = 1.00 ETH of value at par, then pay 0.5% in collateral fee, ending up with 0.995 ETH.
  • Redeem 3,000 RD with a 2.5% fee → you get 0.975 ETH.

The redemption fee is per-branch and falls in the range 0.5% to 2.5%. The fee is denominated in collateral and is retained by the redeemed trove as residual collateral. Mechanically, a redemption removes the full gross collateral from the trove's accounting and burns the matching debt; only the net-of-fee amount actually leaves the trove, so the fee portion stays inside and increases the trove's post-redemption ICR. The fee does not flow to FEE stakers (see Fees).

How cross-branch redemption works

You call one function on the top-level Aggregator:

Aggregator.redeemCollateral(
uint256 _RDamount,
address[] _firstRedemptionHint, // per branch
address[] _upperPartialRedemptionHint, // per branch
address[] _lowerPartialRedemptionHint, // per branch
uint256[] _partialRedemptionHintNICR, // per branch
uint256 _maxIterations // gas cap
)

The Aggregator splits your RD across all active (non-shutdown) branches in proportion to each branch's unshielded-debt EMA. So you receive a basket of collateral, not just one token. A branch with 50% of the system's unshielded debt gets 50% of your redemption flow; a branch with 5% gets 5%.

Inside each branch, redemption claims collateral from the lowest-ICR unshielded troves first and works upward. Below-MCR troves and dust ("mini-dwarf") troves are skipped automatically. Shielded troves are not touched in normal mode; only branch shutdown can route redemption through the shielded book.

A revert in one branch reverts the entire redemption transaction. If you're scripting redemptions, account for this.

Hints

Each branch needs three hints to reinsert any partially-redeemed trove cheaply:

  • _firstRedemptionHint[i], the first trove the redemption walk should consider on branch i.
  • _upperPartialRedemptionHint[i] and _lowerPartialRedemptionHint[i] are where in the branch the partially-redeemed trove should be reinserted after the walk.
  • _partialRedemptionHintNICR[i], the expected NICR of that trove after the walk.

If hints are wrong, the walk degrades to O(n) on that branch (more gas, same result). The GlobalHintHelper contract computes hints off-chain-style for callers. Most front ends and aggregator integrations will compute these for you.

What it costs

  • The redemption fee, in collateral. 0.5%–2.5% per branch, paid out of the collateral you receive.
  • Gas. Each branch walk is O(troves walked). _maxIterations is a per-branch cap. Cross-branch redemption is generally more gas-intensive than a Liquity v1 redemption was.

There is no upfront RD fee, every RD you send is credited against borrower debt at par. The fee comes out of the collateral leg.

What it does not cost

  • Slippage in the usual sense. You're not trading on an AMM; you're calling the protocol's redeemCollateral. The price you get is the oracle price, not a curve-derived price.
  • Front-running risk on the trade itself. Once your tx lands, you get par-rate collateral; no one can "front-run the AMM" to give you a worse price. The risk is that someone else's redemption tx lands first and consumes more of the quota or the lowest-ICR troves.

What the redeemed borrower experiences

Their trove ends up with less debt and less collateral, in proportions that keep their ICR roughly the same. They're not "liquidated", that's a different path. See The shield for how borrowers can opt out.

Shutdown redemption

When a branch is shut down (or the whole system is), redemption switches to a different pricing schedule. See Shutdown redemption.

Deep dive

Redemption mechanism covers the full per-branch walk, basket weights, hint construction, shielded vs unshielded, and bad-debt-sink branch handling.