TwoKinksInterestRateModel
TwoKinksInterestRateModel
Section titled “TwoKinksInterestRateModel”An interest rate model with two different slope increase or decrease each after a certain utilization threshold called kink is reached.
Solidity API
Section titled “Solidity API”BLOCKS_PER_YEAR
Section titled “BLOCKS_PER_YEAR”Approximate blocks per year used to convert annual constructor parameters to per-block rates.
int256 BLOCKS_PER_YEARMULTIPLIER_PER_BLOCK
Section titled “MULTIPLIER_PER_BLOCK”The multiplier of utilization rate per block that gives the slope 1 of the interest rate scaled by EXP_SCALE
int256 MULTIPLIER_PER_BLOCKBASE_RATE_PER_BLOCK
Section titled “BASE_RATE_PER_BLOCK”The base interest rate per block which is the y-intercept when utilization rate is 0 scaled by EXP_SCALE
int256 BASE_RATE_PER_BLOCKKINK_1
Section titled “KINK_1”The utilization point at which the multiplier2 is applied
int256 KINK_1MULTIPLIER_2_PER_BLOCK
Section titled “MULTIPLIER_2_PER_BLOCK”The multiplier of utilization rate per block that gives the slope 2 of the interest rate scaled by EXP_SCALE
int256 MULTIPLIER_2_PER_BLOCKBASE_RATE_2_PER_BLOCK
Section titled “BASE_RATE_2_PER_BLOCK”The base interest rate per block which is the y-intercept when utilization rate hits KINK_1 scaled by EXP_SCALE
int256 BASE_RATE_2_PER_BLOCKRATE_1
Section titled “RATE_1”The maximum kink interest rate scaled by EXP_SCALE
int256 RATE_1KINK_2
Section titled “KINK_2”The utilization point at which the jump multiplier is applied
int256 KINK_2JUMP_MULTIPLIER_PER_BLOCK
Section titled “JUMP_MULTIPLIER_PER_BLOCK”The multiplier of utilization rate per block that gives the slope 3 of interest rate scaled by EXP_SCALE
int256 JUMP_MULTIPLIER_PER_BLOCKRATE_2
Section titled “RATE_2”The maximum kink interest rate scaled by EXP_SCALE
int256 RATE_2constructor
Section titled “constructor”Construct an interest rate model
constructor(int256 baseRatePerYear_, int256 multiplierPerYear_, int256 kink1_, int256 multiplier2PerYear_, int256 baseRate2PerYear_, int256 kink2_, int256 jumpMultiplierPerYear_, int256 blocksPerYear_) publicParameters
Section titled “Parameters”| Name | Type | Description |
|---|---|---|
| baseRatePerYear_ | int256 | The approximate target base APR, as a mantissa (scaled by EXP_SCALE) |
| multiplierPerYear_ | int256 | The rate of increase or decrease in interest rate wrt utilization (scaled by EXP_SCALE) |
| kink1_ | int256 | The utilization point at which the multiplier2 is applied |
| multiplier2PerYear_ | int256 | The rate of increase or decrease in interest rate wrt utilization after hitting KINK_1 (scaled by EXP_SCALE) |
| baseRate2PerYear_ | int256 | The additional base APR after hitting KINK_1, as a mantissa (scaled by EXP_SCALE) |
| kink2_ | int256 | The utilization point at which the jump multiplier is applied |
| jumpMultiplierPerYear_ | int256 | The multiplier after hitting KINK_2 |
| blocksPerYear_ | int256 | The approximate number of blocks per year assumed by this model |
getBorrowRate
Section titled “getBorrowRate”Calculates the current borrow rate per slot (block)
function getBorrowRate(uint256 cash, uint256 borrows, uint256 reserves) external view returns (uint256)Parameters
Section titled “Parameters”| Name | Type | Description |
|---|---|---|
| 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 |
Return Values
Section titled “Return Values”| Name | Type | Description |
|---|---|---|
| [0] | uint256 | The borrow rate percentage per slot (block) as a mantissa (scaled by EXP_SCALE) |
getSupplyRate
Section titled “getSupplyRate”Calculates the current supply rate per slot (block)
function getSupplyRate(uint256 cash, uint256 borrows, uint256 reserves, uint256 reserveFactorMantissa) public view virtual returns (uint256)Parameters
Section titled “Parameters”| Name | Type | Description |
|---|---|---|
| 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 |
Return Values
Section titled “Return Values”| Name | Type | Description |
|---|---|---|
| [0] | uint256 | The supply rate percentage per slot (block) as a mantissa (scaled by EXP_SCALE) |
utilizationRate
Section titled “utilizationRate”Calculates the utilization rate of the market: borrows / (cash + borrows - reserves)
function utilizationRate(uint256 cash, uint256 borrows, uint256 reserves) public pure returns (uint256)Parameters
Section titled “Parameters”| Name | Type | Description |
|---|---|---|
| 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 |
Return Values
Section titled “Return Values”| Name | Type | Description |
|---|---|---|
| [0] | uint256 | The utilization rate as a mantissa between [0, EXP_SCALE] |