RewardControl.sol
Events
1
event AlkSpeedUpdated(address indexed market, uint256 newSpeed, bool isVerified);
2
event DistributedSupplierAlk(address indexed market, address indexed supplier, uint256 supplierDelta, uint256 supplierAccruedAlk, uint256 supplyIndexMantissa, bool isVerified);
3
event DistributedBorrowerAlk(address indexed market, address indexed borrower, uint256 borrowerDelta, uint256 borrowerAccruedAlk, uint256 borrowIndexMantissa, bool isVerified);
4
event TransferredAlk(address indexed participant, uint256 participantAccrued, address market, bool isVerified);
5
event OwnerUpdate(address indexed owner, address indexed newOwner);
6
event MarketAdded(address indexed market, uint256 numberOfMarkets, bool isVerified);
7
event MarketRemoved(address indexed market, uint256 numberOfMarkets, bool isVerified);
Copied!

Modifiers

  • onlyOwner

onlyOwner

Make sure that the sender is only the owner of the contract
1
modifier onlyOwner() internal
Copied!
Arguments
Name
Type
Description

Functions

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

initializer

RewardControl is the contract to calculate and distribute reward tokens
1
function initializer(address _owner, address _alkemiEarnVerified, address _alkemiEarnPublic, address _alkAddress) public nonpayable
Copied!
Arguments
Name
Type
Description
_owner
address
_alkemiEarnVerified
address
_alkemiEarnPublic
address
_alkAddress
address

refreshAlkSupplyIndex

Refresh ALK supply index for the specified market and supplier
1
function refreshAlkSupplyIndex(address market, address supplier, bool isVerified) external nonpayable
Copied!
Arguments
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

refreshAlkBorrowIndex

Refresh ALK borrow index for the specified market and borrower
1
function refreshAlkBorrowIndex(address market, address borrower, bool isVerified) external nonpayable
Copied!
Arguments
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

claimAlk

Claim all the ALK accrued by holder in all markets
1
function claimAlk(address holder) external nonpayable
Copied!
Arguments
Name
Type
Description
holder
address
The address to claim ALK for

claimAlk

Claim all the ALK accrued by holder by refreshing the indexes on the specified market only
1
function claimAlk(address holder, address market, bool isVerified) external nonpayable
Copied!
Arguments
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

refreshMarketLiquidity

Recalculate and update ALK speeds for all markets
1
function refreshMarketLiquidity() internal view
2
returns(struct ExponentialNoError.Exp[], struct ExponentialNoError.Exp)
Copied!
Arguments
Name
Type
Description

refreshAlkSpeeds

Recalculate and update ALK speeds for all markets
1
function refreshAlkSpeeds() public nonpayable
Copied!
Arguments
Name
Type
Description

updateAlkSupplyIndex

Accrue ALK to the market by updating the supply index
1
function updateAlkSupplyIndex(address market, bool isVerified) public nonpayable
Copied!
Arguments
Name
Type
Description
market
address
The market whose supply index to update
isVerified
bool
Verified / Public protocol

updateAlkBorrowIndex

Accrue ALK to the market by updating the borrow index
1
function updateAlkBorrowIndex(address market, bool isVerified) public nonpayable
Copied!
Arguments
Name
Type
Description
market
address
The market whose borrow index to update
isVerified
bool
Verified / Public protocol

distributeSupplierAlk

Calculate ALK accrued by a supplier and add it on top of alkAccrued[supplier]
1
function distributeSupplierAlk(address market, address supplier, bool isVerified) public nonpayable
Copied!
Arguments
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

distributeBorrowerAlk

Calculate ALK accrued by a borrower and add it on top of alkAccrued[borrower]
1
function distributeBorrowerAlk(address market, address borrower, bool isVerified) public nonpayable
Copied!
Arguments
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

claimAlk

Claim all the ALK accrued by holder in the specified markets
1
function claimAlk(address holder, address[] markets, bool isVerified) internal nonpayable
Copied!
Arguments
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

transferAlk

Transfer ALK to the participant
1
function transferAlk(address participant, uint256 participantAccrued, address market, bool isVerified) internal nonpayable
2
returns(uint256)
Copied!
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

getBlockNumber

Get the current block number
1
function getBlockNumber() public view
2
returns(uint256)
Copied!
Returns
The current block number
Arguments
Name
Type
Description

getAlkAccrued

Get the current accrued ALK for a participant
1
function getAlkAccrued(address participant) public view
2
returns(uint256)
Copied!
Returns
The amount of accrued ALK for the participant
Arguments
Name
Type
Description
participant
address
The address of the participant

getAlkAddress

Get the address of the ALK token
1
function getAlkAddress() public view
2
returns(address)
Copied!
Returns
The address of ALK token
Arguments
Name
Type
Description

getAlkemiEarnAddress

