ERC-20 is a proposed and widely adopted standard for creating tokens on the Ethereum network. It's a set of rules implemented in a smart contract that is deployed on the Ethereum network. Once deployed, anyone with an Ethereum wallet can interact with token's smart contract to send and receive tokens. Each ERC-20 token has it's own smart contract which keeps track of all transactions of that specific token.
All ERC-20 tokens are deployed on Ethereum network, so you'll need an Ethereum wallet to be able to send and receive ERC-20 tokens. Almost all Ethereum wallets have support for ERC-20 tokens, and selecting a wallet suitable for your device is covered in our Ethereum wallets blog post. To receive ERC-20 tokens you'll need an Ethereum address that can store both Ether as well as any number of ERC-20 tokens. Ethereum addresses are managed in your wallet app, and you can create unlimited number of addresses. To receive tokens you only need to provide your address to a sender. Sending them is as easy as sending ETH - just paste the recipient address and the amount of tokens you want to send and hit send button.
Standard specifies interface with 6 functions and 2 events, but implementation of functions is left out from the specs.
Interface of the functions in Solidity code is the following:
totalSupply() public view returns (uint256 totalSupply)- get the total token supply
balanceOf(address _owner) public view returns (uint256 balance)- get the balance of account with address _owner
transfer(address _to, uint256 _value) public returns (bool success)- send _value amount of tokens to address _to
transferFrom(address _from, address _to, uint256 _value) public returns (bool success)- send _value amount of tokens from address _from to address _to
approve(address _spender, uint256 _value) public returns (bool success)- allow _spender to withdraw from your account, multiple times, up to the _value amount
allowance(address _owner, address _spender) public view returns (uint256 remaining)- returns the amount which _spender is still allowed to withdraw from _owner
Events (in Solidity code) are defined:
Transfer(address indexed _from, address indexed _to, uint256 _value)- triggered when tokens are transferred
Approval(address indexed _owner, address indexed _spender, uint256 _value)- triggered when approve function is called.
ERC-20 tokens are very popular and thousands of different tokens have already been deployed to the Ethereum network. Together, the value of all ERC-20 tokens is in the billions of US Dollars. Some of the largest tokens in use today are:
As you can see from the list, ERC-20 tokens have a wide variety of applications and usage.
Generating your own Ethereum tokens consist of implementing an ERC20-compliant smart contract and deploying it on the Ethereum network. There are countless tutorials that cover token generation, however they require programming skills with deep understanding how Ethereum blockchain works.
If you want to generate your own ERC-20 token, we have created a tool that will enable you to deploy your own token in a few minutes, without coding skills. Using our tool, you can define the name and symbol of the token, as well as initial supply. You'll need a Web3-enabled Ethereum wallet to complete the process. Make sure to top up your wallet with enough funds to pay for our service and mining fees. Just head over to our mint page and complete a simple form, and you'll be starting your cryptocurrency in no time. For sending and receiving ERC-20 tokens, check out adding your custom ERC token to metamask post.
Here's an example of a token created with our tool called Merkle Blue Token. Notice how Etherscan recognized standard ERC-20 contract and tagged the smart contract with ERC-20 token. You can see the name of the token is set to 'Merkle Blue Token' with a ticker symbol 'MBT' and initial supply of one million.
If you need your token verified by etherscan, please note that by generating a token using our service, smart contracts are auto-verified. Learn more on Solidity code verification.
Here's a direct link to the token generation tool: