eRon Blockchain Documentation
eRon Blockchain holds various contracts standards, which you can find below.
ERC-20 Token Standards, Extensions and utils
There are a few core contracts that implement the behavior specified in the ERC20 token standard:
{IERC20}: the interface all ERC-20 implementations should conform to.
{IERC20Metadata}: the extended ERC-20 interface including the name, symbol and decimals functions.
{ERC20}: the implementation of the ERC-20 interface, including the name, symbol and decimals optional standard extension to the base interface.
Additionally there are multiple custom extensions, including:
{ERC20Permit}: gasless approval of tokens (standardized as ERC-2612).
{ERC20Burnable}: destruction of own tokens.
{ERC20Capped}: enforcement of a cap to the total supply when minting tokens.
{ERC20Pausable}: ability to pause token transfers.
{ERC20FlashMint}: token level support for flash loans through the minting and burning of ephemeral tokens (standardized as ERC-3156).
{ERC20Votes}: support for voting and vote delegation.
{ERC20Wrapper}: wrapper to create an ERC-20 backed by another ERC-20, with deposit and withdraw methods. Useful in conjunction with {ERC20Votes}.
{ERC1363}: support for calling the target of a transfer or approval, enabling code execution on the receiver within a single transaction.
{ERC4626}: tokenized vault that manages shares (represented as ERC-20) that are backed by assets (another ERC-20).
Finally, there are some utilities to interact with ERC-20 contracts in various ways:
{SafeERC20}: a wrapper around the interface that eliminates the need to handle boolean return values.
Other utilities that support ERC-20 assets can be found in codebase:
ERC-20 tokens can be timelocked (held tokens for a beneficiary until a specified time) or vested (released following a given schedule) using a {VestingWallet}.
ERC-20
ERC-20.sol contract
ERC-721 Token Standards, Extensions and utils
This set of interfaces, contracts, and utilities are all related to the ERC-721 Non-Fungible Token Standard.
The ERC specifies four interfaces:
{IERC721}: Core functionality required in all compliant implementation.
{IERC721Metadata}: Optional extension that adds name, symbol, and token URI, almost always included.
{IERC721Enumerable}: Optional extension that allows enumerating the tokens on chain, often not included since it requires large gas overhead.
{IERC721Receiver}: An interface that must be implemented by contracts if they want to accept tokens through safeTransferFrom.
{ERC721}: The core and metadata extensions, with a base URI mechanism.
{ERC721Enumerable}: The enumerable extension.
{ERC721Holder}: A bare bones implementation of the receiver interface.
Additionally there are a few of other extensions:
{ERC721Consecutive}: An implementation of ERC-2309 for minting batchs of tokens during construction, in accordance with ERC-721.
{ERC721URIStorage}: A more flexible but more expensive way of storing metadata.
{ERC721Votes}: Support for voting and vote delegation.
{ERC721Royalty}: A way to signal royalty information following ERC-2981.
{ERC721Pausable}: A primitive to pause contract operation.
{ERC721Burnable}: A way for token holders to burn their own tokens.
{ERC721Wrapper}: Wrapper to create an ERC-721 backed by another ERC-721, with deposit and withdraw methods. Useful in conjunction with {ERC721Votes}.
ERC-721
ERC721.sol contract
ERC-1155 Token Standards, Extensions and utils
This set of interfaces and contracts are all related to the ERC-1155 Multi Token Standard.
The ERC consists of three interfaces which fulfill different roles:
{IERC1155} is the mandatory interface.
{IERC1155MetadataURI} is the optional extension.
{IERC1155Receiver} that must be implemented by smart contracts in order to receive ERC-1155 token transfers
Additionally there are multiple custom extensions, including:
({ERC1155Pausable}) for designation of addresses that can pause token transfers for all users.
({ERC1155Burnable}) for destruction of own tokens.
{{ERC1155Supply}} that adds tracking of total supply per id.
{{ERC1155URIStorage}}
{{ERC1155Holder}} that will allow a contract to hold ERC-1155 tokens.