Iron Bank staking rewards is a system that distributes rewards to iToken stakers in Iron Bank Earn. Users need to supply assets into Iron Bank to received iTokens and stake them in corresponding staking reward contract to earn rewards. Please note that this means the supplied assets can't be used as collateral since the iToken would be transferred out from user's wallet.
There are 3 components associated with Iron Bank staking rewards system.
StakingRewardsFactory: The factory that creates all the staking reward contracts.
StakingRewards: The contract that handles the main logic.
StakingRewardsHelper: The contract that helps users stake, unstake, and claim rewards.
getAllStakingRewards Get all the staking reward contracts created by this factory.
getStakingRewards Get the staking reward contract address given the staking token (iToken).
getStakingToken Get the staking token (iToken) address given the underlying.
All the mutative functions in
StakingRewardsFactoryare admin functions.
createStakingRewards Create staking reward contracts by providing a list of iToken addresses and the staking reward helper contract address. The helper contract is not necessary at this moment and could be set in each staking reward contract later.
removeStakingRewards Remove a staking reward contract given the staking token. This only updates the record in the factory. It won't stop the rewards distribution in the staking reward contract.
totalSupply Get the total amount of the staking token (iToken) staked in the contract.
balanceOf Get user balance of the staking token staked in the contract.
earned Get the user claimable reward token amount.
getRewardRate Get the reward rate of one reward token.
getRewardForDuration Get total reward amount in one epoch. (rewardRate * rewardsDuration)
getAllRewardsTokens Get all the reward tokens address.
getStakingToken Get the staking token (iToken) address of this staking reward contract.
stake Stake the staking token (iToken) into the staking reward contract.
stakeFor Helper contract stakes the staking token into the staking reward contract on behalf of users.
withdraw Withdraw the staking token (iToken) from the staking reward contract.
withdrawFor Helper contract withdraws the staking token from the staking reward contract on behalf of users.
getReward Claim rewards for the message sender.
getRewardFor Helper contract claims rewards on behalf of users.
exit Withdraw all the staking tokens (iToken) and claim all rewards.
notifyRewardAmount This is an admin function. Set new reward amount for the next epoch.
setRewardsDuration This is an admin function. Update the epoch reward duration.
addRewardsToken This is an admin function. Support new reward token.
setHelperContract This is an admin function. Set the helper contract.
getRewardTokenInfo Get the reward token info.
getUserClaimableRewards Get user claimable rewards.
getUserStaked Get user staked info.
getStakingInfo Get all the staking info.
stake Supply assets into Iron Bank and stake the corresponding iToken into the staking reward contract for users.
unstake Unstake iToken from the staking reward contract and redeem the underlying from Iron Bank for users.
exit Exit one staking reward contract for users.
exitAll Exit all staking reward contracts for users.
claimRewards Claim rewards of staking reward contracts for users.
claimAllRewards Claim all rewards for users.