Is there a list of improvements that we will have in ERC223?

Are there examples of contracts?

Is there a migration path for existing ERC20 tokens?

  • rstormf: I summarized the last answer for you. see if it's more digestible now.
    – Tesa
    Commented Jun 3, 2017 at 20:52
  • 1
    When will ERC 23 be ready for users?
    – pmu
    Commented Aug 1, 2017 at 19:53
  • @rstormsf -- only saw your Jan 10 comment to my answer today. See my April 19 response / comment directed to the person who edited my original post in 2018.
    – Tesa
    Commented Apr 19, 2019 at 4:38

3 Answers 3


3 Primary improvements with ERC223

  1. Eliminates the problem of lost tokens which happens during the transfer of ERC20 tokens to a contract (when people mistakenly use the instructions for sending tokens to a wallet). ERC223 allows users to send their tokens to either wallet or contract with the same function transfer, thereby eliminating the potential for confusion and lost tokens.
  2. Allows developers to handle incoming token transactions, and reject non-supported tokens (not possible with ERC20)
  3. Energy savings. The transfer of ERC223 tokens to a contract is a one step process rather than 2 step process (for ERC20), and this means 2 times less gas and no extra blockchain bloating.

Switching from ERC20 to ERC223

ERC223 tokens are backwards compatible with ERC20 tokens. It means that ERC223 supports every ERC20 functionality and contracts or services working with ERC20 tokens will work with ERC223 tokens correctly.

Sources: https://github.com/Dexaran/ERC23-tokens/tree/Recommended#erc23-token-standard (ERC23 and 223 are the same thing). To read the full discussion about ERC20 and ERC223, follow this link: https://github.com/ethereum/EIPs/issues/223

  • 1
    I read it, but I was looking for more consolidated answer that will summarize this thread
    – rstormsf
    Commented Jun 3, 2017 at 19:53
  • 1
    Why ERC23 and EIP223 - what's going on with the numbers here? I like you being inquisitive, join us at asc.ai - exactly your type of people. Commented Jun 27, 2017 at 14:41
  • 7
    @MichalStefanow - I am not familiar with the ERC / EIP number assignment protocol for Ethereum, but found a little clue on this reddit thread - bit.ly/2rXWpVP - where Nick Johnston said to Dexaran: "Please stop calling it ERC23. ERCs and EIPs are assigned numbers by the editors, and your proposal hasn't been assigned one yet; you can't just pick one that appears to be unused. If you want to give it a number, it should be 223, its issue number." For anyone here unfamiliar with ERC and EIP: ERC stands for Ethereum Request for Comments and EIP stands for Ethereum Improvement Proposal.
    – Tesa
    Commented Jun 27, 2017 at 15:01
  • There are number of ERC223 tokens that are not backwards compatible. @Tesa maybe you should update your answer. ERC223 require contracts to have fallback functions which breaks ERC20 compatibility
    – rstormsf
    Commented Jan 30, 2019 at 21:47
  • 1
    @maxkoryukov - Just now seeing the comment by rstormsf. I don't believe that the backward compatibility comment was in my original post. Did you add that when you edited? If so could you address the Jan 30 comment above? I have not been tracking what's happening with ERC223 for nearly two years, so I don't feel comfortable making edits to this post.
    – Tesa
    Commented Apr 19, 2019 at 4:36

Problems of ERC20 that ERC223 will solve:

  1. Impossibility of handling incoming transactions in receiver contract.
  2. Tokens could be sent to contract that is not designed to work with tokens without handling and potentially could be lost. At least $72000 are lost at the moment. This problem is described here.
  3. Token-transactions should match Ethereum ideology of uniformity. When a user needs to transfer his funds, he must always perform transfer. Doesn't matter is user depositing in contract or sending to an externally owned account.

ERC223 token transaction costs 2 times less than approve then transferFrom of original ERC20.


There is a very nice explanation on https://docs.google.com/document/d/1Feh5sP6oQL1-1NHi-X1dbgT3ch2WdhbXRevDN681Jv4

In case the doc goes bust, let me summarize here. Technically, there are two different ways to deposit ERC20 tokens to a contract: 1. transfer 2. approve + transferFrom

If you use the 1 step transfer function to a contract, the receiver contract can't reject/recognize the transaction. So, essentially the tokens get lost in a sink. Sending to a wallet using transfer is fine.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.