RewardControl.sol

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

Modifiers

  • onlyOwner

onlyOwner

Make sure that the sender is only the owner of the contract

modifier onlyOwner() internal

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

function initializer(address _owner, address _alkemiEarnVerified, address _alkemiEarnPublic, address _alkAddress) public nonpayable

Arguments

Name

Type

Description

_owner

address

_alkemiEarnVerified

address

_alkemiEarnPublic

address

_alkAddress

address

refreshAlkSupplyIndex

⤾ overrides RewardControlInterface.refreshAlkSupplyIndex

Refresh ALK supply index for the specified market and supplier

function refreshAlkSupplyIndex(address market, address supplier, bool isVerified) external nonpayable

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

⤾ overrides RewardControlInterface.refreshAlkBorrowIndex

Refresh ALK borrow index for the specified market and borrower

function refreshAlkBorrowIndex(address market, address borrower, bool isVerified) external nonpayable

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

⤾ overrides RewardControlInterface.claimAlk

Claim all the ALK accrued by holder in all markets

function claimAlk(address holder) external nonpayable

Arguments

Name

Type

Description

holder

address

The address to claim ALK for

claimAlk

⤾ 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 nonpayable

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

function refreshMarketLiquidity() internal view
returns(struct ExponentialNoError.Exp[], struct ExponentialNoError.Exp)

Arguments

Name

Type

Description

refreshAlkSpeeds

Recalculate and update ALK speeds for all markets

function refreshAlkSpeeds() public nonpayable

Arguments

Name

Type

Description

updateAlkSupplyIndex

Accrue ALK to the market by updating the supply index

function updateAlkSupplyIndex(address market, bool isVerified) public nonpayable

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

function updateAlkBorrowIndex(address market, bool isVerified) public nonpayable

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]

function distributeSupplierAlk(address market, address supplier, bool isVerified) public nonpayable

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]

function distributeBorrowerAlk(address market, address borrower, bool isVerified) public nonpayable

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

function claimAlk(address holder, address[] markets, bool isVerified) internal nonpayable

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

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

getBlockNumber

Get the current block number

function getBlockNumber() public view
returns(uint256)

Returns

The current block number

Arguments

Name

Type

Description

getAlkAccrued

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

getAlkAddress

Get the address of the ALK token

function getAlkAddress() public view
returns(address)

Returns

The address of ALK token

Arguments

Name

Type

Description

getAlkemiEarnAddress

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

getMarketStats

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

getMarketTotalSupply

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

getMarketTotalBorrows

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

getSupplyBalance

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

getBorrowBalance

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

transferOwnership

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 onlyOwner

Arguments

Name

Type

Description

_newOwner

address

The address of the new owner

acceptOwnership

Accept the ownership of this contract by the new owner

function acceptOwnership() external nonpayable

Arguments

Name

Type

Description

addMarket

Add new market to the reward program

function addMarket(address market, bool isVerified) external nonpayable onlyOwner

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

function removeMarket(uint256 id, bool isVerified) external nonpayable onlyOwner

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

function setAlkAddress(address _alkAddress) external nonpayable onlyOwner

Arguments

Name

Type

Description

_alkAddress

address

The ALK token address

setAlkemiEarnVerifiedAddress

Set AlkemiEarnVerified contract address

function setAlkemiEarnVerifiedAddress(address _alkemiEarnVerified) external nonpayable onlyOwner

Arguments

Name

Type

Description

_alkemiEarnVerified

address

The AlkemiEarnVerified contract address

setAlkemiEarnPublicAddress

Set AlkemiEarnPublic contract address

function setAlkemiEarnPublicAddress(address _alkemiEarnPublic) external nonpayable onlyOwner

Arguments

Name

Type

Description

_alkemiEarnPublic

address

The AlkemiEarnVerified contract address

setAlkRate

Set ALK rate

function setAlkRate(uint256 _alkRate) external nonpayable onlyOwner

Arguments

Name

Type

Description

_alkRate

uint256

The ALK rate

getAlkRewards

Get latest ALK rewards

function getAlkRewards(address user) external view
returns(uint256)

Arguments

Name

Type

Description

user

address

the supplier/borrower

getSupplyAlkRewards

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

getBorrowAlkRewards

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

Last updated