Interest rates
A two-slope curve, and why it bends where it does.
The borrow rate is a function of utilisation — how much of the supplied USDG is currently borrowed.
utilisation = totalBorrowAssets / totalSupplyAssetsThe curve
Two slopes meeting at a kink. Live testnet values:
| Base rate, at 0% utilisation | 0.5% |
| Rate at the kink | 8% |
| Kink (optimal utilisation) | 80% |
| Max rate | 100% |
| Max utilisation | 90% |
Below the kink the rate climbs gently from 0.5% to 8%. Above it, the curve turns sharply: from 8% at 80% utilisation to 100% at 90%, and flat at 100% beyond that.
Why the bend
A lending market has one lever to keep withdrawals possible, and it is price. Below the kink there is plenty of idle liquidity and no reason to discourage borrowing. Above it, every additional borrow eats into the buffer that lets lenders exit — so the rate rises fast enough that borrowers repay and suppliers arrive.
The steepness is not a fee. It is the mechanism that makes the pool self-correcting without anyone intervening.
What lenders receive
supply rate = borrow rate × utilisation × (1 − reserve factor)Two things follow. A high borrow rate at low utilisation earns lenders little, because few borrowers are paying it. And the reserve factor is a real deduction — reading it as zero when it is not overstates the supply APY.
Accrual
Interest accrues into the debt continuously, and is written to storage when accrueInterest() is
called — which happens automatically on supply, borrow, repay and withdraw. There is no separate
action to take and no compounding schedule to track.
Rates are per market
The curve is configured per market on the interest rate model, keyed by the market's router address. All three markets currently share the same numbers, but nothing requires that — a riskier market can be given a steeper curve independently.