RewardToken

Git Source

Inherits: ContextUpgradeable, AccessControlDefaultAdminRulesUpgradeable, IERC20Errors, IERC20Metadata

The supply-side reward accounting portion of the protocol. A lender's balance is measured in two parts: a static balance and a dynamic "supply factor". Their true balance is the product of the two values. The dynamic portion is then able to be used to distribute interest accrued to the lender.

State Variables

ION

bytes32 public constant ION = keccak256("ION");

RewardTokenStorageLocation

bytes32 private constant RewardTokenStorageLocation = 0xdb3a0d63a7808d7d0422c40bb62354f42bff7602a547c329c1453dbcbeef4900;

EIP712_REVISION

bytes private constant EIP712_REVISION = bytes("1");

EIP712_DOMAIN

bytes32 private constant EIP712_DOMAIN =
    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)");

PERMIT_TYPEHASH

bytes32 public constant PERMIT_TYPEHASH =
    keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

Functions

_getRewardTokenStorage

_initialize

_burn

Parameters

Name
Type
Description

user

address

to burn tokens from

receiverOfUnderlying

address

to send underlying tokens to

amount

uint256

to burn

_burnNormalized

Parameters

Name
Type
Description

account

address

to decrease balance of

amount

uint256

of normalized tokens to burn

_mint

Parameters

Name
Type
Description

user

address

to mint tokens to

senderOfUnderlying

address

address to transfer underlying tokens from

amount

uint256

of reward tokens to mint

_mintNormalized

Parameters

Name
Type
Description

account

address

to increase balance of

amount

uint256

of normalized tokens to mint

_mintToTreasury

This function does not perform any rounding checks.

Parameters

Name
Type
Description

amount

uint256

of tokens to mint to treasury

approve

Parameters

Name
Type
Description

spender

address

to approve

amount

uint256

to approve

_approve

Parameters

Name
Type
Description

owner

address

of tokens

spender

address

of tokens

amount

uint256

to approve

_spendAllowance

Spends allowance

transfer

Can only be called by owner of the tokens

Parameters

Name
Type
Description

to

address

transfer to

amount

uint256

to transfer

transferFrom

For use with approve()

Parameters

Name
Type
Description

from

address

to transfer from

to

address

to transfer to

amount

uint256

to transfer

_transfer

permit

implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md

Parameters

Name
Type
Description

owner

address

The owner of the funds

spender

address

The spender

value

uint256

The amount

deadline

uint256

The deadline timestamp, type(uint256).max for max deadline

v

uint8

Signature param

r

bytes32

Signature param

s

bytes32

Signature param

allowance

Returns current allowance

Parameters

Name
Type
Description

owner

address

of tokens

spender

address

of tokens

nonces

_useNonce

Consumes a nonce. Returns the current value and increments nonce.

_setSupplyFactor

updateTreasury

Updates the treasury address

Parameters

Name
Type
Description

newTreasury

address

address of new treasury

underlying

Address of underlying asset

decimals

Decimals of the position asset

balanceOf

Current claim of the underlying token inclusive of interest to be accrued.

Parameters

Name
Type
Description

user

address

to get balance of

balanceOfUnaccrued

Current claim of the underlying token without accounting for interest to be accrued.

normalizedBalanceOf

Accounting is done in normalized balances

Parameters

Name
Type
Description

user

address

to get normalized balance of

name

Name of the position asset

symbol

Symbol of the position asset

treasury

Current treasury address

totalSupplyUnaccrued

Total claim of the underlying asset belonging to lenders not inclusive of the new interest to be accrued.

totalSupply

Total claim of the underlying asset belonging to lender inclusive of the new interest to be accrued.

normalizedTotalSupplyUnaccrued

normalizedTotalSupply

Normalized total supply.

supplyFactorUnaccrued

supplyFactor

Current supply factor

calculateRewardAndDebtDistribution

Events

MintToTreasury

TreasuryUpdate

Errors

InvalidBurnAmount

Cannot burn amount whose normalized value is less than zero.

InvalidMintAmount

Cannot mint amount whose normalized value is less than zero.

InvalidUnderlyingAddress

InvalidTreasuryAddress

InvalidSender

Indicates a failure with the token sender. Used in transfers.

Parameters

Name
Type
Description

sender

address

Address whose tokens are being transferred.

InvalidReceiver

Indicates a failure with the token receiver. Used in transfers.

Parameters

Name
Type
Description

receiver

address

Address to which tokens are being transferred.

SelfTransfer

Cannot transfer the token to address self

ERC2612ExpiredSignature

Signature cannot be submitted after deadline has passed. Designed to mitigate replay attacks.

ERC2612InvalidSigner

signer does not match the owner of the tokens. owner did not approve.

InsufficientBalance

Indicates an error related to the current balance of a sender. Used in transfers.

Parameters

Name
Type
Description

account

address

Address whose token balance is insufficient.

balance

uint256

Current balance for the interacting account.

needed

uint256

Minimum amount required to perform a transfer.

Structs

RewardTokenStorage