ERC20
Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning false
on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.
Methods
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 |
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 |
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 |
name
function name() external view returns (string)
Returns the name of the token.
Returns
Name | Type | Description |
---|
_0 | string | undefined |
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 |
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 |