All pages
Powered by GitBook
1 of 4

Loading...

Loading...

Loading...

Loading...

Adding Assets

Pool Creators are responsible for adding assets to their pool. The assets they add will depend on the intended use case for their pool. When they add assets, they must also set the asset's risk, interest rate, and emission parameters.

Pool Admins can add and remove assets from the pool and modify their parameters. This is important to note as pool creators should opt for an Owned Pool over a Standard Pool if they require flexibility with assets in the future.

Assets can be anything that follows the standard token interface. This includes native stellar tokens, bridged assets, or even custom tokens such as credit tokens.

Risk Parameters

Pool creators use the following parameters to control asset risk. These parameters must be set for each asset in the pool.

Poorly configured risk parameters can lead to blocked liquidations!

Our liquidation engine is bad at liquidating users who are about to enter a bad-debt position (users that require liquidation of more than 99% of their position but less than 100%)

As a result, pools that allow very high leverage with low volatility assets (think stablecoin leverage-focused pools) should either avoid adding support for low collateral factor assets (which allow users to attempt to force this scenario) or limit max position size to 2

Collateral Factor

An asset's collateral factor modifies the asset value when used as collateral. Asset collateral factors must be set to less than or equal to 1.

When used as collateral, an asset's value is calculated using the following equation.

Generally, an asset's collateral factor should be set lower the riskier an asset is. If an asset shouldn't be collateralized at all, the collateral factor should be set to 0.

Liability Factor

An asset's liability factor modifies the asset value when borrowed. Liability factors must be set to less than or equal to 1.

An asset's value, when borrowed, is calculated using the following equation.

Generally, an asset's liability factor should be set lower the riskier an asset is. If an asset isn't intended to be borrowed, its liability factor should be set to 0.

Utilization Cap

Pool creators can set asset utilization caps to prevent more than a certain percentage of an asset from being borrowed. This parameter is useful for protecting lenders in the case of an oracle failure. For example, by setting the utilization cap of assets primarily used as collateral to 25%, no more than 25% of deposits can be stolen during an oracle attack.

EffectiveCollateralValue=CollateralFactorβˆ—CollateralValueEffective CollateralValue= CollateralFactor * CollateralValueEffectiveCollateralValue=CollateralFactorβˆ—CollateralValue
EffectiveLiabilityValue=LiabilityValueβˆ—LiabilityFactorEffectiveLiabilityValue=LiabilityValue*LiabilityFactorEffectiveLiabilityValue=LiabilityValueβˆ—LiabilityFactor

Interest Rates

Interest rate parameters are used to define how much borrowers should be charged for borrowing assets at different utilization rates.

Utilization Rate

An asset's utilization rate is the percentage of the asset's deposits that are currently being borrowed. It can be calculated using the following formula:

UtilizationRate=TotalBorrowedTotalSuppliedUtilizationRate = \frac{TotalBorrowed}{TotalSupplied}UtilizationRate=TotalSuppliedTotalBorrowed​

Base Interest Rate

An asset's base interest rate is dynamic - it's based on a three-tier utilization curve which is calculated with the following parameters (the parameters are set by the pool creator and modifiable by the ).

Target Utilization (U_T)

The target percentage of an asset’s supply that should be borrowed. This should be set high for assets that are intended to be borrowed and low for assets that are intended to be used as collateral. This value is stored with 7 decimals.

Base Rate (R_base)

The reserve's minimum interest rate. This value has 7 decimals.

Rate Slope 1 (R_1)

The rate at which an asset's borrowing interest rate increases when it's below its target utilization. This value has 7 decimals.

Rate Slope 2 (R_2)

The rate at which an asset's interest rate increases when it's above its target utilization. This value has 7 decimals.

Rate Slope 3 (R_3)

The rate at which an asset's interest rate increases when it's above 95% utilization. An asset should never be above 95% utilization as it causes liquidity issues for lenders; thus, this slope should typically be set fairly high. This value has 7 decimals.

Base Interest Rate Equation

Sample base interest rates:

  • IR_1 is a low-utilization asset with:

    • U_T= 0.5 | R_1 = 0.05 | R_2 = 0.25 | R_3 = 0.5

  • IR_2 is a high-utilization asset with:

Desmos link:

Reactive Interest

In addition to being dynamic, interest rates are reactive. When an asset is below its target utilization, its interest rate will gradually decrease. When it’s above, the interest rate will increase. Target utilization should be set high for assets that are intended to be borrowed, like USDC, and low for assets that are designed to be primarily used as collateral.

This serves to ensure that capital remains efficiently allocated between BLND lending pools.

Rate Modifier

The rate modifier value is the reactive value that modifies interest rates in response to variation from the target utilization rate. This value has 9 decimals.

The rate modifier equation is:

UtilRateError

The utilization rate error is the accumulation of how far off an assets utilization rate was from its target

