Tag Archives: standards

ERC20 Token Design Mistakes vs ERC223 Token

The old ERC20 token standard have bugs and disadvantages resulting in thousands of ERC20 tokens to be lost annually. These design mistakes has been addressed in the new ERC223 token which is fully compatible with ERC20 wallets and exchanges. 

What is ERC?

ERC means Ethereum Request for Comments. It practically allows for smart contracts to be built on the Ethereum platform based on certain standards thus creating a common interface for all Ethereum tokens. Ethereum developers recommend that any Ethereum developer who wants to create a new token should follow this set of standards to ensure that their tokens are easily recognizable on both the Ethereum network and other third-party service providers such as crypto-wallets. These ERC20 tokens can be received, and sent just like any other cryptocurrency like Bitcoin, Litecoin and Ethereum.

ERC20 bugs

The ERC20 standard is programmed software and accordingly contains some bugs and logic errors. Two different ways to handle tokens were taken into account in the creation. On the one hand, tokens can be sent to another address. A smart contract is paid by using the “approve” and “transferFrom” functions.  Thereafter, the contract may be approved to allow the tokens to be withdrawn. Afterwards the token is filled or lifted by means of “transferFrom”.

When transferring tokens for a contract with “transferFrom” this transaction is basically valid. However, the contract does not recognize it by the user, resulting in the tokens not being loaded into your account. Normally, an emergency token function is stored in the exchange contract (decentralized). If this is not the case, the tokens can not be returned and are lost forever.

ERC20 will continue to be used

Most token based projects have used the original ERC20 token standard as it is with faults. This include even  well known projects.

At present many developers are still unaware of the design mistakes and bugs in the old ERC20 tokens standard so they continue to use it in new developments.

Can the ERC223 standard solve the problems?

ERC223 is a new token standard that seeks to address the design mistakes / errors of ERC20. These problems are:

  • ERC20 provides no programmatic interface to handle incoming transactions in smart contracts.
  • ERC20 handling smart contracts typically require you to trust them with all your funds in order to use them. This is unlike native ether, which has excellent support for trustless transactions.
  • Nothing prevents the user to send ERC20 tokens to a smart contract, such as an exchange. However, due to the inability to handle incoming transactions these sent tokens will not alter the state of the smart contract (such as balance on the exchange), and it will be impossible to retrieve them from the smart contract. Effectively, these tokens get burned resulting in multi millions of USD losses in ERC20 tokens. Because of the deflationary nature of cryptocurrencies this losses will continue to accumulate.

The main improvement of ERC223

  • On top of offering the same level convenience as ERC20 tokens, it also offers its holders protection against losing tokens by introducing a revert option or altogether blocking the transfer of tokens to random contracts. Tokens can no longer be sent to non supporting contracts with the ERC223 standard.
  • ERC223 allows to deposit tokens into a contract with a single transaction (function) which reduces the use of resources. This again reduce the cost and running time of the transaction to about half compared to that of the old ERC20 standard.

ERC223 is created to be compatible with existing blockchain infrastructure, such as wallets like Mist, Parity, MyEtherWallet and MetaMask, and blockchain explorers such as Etherscan and Ethplorer.

Geir Solem