ERC20Vote
The ERC20Vote
smart contract implements the ERC20 standard and ERC20Votes. It includes the following additions to standard ERC20 logic: - Ability to mint & burn tokens via the provided mint
& burn
functions. - Ownership of the contract, with the ability to restrict certain functions to only be called by the contract's owner. - Multicall capability to perform multiple actions atomically - Extension of ERC20 to support voting and delegation. - EIP 2612 compliance: See {ERC20-permit} method, which can be used to change an account's ERC20 allowance by presenting a message signed by the account.
Methods
DOMAIN_SEPARATOR
function DOMAIN_SEPARATOR() external view returns (bytes32)
See {IERC20Permit-DOMAIN_SEPARATOR}.
Returns
Name | Type | Description |
---|
_0 | bytes32 | undefined |
allowance
function allowance(address owner, address spender) external view returns (uint256)
See {IERC20-allowance}.
Parameters
Name | Type | Description |
---|
owner | address | undefined |
spender | address | undefined |
Returns
Name | Type | Description |
---|
_0 | uint256 | undefined |
approve
function approve(address spender, uint256 amount) external nonpayable returns (bool)
See {IERC20-approve}. NOTE: If amount
is the maximum uint256
, the allowance is not updated on transferFrom
. This is semantically equivalent to an infinite approval. Requirements: - spender
cannot be the zero address.
Parameters
Name | Type | Description |
---|
spender | address | undefined |
amount | uint256 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
balanceOf
function balanceOf(address account) external view returns (uint256)
See {IERC20-balanceOf}.
Parameters
Name | Type | Description |
---|
account | address | undefined |
Returns
Name | Type | Description |
---|
_0 | uint256 | undefined |
burn
function burn(uint256 _amount) external nonpayable
Lets an owner a given amount of their tokens.
Caller should own the _amount
of tokens.
Parameters
Name | Type | Description |
---|
_amount | uint256 | The number of tokens to burn. |
checkpoints
function checkpoints(address account, uint32 pos) external view returns (struct ERC20Votes.Checkpoint)
Get the pos
-th checkpoint for account
.
Parameters
Name | Type | Description |
---|
account | address | undefined |
pos | uint32 | undefined |
Returns
Name | Type | Description |
---|
_0 | ERC20Votes.Checkpoint | undefined |
contractURI
function contractURI() external view returns (string)
Returns the contract metadata URI.
Returns
Name | Type | Description |
---|
_0 | string | undefined |
decimals
function decimals() external view returns (uint8)
Returns the number of decimals used to get its user representation. For example, if decimals
equals 2
, a balance of 505
tokens should be displayed to a user as 5.05
(505 / 10 ** 2
). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for display purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.
Returns
Name | Type | Description |
---|
_0 | uint8 | undefined |
decreaseAllowance
function decreaseAllowance(address spender, uint256 subtractedValue) external nonpayable returns (bool)
Atomically decreases the allowance granted to spender
by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender
cannot be the zero address. - spender
must have allowance for the caller of at least subtractedValue
.
Parameters
Name | Type | Description |
---|
spender | address | undefined |
subtractedValue | uint256 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
delegate
function delegate(address delegatee) external nonpayable
Delegate votes from the sender to delegatee
.
Parameters
Name | Type | Description |
---|
delegatee | address | undefined |
delegateBySig
function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) external nonpayable
Delegates votes from signer to delegatee
Parameters
Name | Type | Description |
---|
delegatee | address | undefined |
nonce | uint256 | undefined |
expiry | uint256 | undefined |
v | uint8 | undefined |
r | bytes32 | undefined |
s | bytes32 | undefined |
delegates
function delegates(address account) external view returns (address)
Get the address account
is currently delegating to.
Parameters
Name | Type | Description |
---|
account | address | undefined |
Returns
Name | Type | Description |
---|
_0 | address | undefined |
getPastTotalSupply
function getPastTotalSupply(uint256 blockNumber) external view returns (uint256)
Retrieve the totalSupply
at the end of blockNumber
. Note, this value is the sum of all balances. It is but NOT the sum of all the delegated votes! Requirements: - blockNumber
must have been already mined
Parameters
Name | Type | Description |
---|
blockNumber | uint256 | undefined |
Returns
Name | Type | Description |
---|
_0 | uint256 | undefined |
getPastVotes
function getPastVotes(address account, uint256 blockNumber) external view returns (uint256)
Retrieve the number of votes for account
at the end of blockNumber
. Requirements: - blockNumber
must have been already mined
Parameters
Name | Type | Description |
---|
account | address | undefined |
blockNumber | uint256 | undefined |
Returns
Name | Type | Description |
---|
_0 | uint256 | undefined |
getVotes
function getVotes(address account) external view returns (uint256)
Gets the current votes balance for account
Parameters
Name | Type | Description |
---|
account | address | undefined |
Returns
Name | Type | Description |
---|
_0 | uint256 | undefined |
increaseAllowance
function increaseAllowance(address spender, uint256 addedValue) external nonpayable returns (bool)
Atomically increases the allowance granted to spender
by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender
cannot be the zero address.
Parameters
Name | Type | Description |
---|
spender | address | undefined |
addedValue | uint256 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
mintTo
function mintTo(address _to, uint256 _amount) external nonpayable
Lets an authorized address mint tokens to a recipient.
The logic in the _canMint
function determines whether the caller is authorized to mint tokens.
Parameters
Name | Type | Description |
---|
_to | address | The recipient of the tokens to mint. |
_amount | uint256 | Quantity of tokens to mint. |
multicall
function multicall(bytes[] data) external nonpayable returns (bytes[] results)
Receives and executes a batch of function calls on this contract.
Receives and executes a batch of function calls on this contract.
Parameters
Name | Type | Description |
---|
data | bytes[] | The bytes data that makes up the batch of function calls to execute. |
Returns
Name | Type | Description |
---|
results | bytes[] | The bytes data that makes up the result of the batch of function calls executed. |
name
function name() external view returns (string)
Returns the name of the token.
Returns
Name | Type | Description |
---|
_0 | string | undefined |
nonces
function nonces(address owner) external view returns (uint256)
See {IERC20Permit-nonces}.
Parameters
Name | Type | Description |
---|
owner | address | undefined |
Returns
Name | Type | Description |
---|
_0 | uint256 | undefined |
numCheckpoints
function numCheckpoints(address account) external view returns (uint32)
Get number of checkpoints for account
.
Parameters
Name | Type | Description |
---|
account | address | undefined |
Returns
Name | Type | Description |
---|
_0 | uint32 | undefined |
owner
function owner() external view returns (address)
Returns the owner of the contract.
Returns
Name | Type | Description |
---|
_0 | address | undefined |
permit
function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external nonpayable
See {IERC20Permit-permit}.
Parameters
Name | Type | Description |
---|
owner | address | undefined |
spender | address | undefined |
value | uint256 | undefined |
deadline | uint256 | undefined |
v | uint8 | undefined |
r | bytes32 | undefined |
s | bytes32 | undefined |
setContractURI
function setContractURI(string _uri) external nonpayable
Lets a contract admin set the URI for contract-level metadata.
Caller should be authorized to setup contractURI, e.g. contract admin. See {_canSetContractURI}. Emits {ContractURIUpdated Event}.
Parameters
Name | Type | Description |
---|
_uri | string | keccak256 hash of the role. e.g. keccak256("TRANSFER_ROLE") |
setOwner
function setOwner(address _newOwner) external nonpayable
Lets an authorized wallet set a new owner for the contract.
Parameters
Name | Type | Description |
---|
_newOwner | address | The address to set as the new owner of the contract. |
symbol
function symbol() external view returns (string)
Returns the symbol of the token, usually a shorter version of the name.
Returns
Name | Type | Description |
---|
_0 | string | undefined |
totalSupply
function totalSupply() external view returns (uint256)
See {IERC20-totalSupply}.
Returns
Name | Type | Description |
---|
_0 | uint256 | undefined |
transfer
function transfer(address to, uint256 amount) external nonpayable returns (bool)
See {IERC20-transfer}. Requirements: - to
cannot be the zero address. - the caller must have a balance of at least amount
.
Parameters
Name | Type | Description |
---|
to | address | undefined |
amount | uint256 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
transferFrom
function transferFrom(address from, address to, uint256 amount) external nonpayable returns (bool)
See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum uint256
. Requirements: - from
and to
cannot be the zero address. - from
must have a balance of at least amount
. - the caller must have allowance for from
's tokens of at least amount
.
Parameters
Name | Type | Description |
---|
from | address | undefined |
to | address | undefined |
amount | uint256 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
Events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Parameters
Name | Type | Description |
---|
owner indexed | address | undefined |
spender indexed | address | undefined |
value | uint256 | undefined |
ContractURIUpdated
event ContractURIUpdated(string prevURI, string newURI)
Parameters
Name | Type | Description |
---|
prevURI | string | undefined |
newURI | string | undefined |
DelegateChanged
event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate)
Parameters
Name | Type | Description |
---|
delegator indexed | address | undefined |
fromDelegate indexed | address | undefined |
toDelegate indexed | address | undefined |
DelegateVotesChanged
event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance)
Parameters
Name | Type | Description |
---|
delegate indexed | address | undefined |
previousBalance | uint256 | undefined |
newBalance | uint256 | undefined |
OwnerUpdated
event OwnerUpdated(address indexed prevOwner, address indexed newOwner)
Parameters
Name | Type | Description |
---|
prevOwner indexed | address | undefined |
newOwner indexed | address | undefined |
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Parameters
Name | Type | Description |
---|
from indexed | address | undefined |
to indexed | address | undefined |
value | uint256 | undefined |