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
event LogRewardsStarted(uint256 startTime, uint256 endTime)
Emitted when rewards are started
RATE_PRECISION
uint256 RATE_PRECISION
precision decimals for rewards rate
SECONDS_PER_YEAR
uint256 SECONDS_PER_YEAR
MAX_RATE
uint256 MAX_RATE
maximum rewards rate is 50%. no config higher than this should be possible.
START_TVL
uint256 START_TVL
tvl below which rewards rate is 0
DURATION
uint256 DURATION
for how long rewards should run
YEARLY_REWARD
uint256 YEARLY_REWARD
annualized reward based on constructor input params (duration, rewardAmount)
REWARD_AMOUNT
uint256 REWARD_AMOUNT
total amounts to be distributed. not needed but stored for easier tracking via getConfig
INITIATOR
address INITIATOR
address which has access to call start() which kickstarts the rewards
PREVIOUS_MODEL
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
uint256 PREVIOUS_MODEL_END_TIME
end time of previous lending rewards rate model. 0 if there is no previous model.
startTime
uint96 startTime
when rewards got started
endTime
uint96 endTime
when rewards will get over
validAddress
modifier validAddress(address value_)
Validates that an address is not the zero address
constructor
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
Name | Type | Description |
---|---|---|
duration_ | uint256 | for how long rewards should run |
startTvl_ | uint256 | tvl below which rate is 0 |
rewardAmount_ | uint256 | total amount of underlying asset to be distributed as rewards |
initiator_ | address | address which has access to kickstart the rewards, if previousModel is address zero |
previousModel_ | contract IFluidLendingRewardsRateModel | address of previously active lendingRewardsRateModel. can be zero address if none. |
getConfig
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
function getRate(uint256 totalAssets_) public view returns (uint256 rate_, bool ended_, uint256 startTime_)
Calculates the current rewards rate (APR)
Parameters
Name | Type | Description |
---|---|---|
totalAssets_ | uint256 | amount of assets in the lending |
Return Values
Name | Type | Description |
---|---|---|
rate_ | uint256 | rewards rate percentage per year with 1e12 RATE_PRECISION, e.g. 1e12 = 1%, 1e14 = 100% |
ended_ | bool | flag to signal that rewards have ended (always 0 going forward) |
startTime_ | uint256 | start time of rewards to compare against last update timestamp |
start
function start() external