RewardDistributor

Git Source

Inherits: IRewardDistributor, ExponentialNoError, Initializable, OwnableUpgradeable, ReentrancyGuardUpgradeable

State Variables

REWARD_INITIAL_INDEX

uint224 public constant REWARD_INITIAL_INDEX = 1e36;

operator

The operator that rewards are distributed to

address public operator;

rewardMarketState

The Reward state for each reward token for each market

mapping(address => mapping(address => IRewardDistributorData.RewardMarketState)) public rewardMarketState;

rewardAccountState

The Reward state for each reward token for each account

mapping(address => mapping(address => IRewardDistributorData.RewardAccountState)) public rewardAccountState;

rewardTokens

Added reward tokens

address[] public rewardTokens;

isRewardToken

Flag to check if reward token added before

mapping(address => bool) public isRewardToken;

Functions

onlyOperator

modifier onlyOperator();

constructor

Note: oz-upgrades-unsafe-allow: constructor

constructor();

claim

function claim(address[] memory holders) public override nonReentrant;

getBlockTimestamp

Get block timestamp

function getBlockTimestamp() public view override returns (uint32);

getRewardTokens

Added reward tokens

function getRewardTokens() public view override returns (address[] memory);

initialize

function initialize(address _owner) public initializer;

setOperator

function setOperator(address _operator) external onlyOwner;

whitelistToken

function whitelistToken(address rewardToken_) public onlyOwner;

updateRewardSpeeds

function updateRewardSpeeds(
    address rewardToken_,
    address[] memory mTokens,
    uint256[] memory supplySpeeds,
    uint256[] memory borrowSpeeds
) public onlyOwner;

grantReward

function grantReward(address token, address user, uint256 amount) public onlyOwner;

notifySupplyIndex

Notifies supply index

function notifySupplyIndex(address mToken) external override onlyOperator;

notifyBorrowIndex

Notifies borrow index

function notifyBorrowIndex(address mToken) external override onlyOperator;

notifySupplier

Notifies supplier

function notifySupplier(address mToken, address supplier) external override onlyOperator;

notifyBorrower

Notifies borrower

function notifyBorrower(address mToken, address borrower) external override onlyOperator;

_updateRewardSpeed

function _updateRewardSpeed(address rewardToken, address mToken, uint256 supplySpeed, uint256 borrowSpeed) private;

_notifySupplyIndex

function _notifySupplyIndex(address rewardToken, address mToken) private;

_notifyBorrowIndex

function _notifyBorrowIndex(address rewardToken, address mToken) private;

_notifySupplier

function _notifySupplier(address rewardToken, address mToken, address supplier) private;

_notifyBorrower

function _notifyBorrower(address rewardToken, address mToken, address borrower) private;

_claim

function _claim(address rewardToken, address[] memory holders) internal;

_grantReward

function _grantReward(address token, address user, uint256 amount) internal returns (uint256);

Errors

RewardDistributor_OnlyOperator

error RewardDistributor_OnlyOperator();

RewardDistributor_TransferFailed

error RewardDistributor_TransferFailed();

RewardDistributor_RewardNotValid

error RewardDistributor_RewardNotValid();

RewardDistributor_AddressNotValid

error RewardDistributor_AddressNotValid();

RewardDistributor_AddressAlreadyRegistered

error RewardDistributor_AddressAlreadyRegistered();

RewardDistributor_SupplySpeedArrayLengthMismatch

error RewardDistributor_SupplySpeedArrayLengthMismatch();

RewardDistributor_BorrowSpeedArrayLengthMismatch

error RewardDistributor_BorrowSpeedArrayLengthMismatch();