Docs
  • 💫Overview
    • 📖Introducing Cluster
    • 🔮Vision
  • ⚙️Architecture
    • 💧Liquidity Vaults (Markets)
    • 🪐Dimensions
    • 💥Singularity
      • 🔄Treasury swaps
      • ⏳Epochs
    • ⚖️Protocol Fees
  • 💰Tokenomics
    • 🧬CLR & aMTT
  • ⚒️Dev Docs
    • 🔑Contract Specs
      • ⚛️Cross-chain Logic
      • 📊Interest Rate Model
  • 📚Library
    • Brand Assets
    • Official Links
    • Legal Disclaimer
Powered by GitBook
On this page
  • Why Jump Rate Model?
  • Utilization Formula
  • Borrow Rate Calculation
  • Supply Rate Calculation
  • Example Constructor Usage
  1. Dev Docs
  2. Contract Specs

Interest Rate Model

Details the Jump Rate Model that dynamically adjusts borrow and supply rates based on utilization to maintain optimal capital efficiency.

Cluster uses a Jump Rate Model to determine dynamic interest rates for borrowers and suppliers. This model is implemented through the BaseJumpRateModelV2 and extended by JumpRateModelV2.

Why Jump Rate Model?

This model increases the borrow rate linearly with utilization until a critical point (kink) is reached. After that, it applies a steeper jump multiplier, discouraging excessive borrowing and preserving liquidity.

Key Parameters

  • baseRatePerBlock: Minimum interest rate when utilization is 0%

  • multiplierPerBlock: Increase in rate before kink

  • jumpMultiplierPerBlock: Steep increase after kink

  • kink: Utilization threshold triggering the jump

  • blocksPerYear: Number of blocks assumed per year (2,102,400)

Utilization Formula

Calculates how much of the pool's liquidity is currently borrowed.

utilization = borrows / (cash + borrows - reserves)

Borrow Rate Calculation

Computes the borrow rate depending on the utilization relative to the kink.

if (util <= kink) {
  return ((util * multiplierPerBlock) / BASE) + baseRatePerBlock;
} else {
  uint normalRate = ((kink * multiplierPerBlock) / BASE) + baseRatePerBlock;
  uint excessUtil = util - kink;
  return ((excessUtil * jumpMultiplierPerBlock) / BASE) + normalRate;
}

Supply Rate Calculation

Determines the rate earned by suppliers, factoring in the reserve factor.

borrowRate = getBorrowRateInternal(...);
rateToPool = borrowRate * (1 - reserveFactor);
supplyRate = utilization * rateToPool;

Example Constructor Usage

Initializes the interest rate model with key parameters.

constructor(
  uint baseRatePerYear,
  uint multiplierPerYear,
  uint jumpMultiplierPerYear,
  uint kink,
  address owner
) public BaseJumpRateModelV2(...) { }

This modularity allows the protocol to fine-tune interest dynamics over time through governance proposals.

PreviousCross-chain LogicNextBrand Assets

Last updated 29 days ago

⚒️
🔑
📊