Skip to content
/ ERC20 Public

this is an example of Creating a ready ERC-20 token

Notifications You must be signed in to change notification settings

Pat3ickI/ERC20

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ERC 20

Note
This document is better viewed at https://docs.openzeppelin.com/contracts/api/token/erc20

This set of interfaces, contracts, and utilities are all related to the ERC20 Token Standard.

Tip
For an overview of ERC20 tokens and a walk through on how to create a token contract read our ERC20 guide.

There are a few core contracts that implement the behavior specified in the EIP:

  • {IERC20}: the interface all ERC20 implementations should conform to.

  • {IERC20Metadata}: the extended ERC20 interface including the name, symbol and decimals functions.

  • {ERC20}: the implementation of the ERC20 interface, including the name, symbol and decimals optional standard extension to the base interface.

Additionally there are multiple custom extensions, including:

  • {ERC20Burnable}: destruction of own tokens.

  • {ERC20Capped}: enforcement of a cap to the total supply when minting tokens.

  • {ERC20Pausable}: ability to pause token transfers.

  • {ERC20Snapshot}: efficient storage of past token balances to be later queried at any point in time.

  • {ERC20Permit}: gasless approval of tokens (standardized as ERC2612).

  • {ERC20FlashMint}: token level support for flash loans through the minting and burning of ephemeral tokens (standardized as ERC3156).

  • {ERC20Votes}: support for voting and vote delegation.

  • {ERC20VotesComp}: support for voting and vote delegation (compatible with Compound’s token, with uint96 restrictions).

  • {ERC20Wrapper}: wrapper to create an ERC20 backed by another ERC20, with deposit and withdraw methods. Useful in conjunction with {ERC20Votes}.

  • {ERC20TokenizedVault}: tokenized vault that manages shares (represented as ERC20) that are backed by assets (another ERC20).

Finally, there are some utilities to interact with ERC20 contracts in various ways.

  • {SafeERC20}: a wrapper around the interface that eliminates the need to handle boolean return values.

  • {TokenTimelock}: hold tokens for a beneficiary until a specified time.

The following related EIPs are in draft status.

  • {ERC20Permit}

Note
This core set of contracts is designed to be unopinionated, allowing developers to access the internal functions in ERC20 (such as _mint) and expose them as external functions in the way they prefer. On the other hand, ERC20 Presets (such as {ERC20PresetMinterPauser}) are designed using opinionated patterns to provide developers with ready to use, deployable contracts.

Core

{{IERC20}}

{{IERC20Metadata}}

{{ERC20}}

Extensions

{{ERC20Burnable}}

{{ERC20Capped}}

{{ERC20Pausable}}

{{ERC20Snapshot}}

{{ERC20Votes}}

{{ERC20VotesComp}}

{{ERC20Wrapper}}

{{ERC20FlashMint}}

{{ERC20TokenizedVault}}

Draft EIPs

The following EIPs are still in Draft status. Due to their nature as drafts, the details of these contracts may change and we cannot guarantee their stability. Minor releases of OpenZeppelin Contracts may contain breaking changes for the contracts in this directory, which will be duly announced in the changelog. The EIPs included here are used by projects in production and this may make them less likely to change significantly.

{{ERC20Permit}}

Presets

These contracts are preconfigured combinations of the above features. They can be used through inheritance or as models to copy and paste their source code.

{{ERC20PresetMinterPauser}}

{{ERC20PresetFixedSupply}}

Utilities

{{SafeERC20}}

{{TokenTimelock}}

About

this is an example of Creating a ready ERC-20 token

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published