I was going through ERC223 and read that contracts which are supporting any erc223 token contract should maintain the list for them so that they can accept only those tokens.

Is that the correct understanding ?

If yes then why can't any contract which are supporting ERC223 can just accept all ERC223 tokens and if someone sents by mistake then provide the provision to withdraw those tokens like using

// Owner can transfer out any accidentally sent ERC20 tokens
// ------------------------------------------------------------------------
function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {
    return ERC20Interface(tokenAddress).transfer(owner, tokens);
  • I thnk I have understood the relevance of maintaining supporting tokens, This should be maintained so that service token should able to valuate the service fee .. if any such list wont be maintained then any one can transfer a shit coin or any erc20 token and avail the service for those tokens
    – CaptPython
    Apr 14, 2019 at 16:27

1 Answer 1


It would help to see what you are reading.

ERC223 uses a tokenfallback function. In some cases it might be acceptable to accept any token, any amount. Perhaps a general-purpose wallet.

In other cases it would make sense to reject everything except acceptable tokens in the correct amount, e.g. fees of some kind.

Both are valid use-cases so it makes sense for the acceptability concern to lie outside the token standard. If a contract wishes to accept, say, only a dapp token, then it would indeed maintain a list of (one) acceptable contract.

Hope it helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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