The overwhelming majority of ICOs are based on the ERC20 standard of Ethereum. We take a look at the contract and explain how it differs from other blockchain tokens like Colored Coins – and why ERC20 marked the breakthrough for blockchain tokens and opened the gates for ICOs.
If you look at Coinmarketcap’s list of the most valuable blockchain assets, you’ll find that 16 or the top 20 token are based on Ethereum. When you scroll down the list of the Top 100 tokens, you’ll confirm that; tokens which do not use Ethereum are more and more an exceptional case.
But, why? Why did Ethereum blazingly quickly became the standard for blockchain token – while people have developed and used token protocols for Bitcoin since 2013? The answer can be found in the ERC20 standard.
But before we talk about this remarkable software standard, we dig into how tokens have been created on blockchain prior to ERC20.
Omni, Counterparty, Colored Coins: Tokens Based on Bitcoin
The most hyped subject in current crypto markets is the initial coin offering (ICO). This means that you don’t create token or new coins by miners, but by selling them prior to investors. To do so, it is useful to have some token on a blockchain which behaves like a native blockchain currency like bitcoin or ether but is not created by miners and represent something else. ICOs are not the only but by far the most successful application of such tokens.
In 2013 the first concepts emerged how to bring token on Bitcoin’s blockchain; Mastercoin and Colored Coins. Today Mastercoin has transformed to Counterparty and Omni, while Colored Coins parted in several sub-protocols like Open Assets or Coinprism. Besides some minor differences, all these concepts have in common, that they use some techniques to inscribe token in a Bitcoin transaction. To do so, they usually use the opcode OP_Return, which allows adding bytes of data to a transaction.
An example for an Omni transaction can be found here, and an example for a Colored Coins transaction is there. To explore the script, you have to click on “show script and coinbase.”
By means of OP_Return, there have been several tokens written in the Bitcoin blockchain. For example, Tether uses Omni to transfer Euros, Dollar or gold on the Bitcoin blockchain. You can imagine it like somebody writes “I am a Euro” on a Dollar note. Some special wallets can read and decrypt this message.
Such tokens on Bitcoin are working to some extent. However, they share some disadvantages. Most serious might be that the tokens are not stored natively on the blockchain. They are just a message, attached to a transaction, and mostly just as the hash of the message to proof its authenticity. Other than the signature of a bitcoin transaction or the amount of transferred bitcoin, this message is not a native information of the blockchain. Like the letters on a screenshot are foreign particles in a word processing software and can’t be counted, copied, pasted, spell-checked and so on.
The resulting implication is that the Bitcoin network does not check the token transfers with the same diligence it checks Bitcoin transaction. The Bitcoin nodes and miners do not validate if the amount of tokens sent is backed by balances. They do not even notice if tokens are forged or double spent. Also, the nodes do not check if token are created rightfully, which means if they can be trailed back to a validated issuer.
Sure, these problems can be solved by protocols on top of Bitcoin. Special wallet software can validate the token with databases external to Bitcoin. They can follow the chain of token transfers to a central issuer or check the amount of sent Satoshi.
All this is possible and in use. However, these disadvantages are a major reason why there is no token standard, but several protocols, which provide different not-satisfying solutions for the same problems. It is also the reason, why it is some kind of hack to print the token in the blockchain, and, finally, why no popular Bitcoin wallet has implemented such token protocols, despite the fact they exist for more than three years. It is simple a dirty method to build and process blockchain tokens.
Why ERC20 makes a Difference
In late 2015, the Ethereum developers Fabian Vogelsteller and Vitalik Buterin published the ERC20 token standard; a “standard interface for tokens” on the Ethereum blockchain. It “provides basic functionality to transfer tokens, as well as allow tokens to be approved so they can be spent by another on-chain third party.” The intention is to “allow any tokens on Ethereum to be reused by other applications: from wallets to decentralized exchanges.”
The success of ERC20 can’t be denied. They are supported by nearly all Ethereum Wallets, be it clients like Parity or Geth, be it hardware wallets like Ledger and Trezor, or be it light clients like MyEtherWallet or Metamask. Hundreds of ERC20 token have been created, some more valuable than most other cryptocurrencies, and most Altcoin exchanges enable the trading of some ERC20 token. Without a doubt, the standard format has become one of the most successful software implementations of cryptocurrency. It became the winner of the token story Bitcoin never became.
To answer this question, you need to understand that technically ERC20 token have nearly nothing in common with Colored Coins or Omni token. With Ethereum’s virtual machine you can create complex smart contracts and enable wallets to interact with them. While you can imagine token on Bitcoin like money notes with something written on, ERC20 contracts are more like a bookkeeper on the blockchain.
An ERC20 contract keeps a book about every owner of the token. It defines, how many token exists, and it contains a list, which addresses own which amount of token. Here is an example, how Etherescan.io represents the ICONOMI token.
When you transfer ERC20 token to another address, you don’t write a transaction to this address, as you would do with a token on Bitcoin. Instead you instruct the ERC20 contract to change the list of owners. It eliminates the token you had and adds them to the new owner. You don’t interact with the receiver of the transaction, but only with the contract.
This difference is significant. It makes the token to a native part of the blockchain’s data structure. Every node in the Ethereum network checks, if a miner has correctly executed a contract. They validate, if the token contract keeps the correct balances, if transactions are processed correctly, and so on. Every single activity of an ERC20 token is validated natively from every peer of the network.
The peers don’t need to consult external databases; they don’t need to follow protocols on top of Ethereum to match values or to trail transactions. They just need to check the state, like they do with every other standard transaction. That’s why the integration of ERC20 token in wallets is easy and seamless.
How Do You Use an ERC20 Token?
It’s relatively easy to use an ERC20 token, actively and passively. Clients like Geth and Parity do even have preformulated ERC20 contracts, which makes it essentially as easy to build new token as it is to create a website with WordPress.
However, if you don’t understand the issue and Solidity, the language Ethereum contracts are usually written in, you are best off not trying to make your own token. It is not that hard, but it should be done with the help of an expert. Especially if some real money is involved.
For users, however, it is really easy to receive, store and transfer the token. Many wallets, for example, Ledger, Trezor, Jaxx or Exodus, support some selected popular token. You can use them like you use other cryptocurrencies. The Ethereum client Parity refers to a decentralized registry, in which some token contracts are registered. It checks every address of the user with these contracts, and if it has a token, it automatically shows it in the wallet with its own symbol.
But even if your token is not registered, Geth, Parity and even MyEtherWallet and MetaMask can easily integrate it. The reason is that every ERC20 contract listens to the same ABI. An ABI, short for Application Binary Interface, is an interface that enables wallets to interact with smart contracts. It describes the commands the contract can understand. Thanks to the standardization, clients can just contact contracts and test, if they react on the ERC20 ABI. If they so, the wallet is able to use the token.
It is very convenient to use ERC20 to build and process token on a blockchain. The last two years have impressively demonstrated the power of this: While blockchain token had nearly no impact before ERC20, their role in the cryptocurrency ecosystem exploded since Ethereum released the standard. The $2 billion which the ICO hype flushed into the budgets of startups, are mostly a result of the token standardization by ERC20.