Reactivity Constant

A value that governs how quickly interest rates adjust based on assets' target utilization. This should be set based on how quickly users are expected to react to market inefficiencies. Additionally, it should also be set higher for assets with high-utilization targets to prevent them from experiencing excessive rate volatility and lower for low-utilization target assets.

For example, a reactivity constant of 0.0000200 will cause interest to double in approximately 2 months if the utilization rate is steadily 10% higher than it should be, making it a good choice for high utilization target assets.

The full interest rate equation with the reactivity constant is

You'll notice that the rate modifier only modifies the first two interest rates; this is because the last rate slope should be seen as an emergency slope with a very high value that assets shouldn't normally venture into. Allowing the rate modifier to affect it would make interest rates too volatile.

U_T = 0.85 | R_1 = 0.05 | R_2 = 0.15 | R_3 = 0.5
  • IR_3 is a fixed-rate asset with:

    • U_T = 0.01 | R_1 = 0.05 | R_2 = 0 | R_3 = 0

  • IR(U)={(Rbase+UUTR1)ifΒ U≀UT(Rbase+R1+Uβˆ’UT0.95βˆ’UTR2)ifΒ UT<U≀0.95(Rbase+R1+R2)+Uβˆ’0.950.05R3ifΒ 0.95<UIR(U)= \begin{cases} (R_{base}+\frac{U}{U_T}R_1) & \text{if } U\leq U_T\\ (R_{base}+R_1+\frac{U-U_T}{0.95-U_T}R_2) & \text{if } U_T\lt U\leq 0.95\\ (R_{base}+R_1+R_2)+\frac{U-0.95}{0.05}R_3 & \text{if } 0.95\lt U\\ \end{cases}IR(U)=βŽ©βŽ¨βŽ§β€‹(Rbase​+UT​U​R1​)(Rbase​+R1​+0.95βˆ’UT​Uβˆ’UT​​R2​)(Rbase​+R1​+R2​)+0.05Uβˆ’0.95​R3​​ifΒ U≀UT​ifΒ UT​<U≀0.95ifΒ 0.95<U​
    Β RateModifier=UtilRateErrorβˆ—ReactivityConstant+RateModifier\ Rate Modifier = Util Rate Error * Reactivity Constant + Rate ModifierΒ RateModifier=UtilRateErrorβˆ—ReactivityConstant+RateModifier
    UtilRateError=Ξ”secondsβˆ—(UTβˆ’U)Util Rate Error = \Delta seconds * (U_T-U)UtilRateError=Ξ”secondsβˆ—(UTβ€‹βˆ’U)
    518400secondsβˆ—0.00002ReactivityConstantβˆ—0.1UtilizationErrorβˆ—100ErrorScalar=1.0368518400_{seconds}*0.00002_{ReactivityConstant}*0.1_{UtilizationError}*100_{ErrorScalar}=1.0368518400secondsβ€‹βˆ—0.00002ReactivityConstantβ€‹βˆ—0.1UtilizationErrorβ€‹βˆ—100ErrorScalar​=1.0368
    RateModifier=1.0368+1=2.0368RateModifier = 1.0368 + 1=2.0368RateModifier=1.0368+1=2.0368
    Β IR(U)={RMβˆ—(Rbase+UUTR1)ifΒ U≀UTRMβˆ—(Rbase+R1+Uβˆ’UT0.95βˆ’UTR2)ifΒ UT<U≀0.95RMβˆ—(Rbase+R1+R2)+Uβˆ’0.950.05R3ifΒ 0.95<U\ IR(U)= \begin{cases} RM*(R_{base}+\frac{U}{U_T}R_1) & \text{if } U\leq U_T\\ RM*(R_{base}+R_1+\frac{U-U_T}{0.95-U_T}R_2) & \text{if } U_T\lt U\leq 0.95\\ RM*(R_{base}+R_1+R_2)+\frac{U-0.95}{0.05}R_3 & \text{if } 0.95\lt U\\ \end{cases}Β IR(U)=βŽ©βŽ¨βŽ§β€‹RMβˆ—(Rbase​+UT​U​R1​)RMβˆ—(Rbase​+R1​+0.95βˆ’UT​Uβˆ’UT​​R2​)RMβˆ—(Rbase​+R1​+R2​)+0.05Uβˆ’0.95​R3​​ifΒ U≀UT​ifΒ UT​<U≀0.95ifΒ 0.95<U​
    pool admin
    https://www.desmos.com/calculator/hzqgduyymj

    Emissions

    Blend lending pools within the reward zone receive BLND emissions that are distributed to lenders or borrowers in the pool. Pool's can be added to the reward zone if they have larger backstop modules than the pools currently within the reward zone. Pool creators designate which assets in their pool receive emissions and whether borrowers or lenders of those assets receive emissions.