Bug? Wrong 'value' values in NFT transfers

I was looking at historical data for the ‘Chill RX’ NFT using ‘Moralis Web3 API’.
And I get a lot of wrong ‘values’ back.
I assume the value should be the transfer price of a single token in a NTF collection.

An example:

I call https://deep-index.moralis.io/api/v2/nft/0xe7e07f9dff6b48eba32641c53816f25368297d22/transfers

I get 500 transfers. Good to know: Price on OpenSea for this NFT varies between 0,05 and 0,15 ether.

This is a summary table, with time, price in ether and the token ID of some transfers.

2022-04-04T09:42:51.000Z ; 1,323 ; 8252
2022-04-04T09:39:12.000Z ; 0,200 ; 6607
2022-04-04T09:37:20.000Z ; 0,120 ; 6346
2022-04-04T09:35:28.000Z ; 0,711 ; 7204
2022-04-04T09:35:28.000Z ; 0,711 ; 7475
2022-04-04T09:35:28.000Z ; 0,711 ; 8337
2022-04-04T09:35:28.000Z ; 0,711 ; 8399
2022-04-04T09:35:28.000Z ; 0,711 ; 8530
2022-04-04T09:35:28.000Z ; 0,711 ; 9004
2022-04-04T09:32:31.000Z ; 0,119 ; 8623
2022-04-04T09:28:32.000Z ; 0,120 ; 9800

The first token 8252 stands out with a value of 1,323. I check OpenSea:

And the token has indeed been sold at that time, but for 0,12 ether (from Expensive_JPEGS to 000000).

Sales of 6607 and 6346 are correct.

But then there is an array of NFT’s having the value 0,711 (7204, 7475, etc).
The time is correct, but the value is wrong again (sold for 0,118 and 0,119).

Making sure it is not my code, I checked the block (no 14518778) in which NFT 8252 is sold, in the online environment (https://admin.moralis.io/web3Api):
https://deep-index.moralis.io/api/v2/block/14518778/nft/transfers

This yields the same faulty value:

{
“block_number”: “14518778”,
“block_timestamp”: “2022-04-04T09:42:51.000Z”,
“block_hash”: “0xb5bf9135d0f2b5a8481c1b00952acaac389346545b86e290259d1e75eca577a4”,
“transaction_hash”: “0xff9d41a944eb6dbfa9ceb24a79a1f14e50b375668312294c21e71a55d76d2e66”,
“transaction_index”: 111,
“log_index”: 132,
“value”: “1323000000000000000”,
“contract_type”: “ERC721”,
“transaction_type”: “Single”,
“token_address”: “0xe7e07f9dff6b48eba32641c53816f25368297d22”,
“token_id”: “8252”,
“from_address”: “0x769d74371c83777ea32bc09a32eb619fc7865903”,
“to_address”: “0x76d0e0ab3a97bc4d07ae9d0b5030fe70148236ed”,
“amount”: “1”,
“verified”: 1,
“operator”: null
},

Looking at etherscan for this transaction:
https://etherscan.io/tx/0xff9d41a944eb6dbfa9ceb24a79a1f14e50b375668312294c21e71a55d76d2e66

It seems that 11 tokens in this collection have been transferred in one block, with 1.323 Ether being the total value of these all.

I love the service Moralis provides, but when I call for historical data, I expect these to be the transfer prices for single NFT tokens. Else the service is a bit unusable.

Is this a bug in the processing of Moralis?
Is there a way to work around this?

that value is the value for that transaction, and sometimes that value is not the value for a specific token id

Am I using the wrong call?
Is there a way to get the transferprice per token_id?

I don’t know of a way to get the price per token_id, this seems to be a complicated problem on the general case, sometimes multiple transactions could be involved in a transfer, sometimes an ERC20 token could be involved, sometimes multiple tokens are involved in the same transactions

in particular cases you can process the events from a transaction in order to extract more info

in particular cases you can process the events from a transaction in order to extract more info
That would be an idea.

I checked it… When I query a block, all I could find to ‘disqualify’ a value is when multiple transfers are present.
But still, then, I can’t extract a value. Only the total value for the transfer is registrered.

I guess that means it is impossible to track individual sales values per token, when they are gathered in a combined transfer on the blockchain?

That would be a bummer :face_with_raised_eyebrow:

sometimes it is possible, but it is not easy, and it could depend from marketplace to marketplace on how it is done

1 Like