axelar-gmp-sdk-solidity

Solidity API

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[How to implement supply mechanisms].

We have followed general OpenZeppelin guidelines: functions revert instead of 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}._

balanceOf

mapping(address => uint256) balanceOf

Returns the amount of tokens owned by account.

allowance

mapping(address => mapping(address => uint256)) allowance

_Returns the remaining number of tokens that spender will be allowed to spend on behalf of owner through {transferFrom}. This is zero by default.

This value changes when {approve} or {transferFrom} are called._

totalSupply

uint256 totalSupply

Returns the amount of tokens in existence.

name

string name

symbol

string symbol

decimals

uint8 decimals

constructor

constructor(string name_, string symbol_, uint8 decimals_) public

Sets the values for {name}, {symbol}, and {decimals}.

transfer

function transfer(address recipient, uint256 amount) external virtual returns (bool)

_See {IERC20-transfer}.

Requirements:

approve

function approve(address spender, uint256 amount) external virtual 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:

transferFrom

function transferFrom(address sender, address recipient, uint256 amount) external virtual 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}.

Requirements:

increaseAllowance

function increaseAllowance(address spender, uint256 addedValue) external virtual 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:

decreaseAllowance

function decreaseAllowance(address spender, uint256 subtractedValue) external virtual 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:

_transfer

function _transfer(address sender, address recipient, uint256 amount) internal virtual

_Moves tokens amount from sender to recipient.

This is internal function is equivalent to {transfer}, and can be used to e.g. implement automatic token fees, slashing mechanisms, etc.

Emits a {Transfer} event.

Requirements:

_mint

function _mint(address account, uint256 amount) internal virtual

_Creates amount tokens and assigns them to account, increasing the total supply.

Emits a {Transfer} event with from set to the zero address.

Requirements:

_burn

function _burn(address account, uint256 amount) internal virtual

_Destroys amount tokens from account, reducing the total supply.

Emits a {Transfer} event with to set to the zero address.

Requirements:

_approve

function _approve(address owner, address spender, uint256 amount) internal virtual

_Sets amount as the allowance of spender over the owner s tokens.

This internal function is equivalent to approve, and can be used to e.g. set automatic allowances for certain subsystems, etc.

Emits an {Approval} event.

Requirements:

_beforeTokenTransfer

function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual

_Hook that is called before any transfer of tokens. This includes minting and burning.

Calling conditions:

To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]._