Is there any specific way of identifying ERC-721, ERC-777, & ERC-223 contract events under the EVM, specifically under the eth.getTransactionReceipt() function?

I know there's a way for ERC-20 tokens by filtering for the Transfer keccak-256 hash:


A brute-force example I could use for CryptoKitties is also filtering for the 'DepositKittyAndMintToken' hash, yet obviously there are many more ERC-721 token events than just CryptoKitties:


I'm running a program that runs two loops: through each transactionHash under each block, and trying to separate all ERC-20, ERC-721, ERC-777, and ERC-223 token events, yet only have it working for ERC-20's.

Any help would be greatly appreciated, thanks!

  • A similar question here. May 9, 2020 at 14:02
  • Oh wow, this is great, thanks! The only discrepancy is I see ERC-20 events with a receipt.topics.length == 3 not 1, while ERC-721's are receipt.topics.length == 1. I just verified on my Geth archive node for a handful of ERC-20 & CryptoKitties transactions, and this appears to be the case.
    – keennay
    May 9, 2020 at 14:13
  • Then they are not standard ERC20 event by definition. May 9, 2020 at 14:26

1 Answer 1


...and just like that, came across this:


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.