Interest Rate Model

The interest rate for each market is determined dynamically, purely based on supply and demand of that market. Interest is calculated and accrued on a per-block basis, with an average of ~1.25s mainnet blocktime and ~0.8s testnet blocktime as of June 2023.

Interest Rate Model for {Flow, stFlow, BLT, USDC, FUSD} markets








Users will be charged interests for borrowing fungible token assets. The borrow interest rate is algorithmically-set based on supply and demand of the asset - which is reflected by the asset pool utilization rate.

Utilization Rate

poolUtilizationRate=poolBorrowspoolBorrows+poolCashāˆ’poolReservepoolUtilizationRate = \frac{poolBorrows}{poolBorrows + poolCash - poolReserve}

Borrow Interest Rate

A critical point (80%) exists in the borrow interest rate model:

  • When utilization rate is below the critical point, a flatter slope is applied

  • Once utilization rate exceeds the critical point, the slope becomes much steeper - This incentives borrowers to pay back the borrowed assets while at the same also incentives suppliers to deposit assets to earn a high APR.

borrowInterestRate=\left\{ \begin{array}{ll} baseRate\ +\ baseSlope\cdot utilRate, & \mbox{utilRate$<criticalPoint$}\\ jumpSlope\cdot\left(utilRate-criticalPoint\right)+criticalRate, & \mbox{utilRate$\ge criticalPoint$} \end{array} \right.

Supply Interest Rate

Supply interest rate is inferred from borrow interest rate after deducting the fraction goes to the pool reserve:

supplyInterestRate=(1āˆ’reserveFactor)ā‹…utilRateā‹…borrowInterestRate supplyInterestRate = (1 - reserveFactor) \cdot utilRate \cdot borrowInterestRate


Each asset pool maintains a FungibleToken Vault as pool reserve, whose balance comes from a fraction of generated interests, determined by reserveFactor. Reserve serves the purpose of incentivization and risk mitigation, such as protection against smart contracts exploits, oracle attacks, emergency shutdown, etc.

Last updated