| layout | title |
|---|---|
default |
RewardControl |
View Source: contracts/RewardControl.sol
↗ Extends: RewardControlStorage, RewardControlInterface, ExponentialNoError
****
Events
event AlkSpeedUpdated(address indexed market, uint256 newSpeed, bool isVerified);
event DistributedSupplierAlk(address indexed market, address indexed supplier, uint256 supplierDelta, uint256 supplierAccruedAlk, uint256 supplyIndexMantissa, bool isVerified);
event DistributedBorrowerAlk(address indexed market, address indexed borrower, uint256 borrowerDelta, uint256 borrowerAccruedAlk, uint256 borrowIndexMantissa, bool isVerified);
event TransferredAlk(address indexed participant, uint256 participantAccrued, address market, bool isVerified);
event OwnerUpdate(address indexed owner, address indexed newOwner);
event MarketAdded(address indexed market, uint256 numberOfMarkets, bool isVerified);
event MarketRemoved(address indexed market, uint256 numberOfMarkets, bool isVerified);- onlyOwner
Make sure that the sender is only the owner of the contract
modifier onlyOwner() internalArguments
| Name | Type | Description |
|---|
- initializer(address _owner, address _alkemiEarnVerified, address _alkemiEarnPublic, address _alkAddress)
- refreshAlkSupplyIndex(address market, address supplier, bool isVerified)
- refreshAlkBorrowIndex(address market, address borrower, bool isVerified)
- claimAlk(address holder)
- claimAlk(address holder, address market, bool isVerified)
- refreshMarketLiquidity()
- refreshAlkSpeeds()
- updateAlkSupplyIndex(address market, bool isVerified)
- updateAlkBorrowIndex(address market, bool isVerified)
- distributeSupplierAlk(address market, address supplier, bool isVerified)
- distributeBorrowerAlk(address market, address borrower, bool isVerified)
- claimAlk(address holder, address[] markets, bool isVerified)
- transferAlk(address participant, uint256 participantAccrued, address market, bool isVerified)
- getBlockNumber()
- getAlkAccrued(address participant)
- getAlkAddress()
- getAlkemiEarnAddress()
- getMarketStats(address market, bool isVerified)
- getMarketTotalSupply(address market, bool isVerified)
- getMarketTotalBorrows(address market, bool isVerified)
- getSupplyBalance(address market, address supplier, bool isVerified)
- getBorrowBalance(address market, address borrower, bool isVerified)
- transferOwnership(address _newOwner)
- acceptOwnership()
- addMarket(address market, bool isVerified)
- removeMarket(uint256 id, bool isVerified)
- setAlkAddress(address _alkAddress)
- setAlkemiEarnVerifiedAddress(address _alkemiEarnVerified)
- setAlkemiEarnPublicAddress(address _alkemiEarnPublic)
- setAlkRate(uint256 _alkRate)
- getAlkRewards(address user)
- getSupplyAlkRewards(struct ExponentialNoError.Exp totalLiquidity, struct ExponentialNoError.Exp[] marketTotalLiquidity, address user, uint256 i, uint256 j, bool isVerified)
- getBorrowAlkRewards(struct ExponentialNoError.Exp totalLiquidity, struct ExponentialNoError.Exp[] marketTotalLiquidity, address user, uint256 i, uint256 j, bool isVerified)
RewardControl is the contract to calculate and distribute reward tokens
function initializer(address _owner, address _alkemiEarnVerified, address _alkemiEarnPublic, address _alkAddress) public nonpayableArguments
| Name | Type | Description |
|---|---|---|
| _owner | address | |
| _alkemiEarnVerified | address | |
| _alkemiEarnPublic | address | |
| _alkAddress | address |
⤾ overrides RewardControlInterface.refreshAlkSupplyIndex
Refresh ALK supply index for the specified market and supplier
function refreshAlkSupplyIndex(address market, address supplier, bool isVerified) external nonpayableArguments
| Name | Type | Description |
|---|---|---|
| market | address | The market whose supply index to update |
| supplier | address | The address of the supplier to distribute ALK to |
| isVerified | bool | Specifies if the market is from verified or public protocol |
⤾ overrides RewardControlInterface.refreshAlkBorrowIndex
Refresh ALK borrow index for the specified market and borrower
function refreshAlkBorrowIndex(address market, address borrower, bool isVerified) external nonpayableArguments
| Name | Type | Description |
|---|---|---|
| market | address | The market whose borrow index to update |
| borrower | address | The address of the borrower to distribute ALK to |
| isVerified | bool | Specifies if the market is from verified or public protocol |
⤾ overrides RewardControlInterface.claimAlk
Claim all the ALK accrued by holder in all markets
function claimAlk(address holder) external nonpayableArguments
| Name | Type | Description |
|---|---|---|
| holder | address | The address to claim ALK for |
⤾ overrides RewardControlInterface.claimAlk
Claim all the ALK accrued by holder by refreshing the indexes on the specified market only
function claimAlk(address holder, address market, bool isVerified) external nonpayableArguments
| Name | Type | Description |
|---|---|---|
| holder | address | The address to claim ALK for |
| market | address | The address of the market to refresh the indexes for |
| isVerified | bool | Specifies if the market is from verified or public protocol |
Recalculate and update ALK speeds for all markets
function refreshMarketLiquidity() internal view
returns(struct ExponentialNoError.Exp[], struct ExponentialNoError.Exp)Arguments
| Name | Type | Description |
|---|
Recalculate and update ALK speeds for all markets
function refreshAlkSpeeds() public nonpayableArguments
| Name | Type | Description |
|---|
Accrue ALK to the market by updating the supply index
function updateAlkSupplyIndex(address market, bool isVerified) public nonpayableArguments
| Name | Type | Description |
|---|---|---|
| market | address | The market whose supply index to update |
| isVerified | bool | Verified / Public protocol |
Accrue ALK to the market by updating the borrow index
function updateAlkBorrowIndex(address market, bool isVerified) public nonpayableArguments
| Name | Type | Description |
|---|---|---|
| market | address | The market whose borrow index to update |
| isVerified | bool | Verified / Public protocol |
Calculate ALK accrued by a supplier and add it on top of alkAccrued[supplier]
function distributeSupplierAlk(address market, address supplier, bool isVerified) public nonpayableArguments
| Name | Type | Description |
|---|---|---|
| market | address | The market in which the supplier is interacting |
| supplier | address | The address of the supplier to distribute ALK to |
| isVerified | bool | Verified / Public protocol |
Calculate ALK accrued by a borrower and add it on top of alkAccrued[borrower]
function distributeBorrowerAlk(address market, address borrower, bool isVerified) public nonpayableArguments
| Name | Type | Description |
|---|---|---|
| market | address | The market in which the borrower is interacting |
| borrower | address | The address of the borrower to distribute ALK to |
| isVerified | bool | Verified / Public protocol |
Claim all the ALK accrued by holder in the specified markets
function claimAlk(address holder, address[] markets, bool isVerified) internal nonpayableArguments
| Name | Type | Description |
|---|---|---|
| holder | address | The address to claim ALK for |
| markets | address[] | The list of markets to claim ALK in |
| isVerified | bool | Verified / Public protocol |
Transfer ALK to the participant
function transferAlk(address participant, uint256 participantAccrued, address market, bool isVerified) internal nonpayable
returns(uint256)Returns
The amount of ALK which was NOT transferred to the participant
Arguments
| Name | Type | Description |
|---|---|---|
| participant | address | The address of the participant to transfer ALK to |
| participantAccrued | uint256 | The amount of ALK to (possibly) transfer |
| market | address | Market for which ALK is transferred |
| isVerified | bool | Verified / Public Protocol |
Get the current block number
function getBlockNumber() public view
returns(uint256)Returns
The current block number
Arguments
| Name | Type | Description |
|---|
Get the current accrued ALK for a participant
function getAlkAccrued(address participant) public view
returns(uint256)Returns
The amount of accrued ALK for the participant
Arguments
| Name | Type | Description |
|---|---|---|
| participant | address | The address of the participant |
Get the address of the ALK token
function getAlkAddress() public view
returns(address)Returns
The address of ALK token
Arguments
| Name | Type | Description |
|---|
Get the address of the underlying AlkemiEarnVerified and AlkemiEarnPublic contract
function getAlkemiEarnAddress() public view
returns(address, address)Returns
The address of the underlying AlkemiEarnVerified and AlkemiEarnPublic contract
Arguments
| Name | Type | Description |
|---|
Get market statistics from the AlkemiEarnVerified contract
function getMarketStats(address market, bool isVerified) public view
returns(isSupported bool, blockNumber uint256, interestRateModel address, totalSupply uint256, supplyRateMantissa uint256, supplyIndex uint256, totalBorrows uint256, borrowRateMantissa uint256, borrowIndex uint256)Returns
Market statistics for the given market
Arguments
| Name | Type | Description |
|---|---|---|
| market | address | The address of the market |
| isVerified | bool | Verified / Public protocol |
Get market total supply from the AlkemiEarnVerified / AlkemiEarnPublic contract
function getMarketTotalSupply(address market, bool isVerified) public view
returns(uint256)Returns
Market total supply for the given market
Arguments
| Name | Type | Description |
|---|---|---|
| market | address | The address of the market |
| isVerified | bool | Verified / Public protocol |
Get market total borrows from the AlkemiEarnVerified contract
function getMarketTotalBorrows(address market, bool isVerified) public view
returns(uint256)Returns
Market total borrows for the given market
Arguments
| Name | Type | Description |
|---|---|---|
| market | address | The address of the market |
| isVerified | bool | Verified / Public protocol |
Get supply balance of the specified market and supplier
function getSupplyBalance(address market, address supplier, bool isVerified) public view
returns(uint256)Returns
Supply balance of the specified market and supplier
Arguments
| Name | Type | Description |
|---|---|---|
| market | address | The address of the market |
| supplier | address | The address of the supplier |
| isVerified | bool | Verified / Public protocol |
Get borrow balance of the specified market and borrower
function getBorrowBalance(address market, address borrower, bool isVerified) public view
returns(uint256)Returns
Borrow balance of the specified market and borrower
Arguments
| Name | Type | Description |
|---|---|---|
| market | address | The address of the market |
| borrower | address | The address of the borrower |
| isVerified | bool | Verified / Public protocol |
Transfer the ownership of this contract to the new owner. The ownership will not be transferred until the new owner accept it.
function transferOwnership(address _newOwner) external nonpayable onlyOwnerArguments
| Name | Type | Description |
|---|---|---|
| _newOwner | address | The address of the new owner |
Accept the ownership of this contract by the new owner
function acceptOwnership() external nonpayableArguments
| Name | Type | Description |
|---|
Add new market to the reward program
function addMarket(address market, bool isVerified) external nonpayable onlyOwnerArguments
| Name | Type | Description |
|---|---|---|
| market | address | The address of the new market to be added to the reward program |
| isVerified | bool | Verified / Public protocol |
Remove a market from the reward program based on array index
function removeMarket(uint256 id, bool isVerified) external nonpayable onlyOwnerArguments
| Name | Type | Description |
|---|---|---|
| id | uint256 | The index of the allMarkets array to be removed |
| isVerified | bool | Verified / Public protocol |
Set ALK token address
function setAlkAddress(address _alkAddress) external nonpayable onlyOwnerArguments
| Name | Type | Description |
|---|---|---|
| _alkAddress | address | The ALK token address |
Set AlkemiEarnVerified contract address
function setAlkemiEarnVerifiedAddress(address _alkemiEarnVerified) external nonpayable onlyOwnerArguments
| Name | Type | Description |
|---|---|---|
| _alkemiEarnVerified | address | The AlkemiEarnVerified contract address |
Set AlkemiEarnPublic contract address
function setAlkemiEarnPublicAddress(address _alkemiEarnPublic) external nonpayable onlyOwnerArguments
| Name | Type | Description |
|---|---|---|
| _alkemiEarnPublic | address | The AlkemiEarnVerified contract address |
Set ALK rate
function setAlkRate(uint256 _alkRate) external nonpayable onlyOwnerArguments
| Name | Type | Description |
|---|---|---|
| _alkRate | uint256 | The ALK rate |
Get latest ALK rewards
function getAlkRewards(address user) external view
returns(uint256)Arguments
| Name | Type | Description |
|---|---|---|
| user | address | the supplier/borrower |
Get latest Supply ALK rewards
function getSupplyAlkRewards(struct ExponentialNoError.Exp totalLiquidity, struct ExponentialNoError.Exp[] marketTotalLiquidity, address user, uint256 i, uint256 j, bool isVerified) internal view
returns(uint256)Arguments
| Name | Type | Description |
|---|---|---|
| totalLiquidity | struct ExponentialNoError.Exp | Total Liquidity of all markets |
| marketTotalLiquidity | struct ExponentialNoError.Exp[] | Array of individual market liquidity |
| user | address | the supplier |
| i | uint256 | index of the market in marketTotalLiquidity array |
| j | uint256 | index of the market in the verified/public allMarkets array |
| isVerified | bool | Verified / Public protocol |
Get latest Borrow ALK rewards
function getBorrowAlkRewards(struct ExponentialNoError.Exp totalLiquidity, struct ExponentialNoError.Exp[] marketTotalLiquidity, address user, uint256 i, uint256 j, bool isVerified) internal view
returns(uint256)Arguments
| Name | Type | Description |
|---|---|---|
| totalLiquidity | struct ExponentialNoError.Exp | Total Liquidity of all markets |
| marketTotalLiquidity | struct ExponentialNoError.Exp[] | Array of individual market liquidity |
| user | address | the borrower |
| i | uint256 | index of the market in marketTotalLiquidity array |
| j | uint256 | index of the market in the verified/public allMarkets array |
| isVerified | bool | Verified / Public protocol |