The ERC721 standard says the following:

The onERC721Received function specifically works around old deployed contracts which may inadvertently return 1 (true) in certain circumstances even if they don't implement a function (see Solidity DelegateCallReturnValue bug). By returning and checking for a magic value, we are able to distinguish actual affirmative responses versus these vacuous trues.

This rationale says that there are certain circumstances where old contracts will inadvertently return 1 (true) even when they don't implement a function that is called.

The rationale gives the DelegateCallReturnValue bug as one of these circumstances. I would really like to know, what are the other circumstances?

In what circumstances will an old contract inadvertently return a wrong bool value when a method is called on it that does not exist?

  • I am citing research and notes from /chrisetha /axic and /arachnid. Hopefully they can provide more notes on the topic. – William Entriken Sep 19 '18 at 14:53

Your Answer

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

Browse other questions tagged or ask your own question.