Get the address of the underlying AlkemiEarnVerified and AlkemiEarnPublic contract
1
function getAlkemiEarnAddress() public view
2
returns(address, address)
Copied!
Returns
The address of the underlying AlkemiEarnVerified and AlkemiEarnPublic contract
Arguments
Name
Type
Description

getMarketStats

Get market statistics from the AlkemiEarnVerified contract
1
function getMarketStats(address market, bool isVerified) public view
2
returns(isSupported bool, blockNumber uint256, interestRateModel address, totalSupply uint256, supplyRateMantissa uint256, supplyIndex uint256, totalBorrows uint256, borrowRateMantissa uint256, borrowIndex uint256)
Copied!
Returns
Market statistics for the given market
Arguments
Name
Type
Description
market
address
The address of the market
isVerified
bool
Verified / Public protocol

getMarketTotalSupply

Get market total supply from the AlkemiEarnVerified / AlkemiEarnPublic contract
1
function getMarketTotalSupply(address market, bool isVerified) public view
2
returns(uint256)
Copied!
Returns
Market total supply for the given market
Arguments
Name
Type
Description
market
address
The address of the market
isVerified
bool
Verified / Public protocol

getMarketTotalBorrows

Get market total borrows from the AlkemiEarnVerified contract
1
function getMarketTotalBorrows(address market, bool isVerified) public view
2
returns(uint256)
Copied!
Returns
Market total borrows for the given market
Arguments
Name
Type
Description
market
address
The address of the market
isVerified
bool
Verified / Public protocol

getSupplyBalance

Get supply balance of the specified market and supplier
1
function getSupplyBalance(address market, address supplier, bool isVerified) public view
2
returns(uint256)
Copied!
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

getBorrowBalance

Get borrow balance of the specified market and borrower
1
function getBorrowBalance(address market, address borrower, bool isVerified) public view
2
returns(uint256)
Copied!
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

transferOwnership

Transfer the ownership of this contract to the new owner. The ownership will not be transferred until the new owner accept it.
1
function transferOwnership(address _newOwner) external nonpayable onlyOwner
Copied!
Arguments
Name
Type
Description
_newOwner
address
The address of the new owner

acceptOwnership

Accept the ownership of this contract by the new owner
1
function acceptOwnership() external nonpayable
Copied!
Arguments
Name
Type
Description

addMarket

Add new market to the reward program
1
function addMarket(address market, bool isVerified) external nonpayable onlyOwner
Copied!
Arguments
Name
Type
Description
market
address
The address of the new market to be added to the reward program
isVerified
bool
Verified / Public protocol

removeMarket

Remove a market from the reward program based on array index
1
function removeMarket(uint256 id, bool isVerified) external nonpayable onlyOwner
Copied!
Arguments
Name
Type
Description
id
uint256
The index of the allMarkets array to be removed
isVerified
bool
Verified / Public protocol

setAlkAddress

Set ALK token address
1
function setAlkAddress(address _alkAddress) external nonpayable onlyOwner
Copied!
Arguments
Name
Type
Description
_alkAddress
address
The ALK token address

setAlkemiEarnVerifiedAddress

Set AlkemiEarnVerified contract address
1
function setAlkemiEarnVerifiedAddress(address _alkemiEarnVerified) external nonpayable onlyOwner
Copied!
Arguments
Name
Type
Description
_alkemiEarnVerified
address
The AlkemiEarnVerified contract address

setAlkemiEarnPublicAddress

Set AlkemiEarnPublic contract address
1
function setAlkemiEarnPublicAddress(address _alkemiEarnPublic) external nonpayable onlyOwner
Copied!
Arguments
Name
Type
Description
_alkemiEarnPublic
address
The AlkemiEarnVerified contract address

setAlkRate

Set ALK rate
1
function setAlkRate(uint256 _alkRate) external nonpayable onlyOwner
Copied!
Arguments
Name
Type
Description
_alkRate
uint256
The ALK rate

getAlkRewards

Get latest ALK rewards
1
function getAlkRewards(address user) external view
2
returns(uint256)
Copied!
Arguments
Name
Type
Description
user
address
the supplier/borrower

getSupplyAlkRewards

Get latest Supply ALK rewards
1
function getSupplyAlkRewards(struct ExponentialNoError.Exp totalLiquidity, struct ExponentialNoError.Exp[] marketTotalLiquidity, address user, uint256 i, uint256 j, bool isVerified) internal view
2
returns(uint256)
Copied!
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

getBorrowAlkRewards

Get latest Borrow ALK rewards
1
function getBorrowAlkRewards(struct ExponentialNoError.Exp totalLiquidity, struct ExponentialNoError.Exp[] marketTotalLiquidity, address user, uint256 i, uint256 j, bool isVerified) internal view
2
returns(uint256)
Copied!
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
Last modified 4mo ago
Copy link