Skip to main content

ERC20Base

The ERC20Base smart contract implements the ERC20 standard. 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 - 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​

NameTypeDescription
_0bytes32undefined

allowance​

function allowance(address owner, address spender) external view returns (uint256)

See {IERC20-allowance}.

Parameters​

NameTypeDescription
owneraddressundefined
spenderaddressundefined

Returns​

NameTypeDescription
_0uint256undefined

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​

NameTypeDescription
spenderaddressundefined
amountuint256undefined

Returns​

NameTypeDescription
_0boolundefined

balanceOf​

function balanceOf(address account) external view returns (uint256)

See {IERC20-balanceOf}.

Parameters​

NameTypeDescription
accountaddressundefined

Returns​

NameTypeDescription
_0uint256undefined

burn​

function burn(uint256 _amount) external nonpayable

Lets an owner a given amount of their tokens.

Caller should own the _amount of tokens.

Parameters​

NameTypeDescription
_amountuint256The number of tokens to burn.

contractURI​

function contractURI() external view returns (string)

Returns the contract metadata URI.

Returns​

NameTypeDescription
_0stringundefined

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​

NameTypeDescription
_0uint8undefined

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​

NameTypeDescription
spenderaddressundefined
subtractedValueuint256undefined

Returns​

NameTypeDescription
_0boolundefined

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​

NameTypeDescription
spenderaddressundefined
addedValueuint256undefined

Returns​

NameTypeDescription
_0boolundefined

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​

NameTypeDescription
_toaddressThe recipient of the tokens to mint.
_amountuint256Quantity 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​

NameTypeDescription
databytes[]The bytes data that makes up the batch of function calls to execute.

Returns​

NameTypeDescription
resultsbytes[]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​

NameTypeDescription
_0stringundefined

nonces​

function nonces(address owner) external view returns (uint256)

See {IERC20Permit-nonces}.

Parameters​

NameTypeDescription
owneraddressundefined

Returns​

NameTypeDescription
_0uint256undefined

owner​

function owner() external view returns (address)

Returns the owner of the contract.

Returns​

NameTypeDescription
_0addressundefined

permit​

function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external nonpayable

See {IERC20Permit-permit}.

Parameters​

NameTypeDescription
owneraddressundefined
spenderaddressundefined
valueuint256undefined
deadlineuint256undefined
vuint8undefined
rbytes32undefined
sbytes32undefined

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​

NameTypeDescription
_uristringkeccak256 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​

NameTypeDescription
_newOwneraddressThe 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​

NameTypeDescription
_0stringundefined

totalSupply​

function totalSupply() external view returns (uint256)

See {IERC20-totalSupply}.

Returns​

NameTypeDescription
_0uint256undefined

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​

NameTypeDescription
toaddressundefined
amountuint256undefined

Returns​

NameTypeDescription
_0boolundefined

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​

NameTypeDescription
fromaddressundefined
toaddressundefined
amountuint256undefined

Returns​

NameTypeDescription
_0boolundefined

Events​

Approval​

event Approval(address indexed owner, address indexed spender, uint256 value)

Parameters​

NameTypeDescription
owner indexedaddressundefined
spender indexedaddressundefined
valueuint256undefined

ContractURIUpdated​

event ContractURIUpdated(string prevURI, string newURI)

Parameters​

NameTypeDescription
prevURIstringundefined
newURIstringundefined

OwnerUpdated​

event OwnerUpdated(address indexed prevOwner, address indexed newOwner)

Parameters​

NameTypeDescription
prevOwner indexedaddressundefined
newOwner indexedaddressundefined

Transfer​

event Transfer(address indexed from, address indexed to, uint256 value)

Parameters​

NameTypeDescription
from indexedaddressundefined
to indexedaddressundefined
valueuint256undefined