Standard ERC20 token

  • (ERC20.sol)

View Source: openzeppelin-solidity/contracts/token/ERC20/ERC20.solโ€‹

โ†— Extends: IERC20 โ†˜ Derived Contracts: SecurityTokenโ€‹

ERC20

Implementation of the basic standard token. https://eips.ethereum.org/EIPS/eip-20 Originally based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.solโ€‹

  • This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for

    all accounts just by listening to said events. Note that this isn't required by the specification, and other

    compliant implementations may not do it.

Contract Members

Constants & Variables

mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowed;
uint256 private _totalSupply;

Functions

totalSupply

โคพ overrides IERC20.totalSupplyโ€‹

Total number of tokens in existence

function totalSupply() public view
returns(uint256)

Arguments

Name

Type

Description

balanceOf

โคพ overrides IERC20.balanceOfโ€‹

Gets the balance of the specified address.

function balanceOf(address owner) public view
returns(uint256)

Returns

A uint256 representing the amount owned by the passed address.

Arguments

Name

Type

Description

owner

address

The address to query the balance of.

allowance

โคพ overrides IERC20.allowanceโ€‹

Function to check the amount of tokens that an owner allowed to a spender.

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

Returns

A uint256 specifying the amount of tokens still available for the spender.

Arguments

Name

Type

Description

owner

address

address The address which owns the funds.

spender

address

address The address which will spend the funds.

transfer

โคพ overrides IERC20.transferโ€‹

โคฟ Overridden Implementation(s): SecurityToken.transferโ€‹

Transfer token to a specified address

function transfer(address to, uint256 value) public nonpayable
returns(bool)

Arguments

Name

Type

Description

to

address

The address to transfer to.

value

uint256

The amount to be transferred.

approve

โคพ overrides IERC20.approveโ€‹

Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729โ€‹

function approve(address spender, uint256 value) public nonpayable
returns(bool)

Arguments

Name

Type

Description

spender

address

The address which will spend the funds.

value

uint256

The amount of tokens to be spent.

transferFrom

โคพ overrides IERC20.transferFromโ€‹

โคฟ Overridden Implementation(s): SecurityToken.transferFromโ€‹

Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event.

function transferFrom(address from, address to, uint256 value) public nonpayable
returns(bool)

Arguments

Name

Type

Description

from

address

address The address which you want to send tokens from

to

address

address The address which you want to transfer to

value

uint256

uint256 the amount of tokens to be transferred

increaseAllowance

Increase the amount of tokens that an owner allowed to a spender. approve should be called when _allowed[msg.sender][spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.

function increaseAllowance(address spender, uint256 addedValue) public nonpayable
returns(bool)

Arguments

Name

Type

Description

spender

address

The address which will spend the funds.

addedValue

uint256

The amount of tokens to increase the allowance by.

decreaseAllowance

Decrease the amount of tokens that an owner allowed to a spender. approve should be called when _allowed[msg.sender][spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.

function decreaseAllowance(address spender, uint256 subtractedValue) public nonpayable
returns(bool)

Arguments

Name

Type

Description

spender

address

The address which will spend the funds.

subtractedValue

uint256

The amount of tokens to decrease the allowance by.

_transfer

Transfer token for a specified addresses

function _transfer(address from, address to, uint256 value) internal nonpayable

Arguments

Name

Type

Description

from

address

The address to transfer from.

to

address

The address to transfer to.

value

uint256

The amount to be transferred.

_mint

Internal function that mints an amount of the token and assigns it to an account. This encapsulates the modification of balances such that the proper events are emitted.

function _mint(address account, uint256 value) internal nonpayable

Arguments

Name

Type

Description

account

address

The account that will receive the created tokens.

value

uint256

The amount that will be created.

_burn

Internal function that burns an amount of the token of a given account.

function _burn(address account, uint256 value) internal nonpayable

Arguments

Name

Type

Description

account

address

The account whose tokens will be burnt.

value

uint256

The amount that will be burnt.

_approve

Approve an address to spend another addresses' tokens.

function _approve(address owner, address spender, uint256 value) internal nonpayable

Arguments

Name

Type

Description

owner

address

The address that owns the tokens.

spender

address

The address that will spend the tokens.

value

uint256

The number of tokens that can be spent.

_burnFrom

Internal function that burns an amount of the token of a given account, deducting from the sender's allowance for said account. Uses the internal burn function. Emits an Approval event (reflecting the reduced allowance).

function _burnFrom(address account, uint256 value) internal nonpayable

Arguments

Name

Type

Description

account

address

The account whose tokens will be burnt.

value

uint256

The amount that will be burnt.