My question can be rephrased as: how does https://etherscan.io/tokens-nft work?

Does they analyze every transaction data?

The NFT tokens listed there doesn't implement the exact same ABI, is there a way to dig "generic" information in the transaction data?


From the Etherscan support center:

Etherscan tracks all ERC-721 (https://etherscan.io/tokens-nft) compliant tokens as per the finalized standard at https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md with the following caveats

  1. It must emit at least one ERC-721 compliant transfer event which looks something like:

    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
  2. ERC-721 tokens can also contain additional metadata like images. To enable support of viewing these images on Etherscan, we will need to manually enable support for this on our end. Given the nature of images (size, loading times, potential copyright issues, etc) the option for enabling preview images will be evaluated on a case by case basis at our discretion. This however does not affect the tracking of all ERC-721 compliant tokens as we will still show the essential information such as the sender, receiver, tokenID and date/time of the transaction.

  3. To enable ERC-721 image viewing support on Etherscan we will require the following sent to https://etherscan.io/contactus :

    a. Project info such as your offcial website and token icons

    b. The API endpoint for retrieving the image url

    c. The average duration/time required for the image to be generated on the source server after the transaction has completed (i.e 5 minute, 30, minute, 1 hour, etc)

In addition to this data, it is important to note that Etherscan maintains it's own database of blockchain transactions, blockchain state, and token metadata. This is how it is able to make lists like "ERC-20 Top Tokens", "Top Accounts", etc...

Token creators work with Etherscan to be able to support their tokens, and any specialized functionality beyond the token standards. Furthermore, lots of contracts upload their full contract source code, which I am sure allows Etherscan to intelligently expose functions beyond the token standards.

  • 2
    Thanks, but technically how does this work? How can they find these "Transfer" events in the transaction data? (I'm quite new at smart contract development) Oct 2 '18 at 18:43
  • 1
    The Web3 JSON RPC exposed by Ethereum clients support querying and returning events. More likely, in the case of Etherscan, they probably just index everything on the blockchain which includes the events emitted by contracts. Oct 3 '18 at 11:51

To dig "generic" information in the transaction data, you may use more advanced blockchain explorers. For instance, c-hound.ai is quite similar to etherscan.io, but it is focused more on analyzing transaction data and providing visualized summaries of the analysis. Hopefully, this will help you retrieve the data you are looking for.


It gets this information from events:

var abi_ = [

    const Web3Eth = require('web3-eth')
    const API_KEY = "f3e2ba..."
    const URL = "wss://rinkeby.infura.io/ws/v3/" + API_KEY
    const web3Eth = new Web3Eth(Web3Eth.givenProvider || URL);
    const smartContractAddress = "0xab6a8c463d7fecd3ab65761769b7ccbb83ecb597"
    const contract = new web3Eth.Contract(abi_, smartContractAddress)

    contract.getPastEvents('Transfer', {
            fromBlock: 0,
            toBlock: 'latest'
        }, function(error, events){
                for(var i=0;i<events.length;i++){



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.