The FeiRewardsDistributor contract is responsible for sending rewards to the FeiStakingRewards contract each week.
It has one public method exposed for keepers to execute this drip functionality, which rewards the caller with a fixed amount of FEI.
The release schedule for the total reward amount R of TRIBE is a linearly decreasing TRIBE distribution. The distribution function is:
This function has a duration of d before it hits a 0 distribution rate. The area under the curve is R, because the y-intercept is 2R/d, by simply multiplying base times height times 1/2.
Set the "unreleased function" U(t) equal to the area under this curve between the current elapsed time t and the total duration d. Note that for t=d the output is equal to 0 as all of the TRIBE should be released. The formula is:
Sent TRIBE to the FeiStakingRewards contract
account that triggered the drip
amount of TRIBE dripped
A withdrawal of TRIBE from the distributor
Change the drip frequency
new drip frequency
Change in the FEI reward for dripping
new incentive amount
A change in the staking contract to send TRIBE to.
the new staking contract
function incentiveAmount() external view returns (uint256);
Returns the amount of FEI sent to the caller of
function dripFrequency() external view returns (uint256);
The minimum frequency allowed between rewards distribution.
function isDripAvailable() external view returns (bool);
Returns true if
nextDripAvailable() preceeds the current block timestamp
function nextDripAvailable() external view returns (uint256);
The next block timestamp when reward distribution is allowed by the contract. Equals
lastDistributionTime() + dripFrequency()
function lastDistributionTime() external view returns (uint256);
The last block timestamp when rewards were distributed from the contract.
function stakingContract() external view returns (IStakingRewards);
The FeiStakingRewards contract address
function totalReward() external view returns (uint256);
Returns the total amount of rewards released over the entire window, including claimed, released, and unreleased.
function releasedReward() external view returns (uint256);
Returns the amount of
rewardToken available for claiming by the pool. Calculated as
rewardBalance() - unreleasedReward().
function unreleasedReward() external view returns (uint256);
The unreleased reward function following the formula shown in the Release Schedule section above. It starts at the
totalReward() amount and then wind down to 0 over the
duration of the window.
function rewardBalance() external view returns (uint256);
The amount of TRIBE held by the contract, released or unreleased.
function distributedRewards() external view returns (uint256);
function drip() external returns (uint256);
releasedReward() TRIBE to the
stakingRewards() contract and updates the reward rate.
Incentivizes the caller with
function governorWithdraw(uint256 amount) external;
amount TRIBE tokens from the pool to Fei Core.
function governorRecover(address tokenAddress, address to, uint256 amount) external;
tokenAddress ERC20 tokens from the FeiStakingRewards contract to address
to. This is used if there were AMM rewards distributed.
function setDripFrequency(uint256 _frequency) external;
Sets the frequency with which the contract calls the FeiStakingRewards.
function setIncentiveAmount(uint256 _incentiveAmount) external;
Sets the incentive amount for calling
function setStakingContract(address _stakingRewards) external;
Sets the staking contract to send TRIBE to.