BaseJumpRateModelV2

Logic for Compound's JumpRateModel Contract V2.

An interest rate model with a steep increase after a certain utilization threshold called kink is reached. This rate model uses the following formula for the borrow rate:

  • $borrow\_rate(u)=a_1 \cdot u + b$, when $u < kink$

  • $borrow\_rate(u)=a_1 \cdot kink + a_2 \cdot (u-kink) + b$, otherwise

The parameters of this interest rate model can be adjusted by the owner. Version 2 modifies Version 1 by enabling updateable parameters.

Solidity API

accessControlManager

The address of the AccessControlManager contract

contract IAccessControlManagerV8 accessControlManager

multiplierPerBlock

The multiplier of utilization rate that gives the slope of the interest rate

uint256 multiplierPerBlock

baseRatePerBlock

The base interest rate which is the y-intercept when utilization rate is 0

uint256 baseRatePerBlock

jumpMultiplierPerBlock

The multiplier per block after hitting a specified utilization point

uint256 jumpMultiplierPerBlock

kink

The utilization point at which the jump multiplier is applied

uint256 kink

updateJumpRateModel

Update the parameters of the interest rate model

function updateJumpRateModel(uint256 baseRatePerYear, uint256 multiplierPerYear, uint256 jumpMultiplierPerYear, uint256 kink_) external virtual

Parameters

NameTypeDescription

baseRatePerYear

uint256

The approximate target base APR, as a mantissa (scaled by EXP_SCALE)

multiplierPerYear

uint256

The rate of increase in interest rate wrt utilization (scaled by EXP_SCALE)

jumpMultiplierPerYear

uint256

The multiplierPerBlock after hitting a specified utilization point

kink_

uint256

The utilization point at which the jump multiplier is applied

⛔️ Access Requirements

  • Controlled by AccessControlManager

❌ Errors

  • Unauthorized if the sender is not allowed to call this function


getSupplyRate

Calculates the current supply rate per block

function getSupplyRate(uint256 cash, uint256 borrows, uint256 reserves, uint256 reserveFactorMantissa, uint256 badDebt) public view virtual returns (uint256)

Parameters

NameTypeDescription

cash

uint256

The amount of cash in the market

borrows

uint256

The amount of borrows in the market

reserves

uint256

The amount of reserves in the market

reserveFactorMantissa

uint256

The current reserve factor for the market

badDebt

uint256

The amount of badDebt in the market

Return Values

NameTypeDescription

[0]

uint256

The supply rate percentage per block as a mantissa (scaled by EXP_SCALE)


utilizationRate

Calculates the utilization rate of the market: (borrows + badDebt) / (cash + borrows + badDebt - reserves)

function utilizationRate(uint256 cash, uint256 borrows, uint256 reserves, uint256 badDebt) public pure returns (uint256)

Parameters

NameTypeDescription

cash

uint256

The amount of cash in the market

borrows

uint256

The amount of borrows in the market

reserves

uint256

The amount of reserves in the market (currently unused)

badDebt

uint256

The amount of badDebt in the market

Return Values

NameTypeDescription

[0]

uint256

The utilization rate as a mantissa between [0, MANTISSA_ONE]


Last updated