Protocol math (Solana)

Solana's programs use linear functions to derive interest rates. Thus, all of the interest rates on the Solana lending programs can be expressed as:

y = ax + b

Where y is the interest rate for a given utilisation rate x.

Variable a is the slope of the curve, determining how fast or slow interest accrues given a change in utilisation.

// Example of interest calculation when current utilisation is below 1st optimal rate 

interestRate = ((BORROW_RATE_ONE - BASE_BORROW_RATE) / ( OPTIMAL_RATIO_ONE - 0 )) * utilizationRate + (-1*((BORROW_RATE_ONE - BASE_BORROW_RATE) / ( OPTIMAL_RATIO_ONE - 0  )) * 0 + BASE_BORROW_RATE )

/* y = interestRate
 * a = (x2 - x1) / (y2-y1)
 * x = utilizationRate
 * b = -ax + y
 *
 * Meaning that:
 *
 * y = interestRate
 * a = ((BORROW_RATE_ONE - BASE_BORROW_RATE) / ( OPTIMAL_RATIO_ONE - 0 ))
 * x = utilizationRate
 * b = (-1*((BORROW_RATE_ONE - BASE_BORROW_RATE) / ( OPTIMAL_RATIO_ONE - 0  )) * 0 + BASE_BORROW_RATE )
*/ 

Varying risk parameters and collaterals will result in different values for ax + b

// InterestRate.ts
// Parameters used in the default risk model

export const OPTIMAL_RATIO_ONE = 0.4;
export const OPTIMAL_RATIO_TWO = 0.8;
export const BASE_BORROW_RATE = 0.1;
export const BORROW_RATE_ONE = 0.25;
export const BORROW_RATE_TWO = 0.4;
export const BORROW_RATE_THREE = 1.4;

Last updated