ERC-20 Standard
IERC20Metadata
IERC20Metadata.solInterface for IERC20Metadata Fungible Tokens
1interface IERC20Metadata is IERC20 { {2 function name() external view returns (string memory);3 function symbol() external view returns (string memory);4 function decimals() external view returns (uint8);5}IERC-20
IERC-20.solInterface for ERC-20 Fungible Tokens
1interface IERC20 {2 event Transfer(address indexed from, address indexed to, uint256 value);3 event Approval(address indexed owner, address indexed spender, uint256 value);4 function totalSupply() external view returns (uint256);5 function balanceOf(address account) external view returns (uint256);6 function transfer(address to, uint256 value) external returns (bool);7 function allowance(address owner, address spender) external view returns (uint256);8 function approve(address spender, uint256 value) external returns (bool);9 function transferFrom(address from, address to, uint256 value) external returns (bool);10}ERC-20 Functions
The different implementation correspond to the patterns (depending on where they have the supply)
ERC-20.solERC-20 Fungible Tokens
1interface IERC20 {2 ...3 function name() external view returns (string memory);4 function symbol() external view returns (string memory);5 function decimals() external view returns (uint8);6 function totalSupply() external view returns (uint256);7 function balanceOf(address account) external view returns (uint256);8 function transfer(address to, uint256 value) external returns (bool);9 function allowance(address owner, address spender) external view returns (uint256);10 function approve(address spender, uint256 value) external returns (bool);11 function transferFrom(address from, address to, uint256 value) external returns (bool);12 event Transfer(address indexed from, address indexed to, uint256 value);13 event Approval(address indexed owner, address indexed spender, uint256 value);14}ERC-20 Storage
ERC-20.solERC-20 Fungible Tokens
1interface IERC20 {2 string private _name;3 string private _symbol;4 uint256 private _totalSupply;5 mapping(address account => uint256) private _balances;6 mapping(address account => mapping(address spender => uint256)) private _allowances;7 ...8}ERC-20 Extensions
| ERC | Title | Description |
|---|---|---|
| ERC-7632 | Interfaces for Named Token | Enable tokens to have a string name and be able to convert between name and id. |
| ERC-223 | Token with transaction handling model | Token with transaction handling model designed to behave identical to native currency (ether) |
| ERC-7417 | Token Converter | Smart-contract service that converts token of one ERC version to another |
| ERC-7729 | Token with Metadata | An ERC-20 extension for tokens with metadata. |
| ERC-7196 | Simple token, Simplified ERC-20 | Designed for smart contract wallets, this removes the transferFrom, approve, and allowance functions from ERC-20 tokens. |
| ERC-6808 | Fungible Key Bound Token | An interface for Fungible Key Bound Tokens, also known as a FKBT. |
| ERC-5744 | Latent Fungible Token | An interface for tokens that become fungible after a period of time. |
| ERC-5727 | Semi-Fungible Soulbound Token | An interface for soulbound tokens, also known as badges or account-bound tokens, that can be both fungible and non-fungible. |
| ERC-3386 | ERC-721 and ERC-1155 to ERC-20 Wrapper | A standard interface for contracts that create generic ERC-20 tokens which derive from a pool of unique ERC-721/ERC-1155 tokens. |
| ERC-3525 | Semi-Fungible Token | Defines a specification where ERC-721 compatible tokens with the same SLOT and different IDs are fungible. |
| ERC-1633 | Re-Fungible Token Standard (RFT) | ERC-20 extension for proportional ownership of an ERC-721 token. |
| ERC-777 | Token Standard | This EIP defines standard interfaces and behaviors for token contracts. |