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
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_) 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 |
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