Skip to content

FluidLendingRewardsRateModel ​

Calculates rewards rate used for an fToken based on a rewardAmount over a given duration. Rewards start once the allowed initiator address triggers start() and only accrue above a certain startTVL. Max rate cap is at 50%.

LogRewardsStarted ​

solidity
event LogRewardsStarted(uint256 startTime, uint256 endTime)

Emitted when rewards are started

RATE_PRECISION ​

solidity
uint256 RATE_PRECISION

precision decimals for rewards rate

SECONDS_PER_YEAR ​

solidity
uint256 SECONDS_PER_YEAR

MAX_RATE ​

solidity
uint256 MAX_RATE

maximum rewards rate is 50%. no config higher than this should be possible.

START_TVL ​

solidity
uint256 START_TVL

tvl below which rewards rate is 0

DURATION ​

solidity
uint256 DURATION

for how long rewards should run

YEARLY_REWARD ​

solidity
uint256 YEARLY_REWARD

annualized reward based on constructor input params (duration, rewardAmount)

REWARD_AMOUNT ​

solidity
uint256 REWARD_AMOUNT

total amounts to be distributed. not needed but stored for easier tracking via getConfig

INITIATOR ​

solidity
address INITIATOR

address which has access to call start() which kickstarts the rewards

PREVIOUS_MODEL ​

solidity
contract IFluidLendingRewardsRateModel PREVIOUS_MODEL

address of the previously active lending rewards rate model for smooth transition. Can be zero address if none.

PREVIOUS_MODEL_END_TIME ​

solidity
uint256 PREVIOUS_MODEL_END_TIME

end time of previous lending rewards rate model. 0 if there is no previous model.

startTime ​

solidity
uint96 startTime

when rewards got started

endTime ​

solidity
uint96 endTime

when rewards will get over

validAddress ​

solidity
modifier validAddress(address value_)

Validates that an address is not the zero address

constructor ​

solidity
constructor(uint256 duration_, uint256 startTvl_, uint256 rewardAmount_, address initiator_, contract IFluidLendingRewardsRateModel previousModel_) public

sets immutable vars for rewards rate config based on input params.

Parameters ​

NameTypeDescription
duration_uint256for how long rewards should run
startTvl_uint256tvl below which rate is 0
rewardAmount_uint256total amount of underlying asset to be distributed as rewards
initiator_addressaddress which has access to kickstart the rewards, if previousModel is address zero
previousModel_contract IFluidLendingRewardsRateModeladdress of previously active lendingRewardsRateModel. can be zero address if none.

getConfig ​

solidity
function getConfig() external view returns (uint256 duration_, uint256 startTime_, uint256 endTime_, uint256 startTvl_, uint256 maxRate_, uint256 rewardAmount_, address initiator_)

Returns config constants for rewards rate model

getRate ​

solidity
function getRate(uint256 totalAssets_) public view returns (uint256 rate_, bool ended_, uint256 startTime_)

Calculates the current rewards rate (APR)

Parameters ​

NameTypeDescription
totalAssets_uint256amount of assets in the lending

Return Values ​

NameTypeDescription
rate_uint256rewards rate percentage per year with 1e12 RATE_PRECISION, e.g. 1e12 = 1%, 1e14 = 100%
ended_boolflag to signal that rewards have ended (always 0 going forward)
startTime_uint256start time of rewards to compare against last update timestamp

start ​

solidity
function start() external