The nftTransfer
schema does not include any field indicating the type of transaction that it represents. This is a problem, for example when using the getNFTTransfers
endpoints to retrieve a list of NFT transfers.
The Moralis API usually reports transfers as having a value field that is equal to zero, so itâs easy to filter them out and keep only sales, simply by excluding all entries with a value of zero. However, some transfers have a value field thatâs not zero, and the nftTransfer
schema offers no other field to differentiate between different transaction types. OpenSea is filtering those out correctly and only showing them as transfers, however with Moralis those transfers look like sales, as again, thereâs no other fields available to distinguish between sales and transfers.
Here is an example of a transfer with a non-zero value [1], âTransaction Actionâ says only Transfer. And here is an example of a sales followed by a transfer [2], âTransaction Actionâ is set to Sale.
This missing field is a critical issue, because this transfer [1] will be miscategorized as a sale. And because it has a value low value of 0.005 ETH, including this entry in calculations of averages, medians, and so on, is going to skew the data so much that it will be unusable.
The solution is to add a transaction_type
field to the nftTransfer
schema that would indicate if the entry represents a sales or a transfer. Until this field is added to the API, the API cannot be trusted for anything serious.
Moralis is a great product, please fix this asap.
Thank you for reading.
[1] https://etherscan.io/tx/0xe34229ac15be2b801574adaabbe7105d48bf91260553c6ea0bd9127457fa2fd7
[2] https://etherscan.io/tx/0xf296fa324898655d07c6b328c89e7b1bf9eae2462029319f285f8a865590172a