Reserves
How Reserves Accumulate
Every time interest accrues on borrows, 10% is directed to the protocol reserve fund. The remaining 90% flows to lenders via increasing vault share value.
Reserve accrual
totalInterest = borrowRate × totalBorrows × timeDelta
reserveIncrease = totalInterest × reserveFactor (10%)
lenderIncrease = totalInterest × (1 - reserveFactor) (90%) What Reserves Protect Against
Bad debt from liquidation shortfalls
If a liquidation doesn't fully cover a borrower's debt (e.g., collateral resolved to $0 before liquidators could act), the shortfall becomes "bad debt." Reserves are consumed first to cover this — lenders are only affected after reserves are depleted.
Oracle failures or market disruption
In edge cases where oracle data is stale or markets are disrupted, positions may become undercollateralized faster than liquidators can respond. The reserve fund provides a buffer during these events.
Protocol operational costs
A portion of reserves may be used for protocol maintenance, oracle costs, and security audits — governed by the protocol's governance framework.
Bad Debt Waterfall
Loss absorption order
1. Liquidation bonus covers partial losses
2. Reserve fund absorbs remaining bad debt
3. If reserves depleted → loss socialized to all lenders (pro-rata)
In practice, steps 1-2 should cover nearly all scenarios.
Socialization is a last resort — it has never been triggered. 💡 Reserve transparency
Reserve balance is visible on-chain and queryable via
readPoolSnapshot() from the SDK. The reserve grows continuously as long as there are active borrows.
Parameters
| Parameter | Value | Governance? |
|---|---|---|
| Reserve Factor | 10% | Yes — adjustable |
| Reserve Floor | None | Accumulates from day 1 |
| Reserve Cap | None | No upper limit |
| Withdrawal | Governance only | Multi-sig controlled |