Liquidations
- Trigger — health factor drops below 1.0
- Permissionless — anyone can execute a liquidation (no allowlists)
- Partial liquidation — only enough collateral is seized to restore health
- Liquidation bonus — 5-15% incentive for liquidators, scales with urgency
When Liquidation Happens
A position becomes liquidatable when its health factor drops below 1.0. This can happen because collateral lost value (PM share price declined), the market is approaching resolution (early-closure decay), or debt grew from accrued interest.
healthFactor = Σ(positionValue × liquidationThreshold) / totalDebt
if healthFactor < 1.0:
→ Position is liquidatable
→ Anyone can call liquidate(borrower, tokenId, amount) Liquidation Bonus
Liquidators receive a bonus on the collateral they seize — more than the debt they repay. The bonus scales with the severity of undercollateralization.
| Health Factor | Bonus | Rationale |
|---|---|---|
| ~1.0 (just liquidatable) | ~5% | Minimal incentive, low risk |
| ~0.9 | ~10% | Moderate urgency |
| ≤ 0.8 | ~15% | High urgency, max incentive |
Liquidation Flow
1. Liquidator identifies unhealthy position (HF < 1.0)
2. Liquidator calls liquidate(borrower, tokenId, debtToCover)
3. Contract verifies: HF < 1.0, oracle is fresh, amount is valid
4. Debt is reduced: borrower's scaled debt decreases
5. Collateral seized: ERC-1155 positions transferred to liquidator
6. Bonus applied: liquidator receives collateral worth debtCovered × (1 + bonus)
7. Pool repaid: stablecoins flow from liquidator → VarlaPool For Borrowers
For Liquidators
readAccountSnapshot() SDK helper for positions approaching HF 1.0. The bonus makes liquidation profitable when accounting for gas costs.
Partial vs Full Liquidation
Liquidation aims to restore you to a target health factor (default 1.05) rather than wiping you out entirely. Only enough collateral is seized to bring your HF back to the target.
However, full liquidation may occur when:
| Condition | What happens |
|---|---|
| Severely underwater | Collateral value is so low that partial liquidation can't restore HF to the target |
| Dust debt remaining | Partial liquidation would leave a tiny remaining debt not worth the gas to manage |
| Single-position collateral | Only one position to seize, and partial seizure isn't enough |
Why Liquidation Can Be Delayed
Liquidation has stricter oracle rules than normal borrowing to protect borrowers from unfair liquidation during oracle outages:
| Rule | Detail |
|---|---|
| Stale price blocks liquidation | If any non-zero collateral has an unavailable price, liquidation is blocked entirely |
| Grace period after recovery | After oracle comes back online, there's a default 5-minute grace period before liquidation is allowed |
This means your position is protected during oracle outages — even though your HF might calculate below 1.0 temporarily, no one can act on it until prices are fresh. See Oracle System for details.
Bad Debt
If collateral value drops below outstanding debt (e.g., a PM position resolves to $0), the remaining shortfall becomes bad debt. This is absorbed first by the protocol reserve fund, then socialized to lenders only as a last resort.