task_categories:time-series-forecasting task_categories:text-classification task_categories:feature-extraction task_categories:text-generation task_categories:zero-shot-classification task_categories:text2text-generation task_categories:sentence-similarity task_categories:image-classification task_categories:image-to-text task_categories:text-to-image task_categories:text-retrieval size_categories:10M<n<100M language:en license:cc-by-nc-4.0 Non-fungible Tokens Crypto Web3 Art Multimodal Learning doi:10.57967/hf/1179 region:us
---
dataset_info:
  features:
  - name: num_sales
    dtype: int64
  - name: fees_seller
    dtype: float64
  - name: fees_opensea
    dtype: float64
  - name: fees_seller_usd
    dtype: float64
  - name: fees_opensea_usd
    dtype: float64
  - name: tx_timestamp
    dtype: string
  - name: price
    dtype: float64
  - name: gain
    dtype: float64
  - name: usd_price
    dtype: float64
  - name: usd_gain
    dtype: float64
  - name: token
    dtype: string
  - name: to_eth
    dtype: float64
  - name: to_usd
    dtype: float64
  - name: created_date
    dtype: string
  - name: chain
    dtype: string
  - name: token_type
    dtype: string
  - name: asset_contract_type
    dtype: string
  - name: asset_type
    dtype: string
  - name: payout_collection_address
    dtype: int64
  - name: from_account
    dtype: int64
  - name: to_account
    dtype: int64
  - name: seller_account
    dtype: int64
  - name: winner_account
    dtype: int64
  - name: contract_address
    dtype: int64
  - name: nft_image
    dtype: int64
  - name: collection_image
    dtype: int64
  - name: token_id
    dtype: int64
  - name: nft_name
    dtype: int64
  - name: nft_description
    dtype: int64
  - name: collection_name
    dtype: int64
  - name: collection_description
    dtype: int64
  splits:
  - name: train
    num_bytes: 21291348001
    num_examples: 70972143
  download_size: 6633664673
  dataset_size: 21291348001
size_categories:
- 10M<n<100M
license: cc-by-nc-4.0
task_categories:
- time-series-forecasting
- text-classification
- feature-extraction
- text-generation
- zero-shot-classification
- text2text-generation
- sentence-similarity
- image-classification
- image-to-text
- text-to-image
- text-retrieval
language:
- en
tags:
- Non-fungible Tokens
- Crypto
- Web3
- Art
- Multimodal Learning
pretty_name: NFT-70M_transactions
---

# Dataset Card for "NFT-70M_transactions"

