https://twitter.com/lartnez/status/844473280287424512
- lartnez
Someone was wondering about ERC20. Developing smart contracts and learning more about this token standard I found some issues with ERC20 token usage. There are 2 different ways to transfer token:
Use approve and transferFrom.
Use transfer function.
If you will choose the wrong way you will lose all transferred tokens. Every token transfer is a call of token contract in fact. But you should NEVER transfer your tokens to a token contract or to another contract using transfer function. It will cause a loss of your tokens. I dont finally realize why are contract developers still using this token standard with no refund function implementation and I think we need to pay attention to this issue.
He searched four ERC20 token contracts on Ethereum blockchain and he assume all this tokens are lost:
https://etherscan.io/token/Golem?a=0xa74476443119a942de498590fe1f2454d7d4ac0d
43071 GNT in Golem contract ~ $1000
https://etherscan.io/token/REP?a=0x48c80f1f4d53d5951e5d5438b54cba84f29f32a5 103 REP in Augur contract ~ $600
https://etherscan.io/token/0xe0b7927c4af23765cb51314a0e0521a9645f0e2a?a=0xe0b7927c4af23765cb51314a0e0521a9645f0e2a 777 DGD in Digix DAO contract ~ $7500
https://etherscan.io/token/FirstBlood?a=0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc7 10100 1ST in FirstBlood contract ~ $883 I assume more than $10 000 are already lost!
They already proposed a possible solution here:https://github.com/ethereum/EIPs/issues/223
But you should be very careful using ERC20 tokens.