Ethereum is perhaps the second most influential Blockchain in the world. At least, in its market capitalization, it has tended to occupy the second place in the world rankings.
Bitcoin is number one, period! Ethereum, however, is far beyond simply being a “second” option. Ethereum is infinitely different from Bitcoin in its nature. Ethereum’s market proposal and its use cases are even incomparable to Bitcoin’s. Ethereum is a number one too. Bitcoin has its own Blockchain originally created for the purpose of running one single application: “Bitcoin”. Bitcoin established an open monetary system and the highest levels of security through a powerful consensus mechanism. This comes hand by hand with the generation a unit of account, which is also called “Bitcoin” (BTC). Bitcoin is mainly a maximum security borderless currency system. Ethereum, on the other hand, specializes in something almost opposite: serving as a global supercomputer. We need to have this clear, in order to approach the questions of “what is an Ethereum standard?” and “what are the old ERC20 and the new ERC777 standards?”
As a supercomputer, Ethereum is made to host many types of programs and to service an infinite number of Apps. In essence, Ethereum exists to host organizations: companies, banks, schools or even governments. Another wonder that can be created in Ethereum are the famous “tokens”. A token is more or less like a mileage system – such as an airline’s mileage programs where miles work like an internal currency. They can be used to purchase products at the airline or in some selected stores. In itself, at the level of code, a token is something similar to a any digital coin. Both, a digital coin and a token, are computational data. However, a token presents a difference: it is saved and handled through a computer program that runs on top of a Blockchain that is fueled by the main coin of this Blockchain. The token does not have its own Blockchain and usually depends on the main coin of its Blockchain. In spite of this, actually, a token looks and feels just like any cryptocurrency.
At this time, the reader of this article might be thinking “Yes! I know what a token is, because some of the cryptocurrencies that I am holding, are tokens, particularly ERC20 tokens.” Likewise, it is almost certain that you must be remembering at this moment that, in order to move your ERC20 tokens, you always use an Ethereum wallet. By the way, something you will not have overlooked is that, every time you use these tokens to make a payment, you must pay a commission for the transaction and this commission can not be paid with your own tokens.
You must use the main currency of your Blockchain to pay commissions. In the case of Ethereum, the currency you use to pay the transaction fee is called Ether. In fact, by now, it should be clear that an essential difference between a “coin” and a “token” is that a coin operates as the main currency of a Blockchain. A coin fuels all the use cases of a Blockchain and also fuels transactions executed by all token contracts hosted by the Blockchain. A token, on the other hand, usually depends on the coin. If you have experience with wallets and all this technology, then, you are ready to learn what is the difference between the traditional ERC20 tokens and the new ERC777 tokens, and what advantages the new standard brings.
Before comparing or contrasting the two standards, in order to offer complete educational information, it is convenient to first explain what a “standard” is within the Ethereum Network. By reading the title, we can guess that ERC20 is an old standard and that ERC777 is a brand new standard, hopefully a revolutionary one. Nevertheless, what is exactly a “standard” in these cases? Let’s establish a simple and clear definition that is useful for many cases: a standard is a community agreement on a defined set of very specific functions for a type of computer program that is implemented on the Blockchain.
Here, the key concept is “set of functions”. A computer program – those stored inside our PCs and phones, as well as those programs that are stored in the Blockchain – can have an infinity of types of functions. Each program can have whatever functions the developers want to add to it! This is a problem for a token. If each token has a different set of functions, creating wallets for each token would become near to impossible. Creating software to use each token would consume too much time, energy and money. Also, it would terribly hard for Exchanges to integrate each token.
So, in order to be competitive in an already complex market, communities of developers create standards. A standard is a predefined set of functions that a program must have. If you create a new program and you comply with the standard, you can use all the technology that exists for this particular set of rules, like wallets, online payment systems, connection to exchanges, etc. Therefore, a standard makes it easy for everyone to create these programs by imposing a minimum set of specific functions that the program must include. The standard also includes specifications on the very names of the functions. In our case, the programs will be written on the Blockchain and are generically called “Smart Contracts”. Each token is deployed separately on top of the Blockchain as a different Smart Contract.
Basically an ERC20 token is a Smart Contract containing these basic functions: TotalSupply(), BalanceOf(), Transfer(), TransferFrom(), Approve() and Allowance(). You can see that each function has a name that suggests what it does, and also a pair of parentheses. In computer code, usually, functions include these parenthesis. As you can see, this is a small set of functions. These are the functions that define Ethereum’s ERC20 standard. If an ERC20 type token is created without any of these functions, the token may not be able to be used in Ethereum’s wallets, and exchanges will not accept it, because exchanges can not accept tokens that do not respect the community-approved standard. As you might guess by the names, these six functions of the ERC20 standard are used to perform transactions and to verify account data.
ERC777 standard includes these functions, but, it goes a lot further and implements some very innovative features. ERC777 implements an extensive range of transaction-handling mechanisms that ERC20 users cannot enjoy. One of them is the inclusion of the same kind of function Ether adds to a send-transaction, the “data” function: a function that enables the attachments of useful information to each send-transaction together with the usual data of destination and amount. The Smart Contract of an ERC20 token, when executing a send-transaction, can only print in the Blockchain the critical data associated to the beneficiary: withdrawal address and withdrawal amount. The sender can not add details about the transaction. This makes it inconvenient for some users who would like to add extra data. A store or a remittance service, for example, might want to add details to each payment in order to keep critical transaction records.
One more feature of ERC777 is the implementation of the revolutionary paradigm of “full control” for the holder in the form of a modern option that has never existed before: rejecting incoming deposits. In the past, the incapacity that an address holder had to avoid receiving money or assets, has been one characteristic of all Ethereum tokens. And many people have seen this as a disadvantage. A person could even go through psychological discomfort because of some sorts of incoming transactions. People prefer to have the right to decide if there is an address from where they do not want to receive money or assets. With ERC777, one can register addresses from where one does not want to accept incoming transactions. This represents a big step towards empowerment and security.
Another feature that is unique in ERC777 is the special option through which an autonomous smart contract can be in charge of transactions. Through the implementation of a program called an “operator”, one can have automatized functions managing periodic transactions for an account. The operator is code that is executed in an automatic way without the constant vigilance of humans. Operators can manage an account by executing regular payments according to preprogrammed specific instructions from an account holder, and take care of transactions while keeping maximum level of security. An operator can be programmed to pay monthly bills or to fill one’s pocket account when it goes empty. Businesses might find this feature highly useful.
Another crucial feature of this novel type of Smart Contract is backwards compatibility with the old ERC20 standard. This means that all wallets and exchanges who work with ERC20 tokens will experiment no problem at all to adopt and manage ERC777 tokens. If there is a property of the ERC777 standard that makes it the first real candidate to quickly replace the ERC20, it is that the 777 standard contains all the same functions of ERC20. This means that it can operate as an ERC20 or as an ERC777 depending on the the convenience of the user. If you have a wallet or an App that works with ERC20 tokens, from that same software, you can manage your new ERC777 tokens. Therefore, exchanges will not have special problems to list ERC777 tokens.
There is an inherited property that the ERC777 standard has and that is considered one of the great super powers that ERC777 tokens exhibit: the property of recognizing Smart Contracts that are incapable of handling tokens. If a user has never suffered the horrible experience of losing money in a Smart Contract, then, perhaps he/she fails to perceive the importance of this feature. However, the many token users who have lost their money in Smart Contracts will receive this news happily. Many Smart Contracts are not properly programmed to handle tokens. So, if someone sends a token against the address of the contract, the money will get locked in the contract and become unusable forever. This has happened, for example, on some decentralized exchanges or on DAOs. ERC777 can be programmed to recognize contracts where one might lose tokens, and to prevent sending money to these contracts.
Next is updatability. This is one of the most noticeable and important features of ERC777. Updatability is not a function. However it is equally or valuable to a function. To be precise, this is not even a native feature of ERC777 (you import it from other standards). There is no code in ERC777 that looks like “Updatability()”. Updatability is a special capacity that ERC777 has: it can modify or add code to its contract. This means ERC777 tokens’ functions are not unmodifiable. The standard allows improvements to the code: scalability. In the world of software, it is well known that you do not want to have totally immutable code, because the future always brings new developments and new ideas. The code of an ERC20 token cannot be updated. If you want to introduce improvement to your ERC20 Smart Contract, you need to create a new token and conduct a swap, but swaps are extremely troublesome and expensive.
You can upgrade an ERC777 token if you need to do so in the future. This makes the standard a lot more useful and reliable. Nevertheless, on the property of updatability — or upgradability —, it is crucial to understand that not 100% of the code in an ERC777 token is upgradable. One can have fixed functions and, of course, data is fixed too. So, for example, if you have a token with a predetermined maximum supply, you can program the supply to be totally unalterable just like in the case of any other ERC20 token. One example that will be available very soon in Ethereum is the cryptocurrency called “CALL token”. This is the first token created under the ERC777 standard. It had been developed by the organization “Global Crypto Alliance” (GCA).
GCA indicates that “the maximum number of CALL tokens that will ever exist is 777 million tokens and, as it can be verified in the Blockchain, the number is humanly impossible to alter”. GCA developers explain that they are considering to add updatability to CALL: “CALL token may implement this distinguished advancement of the updatability of its functions from the ERC644 standard. Thanks to this extraordinary characteristic inherited from the ERC644 specifications, CALL developers will be able to apply updates to our smart contract any time in the near or distant future without the need to perform risky swaps anytime a new improvement becomes necessary or recommendable.” GCA also stresses that “one of the highly valuable aspects of Blockchain technologies is immutability of data and that ERC777 respects this principle”. You can add some new convenient function to an ERC777 contract. But you could never modify data stored on the Blockchain.
In comparison to ERC20, then, ERC777 offers a lot more options at the level of functionality, security and scalability: you can add data to your transactions; operators can manage transactions for you; you can reject incoming transactions; you enjoy absolute compatibility with ERC20 client software; you don’t worry about getting your money locked in a Smart Contract; and you don’t need to be anxious about swaps taking place frequently. Jordi Baylina, Jacques Dafflon, and Thomas Shababi are the three scientists who have developed and proposed to Ethereum community this ERC777 standard. Their efforts represent a revolutionary step for Ethereum and for a whole new generation of tokens. As they have announced, this standard is available for use probably from Q3 2019. It is expected that many ERC20 contracts will feel attracted to swapping to ERC20 and that many new projects will prefer to chose ERC777 instead of ERC20 from now on.