## Dataset summary
The *NFT-70M_transactions* dataset is the largest and most up-to-date collection of Non-Fungible Tokens (NFT) transactions between 2021 and 2023 sourced from [OpenSea](https://opensea.io), the leading trading platform in the Web3 ecosystem.
With more than 70M transactions enriched with metadata, this dataset is conceived to support a wide range of tasks, ranging from sequential and transactional data processing/analysis to graph-based modeling of the complex relationships between traders. 
Besides, the availability of textual and image contents further amplifies the modeling capabilities and usage opportunities of this dataset, making it a unique and comprehensive multimodal source of information for delving into the NFT landscape.

This dataset can serve as a benchmark for various innovative and impactful tasks within the crypto landscape, such as projecting NFT prices or detecting fraudolent and wash trading activities.
Furthermore, the multimodal nature of the dataset fosters the development of classification models, as well as textual and visual generative models.

## Data anonymization
We point out that the collected NFT transactions and metadata from OpenSea are publicly distributed on blockchain. 
For our purposes of re-distribution, we are also committed to ensure non-disclosure of information that might lead to identifying the NFT creators, in order to be compliant with privacy-preserving requirements and to avoid violation of data protection regulations and of property rights. 
In this respect, we carried out three actions:
- Values of all variables describing non-sensitive information were kept in their original form;
- Values of all variables describing sensitive information were anonymized, in a one-way,  non-revertible mode;
- URLs of image data and textual contents (i.e., NFT images and their descriptions) were replaced by identifiers to numerical vectors that represent an encrypted representation (i.e., embeddings) of the image/text contents obtained via neural network models. Such embeddings are eventually provided in place of their original image and text data, 
  and can be found in the [**NFT-70M_image**](https://huggingface.co/datasets/MLNTeam-Unical/NFT-70M_image) and [**NFT-70M_text**](https://huggingface.co/datasets/MLNTeam-Unical/NFT-70M_text) supplementary datasets, respectively.


## Data Fields
| Variable                 | Type        | Description                                                                                               | Processing      | Notes                             |
|--------------------------|-------------|-----------------------------------------------------------------------------------------------------------|------------------|-----------------------------------|
| token_id                 | String      | The id of the NFT — this value is unique within the same collection                                      | Anonymized       | Original values were replaced by hash-codes |
| num_sales                | Integer     | A progressive integer indicating the number of successful transactions involving the NFT up to the current timestamp (cf. *tx_timestamp*)                | Original         | Not sensitive variable          |
| nft_name                 | Vector ID   | The name of the NFT                                                                                      | Anonymized       | Original values were encrypted via neural textual embedding |
| nft_description          | Vector ID   | The description of the NFT as provided by the creator                                                    | Anonymized       | Original values were encrypted via neural textual embedding |
| nft_image                | Vector ID   | The ID for accessing the NFT image vector                                  | Anonymized       | Original values were encrypted via neural visual embedding |
| collection_name          | Vector ID   | The ID for accessing the Collection name vector                                                           | Anonymized       | Original values were encrypted via neural textual embedding |
| collection_description   | Vector ID   | The ID for accessing the Collection description vector                                                    | Anonymized       | Original values were encrypted via neural textual embedding |
| collection_image         | Vector ID   | The ID for accessing the Collection image vector                                                           | Anonymized       | Original values were encrypted via neural visual embedding |
| fees_seller              | Float       | The absolute amount of fees the seller has gained from this transaction expressed in *token*                | Original         | Not sensitive variable                                  |
| fees_opensea             | Float       | The absolute amount of fees OpenSea has gained from this transaction expressed in *token*                  | Original         | Not sensitive variable                                  |
| fees_seller_usd          | Float       | The absolute amount of fees the seller has gained from this transaction expressed in US dollars (USD)    | Original         | Not sensitive variable                                  |
| fees_opensea_usd         | Float       | The absolute amount of fees OpenSea has gained from this transaction expressed in US dollars (USD)      | Original         |  Not sensitive variable                                 |
| payout_collection_address| String      | The wallet address where seller fees are deposited                                                        | Anonymized       | Original values were replaced by hash-codes |
| tx_timestamp             | String      | Timestamp of the transaction expressed in yyyy-mm-ddTHH:MM:SS                                              | Original         |  Not sensitive variable                                 |
| price                    | Float       | The price of the transaction expressed in token                                                            | Original         | Not sensitive variable                                  |
| gain                     | Float       | The gain after fees (i.e., gain = price - fees_opensea * price - fees_seller * price)                          | Original         | Not sensitive variable                                  |
| usd_price                | Float       | The price of the transaction expressed in US dollars (USD)                                                | Original         |  Not sensitive variable                                 |
| usd_gain                 | Float       | The difference between the price and the fees expressed in US dollars (USD)                                | Original         |  Not sensitive variable                                 |
| token                    | Categorical | The token type used to pay the transaction                                                                | Original         |  Not sensitive variable                                 |
| to_eth                   | Float       | The conversion rate to convert tokens into Ethereum at the current timestamp, such that eth = price * to_eth | Original         |   Not sensitive variable                                |
| to_usd                   | Float       | The conversion rate to convert tokens into US dollars (USD) at the current timestamp, such that usd = price * to_usd | Original         | Not sensitive variable                                  |
| from_account             | String      | The address that sends the payment (i.e., winner/buyer)                                                   | Anonymized       | Original values were replaced by hash-codes |
| to_account               | String      | The address that receives the payment (it often corresponds to the contract linked to the asset)         | Anonymized       | Original values were replaced by hash-codes |
| seller_account           | String      | The address of the NFT seller                                                                            | Anonymized       | Original values were replaced by hash-codes |
| winner_account           | String      | The address of the NFT buyer                                                                             | Anonymized       | Original values were replaced by hash-codes |
| contract_address         | String      | The contract address on the blockchain                                                                   | Anonymized       | Original values were replaced by hash-codes |
| created_date             | Timestamp   | The date of creation of the contract                                                                     | Original         |  Not sensitive variable                                 |
| chain                    | Categorical | The blockchain where the transaction occurs                                                              | Original         |   Not sensitive variable                                |
| token_type               | Categorical | The schema of the token, i.e., ERC721 or ERC1155                                                         | Original         |   Not sensitive variable                                |
| asset_contract_type      | Categorical | The asset typology, i.e., non-fungible or semi-fungible                                                   | Original         |  Not sensitive variable                                 |
| asset_type               | Categorical | Whether the asset was involved in a simple or bundle transaction                                          | Original         |  Not sensitive variable                                 |


 
## How to use
Data provided within this repository can be straightforwardly loaded via the *datasets* library as follows:

```python
from datasets import load_dataset
dataset = load_dataset("MLNTeam-Unical/NFT-70M_transactions")
```

Complementary data involving textual and visual embeddings can be integrated as follows:

```python
from datasets import load_dataset
import numpy as np


transactions_dataset=load_dataset("MLNTeam-Unical/NFT-70M_transactions")
image_dataset=load_dataset("MLNTeam-Unical/NFT-70M_image")
text_dataset=load_dataset("MLNTeam-Unical/NFT-70M_text")


# Mapping from image_id to the row_index within the image dataset
image_id2row_index={int(id):k for k,id in enumerate(image_dataset["train"]["id"])}

# Mapping from text_id to row_index within the text dataset
text_id2row_index={int(id):k for k,id in enumerate(text_dataset["train"]["id"])}


def get_image_embedding(image_id,image_id2row_index,image_dataset):
  # If the mapping contains the image, the embedding exists
  idx_emb=image_id2row_index.get(int(image_id),None)
  
  if idx_emb:
    # If the embedding exists, return it
    return np.array(image_dataset["train"].select([idx_emb])["emb"][0])
  else:
    return None
  
def get_text_embedding(text_id,text_id2row_index,text_dataset):
  # If the mapping contains the text, the embedding exists
  idx_emb=text_id2row_index.get(int(text_id),None)

  if idx_emb:
    # If the embedding exists, return it
    return np.array(text_dataset["train"].select([idx_emb])["emb"][0])
  else:
    return None

### USAGE EXAMPLE ###

# Select transaction_id
transaction_id=120

# Get the image_id (e.g., collection_image or nft_image)
id_image=transactions_dataset["train"].select([transaction_id])["collection_image"][0]

# Get the image
image_embedding=get_image_embedding(id_image,image_id2row_index,image_dataset)

# Get the text_id
id_text=transactions_dataset["train"].select([transaction_id])["collection_description"][0]

# Get the text
text_embedding=get_text_embedding(id_text,text_id2row_index,text_dataset)
```


## Ethical use of data and informed consent
This data repository is made available for research and informational purposes only. 

Any finding that might be drawn from the data provided within this repository should be intended to support decision-making regarding actions made on NFTs, and not to replace the human specialists. 

*The authors are not responsible for any issues related to trading failures based on the data provided within this repository.*

## Terms of Usage 
Please cite the following papers in any research product whose findings are based on the data provided within this repository:

- L. La Cava, D. Costa, A. Tagarelli: SONAR: Web-based Tool for Multimodal Exploration of Non-Fungible Token Inspiration Networks. In: Proc. ACM SIGIR 2023. Taipei, Taiwan, July 23-27 2023. DOI: https://doi.org/10.1145/3539618.3591821
- L. La Cava, D. Costa, A. Tagarelli: Visually Wired NFTs: Exploring the Role of Inspiration in Non-Fungible Tokens. CoRR abs/2303.17031 (2023). DOI: https://doi.org/10.48550/arXiv.2303.17031
- D. Costa, L. La Cava, A. Tagarelli: Show me your NFT and I tell you how it will perform: Multimodal representation learning for NFT selling price prediction. In: Proc. ACM WebConf 2023, pp. 1875-1885. Austin, TX, USA, 30 April 2023 – 4 May 2023. DOI: https://doi.org/10.1145/3543507.3583520

Data within this repository were fetched using the REST APIs provided by OpenSea. You should also acknowledge [OpenSea API]("https://docs.opensea.io/reference/api-overview). 

## Liability statement
The authors hereby declare that they are not responsible for any harmful or objectionable content that may be contained within the data provided within this repository. 
Users of the dataset are expected to exercise due diligence and responsibility when using the data, including but not limited to:
(i) Content Review: Users should review the dataset's contents carefully and assess its suitability for their intended purposes; (ii) Compliance: Users are responsible for ensuring that their use of the dataset complies with all applicable laws, regulations, and ethical standards; 
(iii) Data Processing: Users may need to apply data preprocessing, filtering, or other techniques to remove or address any objectionable or harmful content as needed.

The authors of this dataset disclaim any liability for the accuracy, completeness, or suitability of the data and shall not be held responsible for any consequences resulting from the use or misuse of the dataset. 

*By accessing and using this dataset, users acknowledge and accept this disclaimer.*