solana.nft Table: ez_nft_sales Type: Base Table
Description
This table provides a unified view of NFT sales across multiple Solana marketplaces, including Magic Eden, Hadeswap, Exchange Art, TensorSwap, and others. It consolidates sales data from various marketplace sources and enriches it with NFT metadata, USD pricing, and marketplace information. The table supports both standard NFTs and compressed NFTs (cNFTs), with USD prices available from December 16, 2021 onwards, enabling comprehensive cross-marketplace analysis.Key Use Cases
- Compare sales volumes and trends across different NFT marketplaces
- Monitor NFT price movements and market performance over time
- Analyze sales performance of specific NFT collections and individual assets
- Study buyer and seller patterns across different marketplaces and time periods
- Track creator royalties and marketplace fees from NFT sales
- Identify trending collections and high-value NFT transactions
Important Relationships
- Links to
nft.dim_nft_metadataviamintaddress to provide rich NFT context - Connects to
price.ez_prices_hourlyfor USD price conversion andprice.ez_asset_metadatafor currency symbols - References
core.fact_blocksandcore.fact_transactionsfor blockchain context - Includes specialized fields (
tree_authority,merkle_tree,leaf_index) for cNFT transactions
Commonly-used Fields
block_timestamp: Timestamp when the sale transaction was processed on Solanatx_id: Unique transaction identifier for the salebuyer_address: Address of the account that purchased the NFTseller_address: Address of the account that sold the NFTmint: The unique mint address of the NFT being soldprice: Sale amount in the native currency (typically SOL)price_usd: Sale amount converted to USD for cross-marketplace comparisonmarketplace: Name of the marketplace where the sale occurredcurrency_address: Address of the token used for paymentcurrency_symbol: Symbol of the payment token (e.g., SOL, USDC)is_compressed: Boolean indicating if the NFT is a compressed NFT (cNFT)nft_name: Human-readable name of the NFT from metadatanft_collection_name: Name of the collection the NFT belongs to
Sample Queries
Daily NFT marketplace volume and activity
Top NFT collections by volume
NFT flipping activity (bought and sold within short timeframe)
Columns
| Column Name | Data Type | Description |
|---|---|---|
| MARKETPLACE | TEXT | NFT Marketplace platform where transaction occured |
| MARKETPLACE_VERSION | TEXT | The version of the NFT marketplace protocol used for the transaction. This field identifies the specific version of the marketplace program that facilitated the NFT sale. |
- Data type: STRING (e.g., ‘v1’, ‘v2’, ‘v3’)
- Business context: Used to track protocol evolution, feature adoption, and user migration between marketplace versions.
- Analytics use cases: Marketplace upgrade impact analysis, version adoption trends, and protocol migration studies.
- Example: ‘v2’ | | BLOCK_TIMESTAMP | TIMESTAMP_NTZ | The timestamp (UTC) at which the block was
produced on the Solana blockchain. This field is recorded as a TIMESTAMP data type and represents
the precise moment the block was finalized and added to the chain. It is essential for time-series
analysis, block production monitoring, and aligning transaction and event data to specific points
in time. Used extensively for analytics involving block intervals, network activity trends, and
historical lookups. Format:
YYYY-MM-DD HH:MI:SS(UTC). | | BLOCK_ID | NUMBER | A unique identifier for the block in which this transaction was included on the Solana blockchain. Typically a sequential integer or hash, depending on the data source. Used to group transactions by block and analyze block-level activity.
- 123456789
- Supports block-level analytics, such as block production rate and transaction throughput.
- Useful for tracing transaction inclusion and block explorer integrations.
- All transactions with the same ‘block_id’ share the same ‘block_timestamp’. | | TX_ID | TEXT | The unique transaction signature (hash) for each transaction on the Solana blockchain. This field is a base58-encoded string, typically 88 characters in length, and serves as the primary identifier for transactions across all Solana data models. Used to join transaction data with related tables (blocks, events, transfers, logs, decoded instructions) and to trace the full lifecycle and effects of a transaction. Essential for transaction-level analytics, debugging, and cross-referencing with block explorers or Solana APIs.
5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw
- Enables precise tracking, auditing, and attribution of on-chain activity
- Used for linking transactions to events, logs, and protocol actions
- Critical for compliance, monitoring, and analytics workflows | | SUCCEEDED | BOOLEAN | Boolean flag indicating whether the transaction was successfully executed and confirmed on the Solana blockchain. A value of TRUE means the transaction was processed without errors; FALSE indicates failure due to program errors, insufficient funds, or other issues.
- true
- false
- Used to filter for successful transactions in analytics and reporting.
- Important for error analysis, user experience, and program debugging. | | INDEX | NUMBER | Location of the event within the instructions of a transaction | | INNER_INDEX | NUMBER | Location of the event within the inner instructions of a transaction | | PROGRAM_ID | TEXT | The unique public key (base58-encoded address) of a Solana program. This field identifies the on-chain program (smart contract) responsible for processing instructions, emitting events, or managing accounts. Used throughout Solana analytics models—including events, transactions, IDLs, and program activity tables—to join, filter, and analyze program-level data.
- “4Nd1mY…”
- “TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA”
- Used as a join key for program activity, deployments, events, and interface changes.
- Supports segmentation of activity by protocol, DEX, NFT marketplace, or other on-chain application. | | BUYER_ADDRESS | TEXT | The wallet address that purchased the NFT | | SELLER_ADDRESS | TEXT | The wallet address that sold the NFT | | MINT | TEXT | Unique address representing a specific token | | NFT_NAME | TEXT | The human-readable name of the NFT as specified in its metadata. This field provides a user-friendly identifier for the NFT that can be used for display, search, and analytics purposes.
- Data type: STRING (e.g., ‘Bored Ape #1234’, ‘CryptoPunk #5678’)
- Business context: Used for user experience, search, and discovery of NFTs within collections and across marketplaces.
- Analytics use cases: Collection curation, search optimization, and user-facing NFT listings.
- Example: ‘Bored Ape #1234’ | | PRICE | FLOAT | The amount of Solana the NFT was purchased for | | CURRENCY_ADDRESS | TEXT | The address of the token used to pay for the NFT transaction. This field identifies which cryptocurrency or token was used as payment, enabling analysis of payment preferences and market dynamics.
- Data type: STRING (Solana address, e.g., ‘So11111111111111111111111111111111111111112’ for SOL, ‘EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v’ for USDC)
- Business context: Used to identify the payment asset for NFT sales and mints, analyze payment trends, and support cross-token analytics.
- Analytics use cases: Payment token flow analysis, market share by token, cross-currency price comparisons, and filtering NFT sales by payment asset.
- Example: ‘So11111111111111111111111111111111111111112’ (SOL) | | CURRENCY_SYMBOL | TEXT | The symbol of the token used to pay for the NFT transaction. This field provides a human-readable identifier for the payment currency, making it easier to understand and analyze payment patterns.
- Data type: STRING (e.g., ‘SOL’, ‘USDC’, ‘USDT’)
- Business context: Used for user-friendly display, filtering, and grouping of NFT sales and mints by payment token.
- Analytics use cases: Market share by token symbol, user preference analysis, and reporting on payment trends.
- Example: ‘SOL’ | | PRICE_USD | FLOAT | The amount paid for the NFT converted to USD. This field provides a standardized value for cross-marketplace comparison and enables analysis of NFT valuations and market trends.
- Data type: FLOAT (e.g., 1000.50)
- Business context: Used to compare NFT prices across different tokens and marketplaces, and to analyze market value in a common currency.
- Analytics use cases: Price trend analysis, cross-marketplace comparisons, and USD-denominated sales reporting.
- Example: 1000.50 | | TREE_AUTHORITY | TEXT | The address that has authority to manage the merkle tree, inclding adding new leaves or updating the tree structure | | MERKLE_TREE | TEXT | The address of the merkle tree which contains the cNFT | | LEAF_INDEX | NUMBER | The position of the leaf within the merkle tree used to locate and verify the leaf’s data | | IS_COMPRESSED | BOOLEAN | Identifies if the NFT is a compressed NFT | | NFT_COLLECTION_NAME | TEXT | The name of the NFT collection that the NFT belongs to, as provided by Solscan. This field groups NFTs into logical collections and enables collection-level analytics and tracking.
- Data type: STRING (e.g., ‘Bored Ape Yacht Club’, ‘Okay Bears’)
- Business context: Used to organize NFTs, analyze collection performance, and support collection-level analytics.
- Analytics use cases: Collection trend analysis, rarity studies, and collection-based filtering.
- Example: ‘Okay Bears’ | | COLLECTION_ID | TEXT | The unique address identifier for the NFT collection. This field provides a blockchain-level identifier for grouping NFTs into collections and enables collection-level analytics and tracking.
- Data type: STRING (Solana address, e.g., ‘EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v’)
- Business context: Used for precise collection grouping, analytics, and to join with other collection-level data.
- Analytics use cases: Collection-level aggregation, cross-collection comparisons, and collection membership queries.
- Example: ‘EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v’ | | CREATORS | VARIANT | A JSON array containing the creator addresses and their associated royalty percentages for the NFT. This field tracks who created the NFT and what percentage of sales they receive as royalties.
-
Data type: ARRAY of STRUCTS (e.g.,
[{"address": "...", "share": 50}]) - Business context: Used for royalty attribution, creator analytics, and revenue distribution.
- Analytics use cases: Creator earnings analysis, royalty flow tracking, and multi-creator attribution studies.
-
Example:
[{"address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM", "share": 50}]| | AUTHORITY | TEXT | The address of the account that has authority over the NFT mint. This field identifies who can perform administrative actions on the NFT, such as minting additional editions or updating metadata. - Data type: STRING (Solana address, e.g., ‘9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM’)
- Business context: Used to track NFT governance, edition minting, and authority changes.
- Analytics use cases: Authority change tracking, edition minting analysis, and NFT governance studies.
- Example: ‘9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM’ | | METADATA | ARRAY | a block of json that describes the traits of an NFT | | IMAGE_URL | TEXT | URL that links to the image on the ipfs service | | METADATA_URI | TEXT | URL that links to the token metadata on the ipfs service | | EZ_NFT_SALES_ID | TEXT | A unique, stable identifier for each record in this table. The primary key (PK) ensures that every row is uniquely identifiable and supports efficient joins, lookups, and data integrity across models. The PK may be a natural key (such as a blockchain transaction hash) or a surrogate key generated from one or more fields, depending on the table’s structure and requirements. | | INSERTED_TIMESTAMP | TIMESTAMP_NTZ | The timestamp when this transaction record was first inserted into the analytics database. Used for data freshness tracking and incremental model logic. Format: YYYY-MM-DD HH:MI:SS. Not derived from the blockchain, but from the ETL process. | | MODIFIED_TIMESTAMP | TIMESTAMP_NTZ | The timestamp when this transaction record was last updated in the analytics database. Used for tracking updates and supporting incremental model logic. Format: YYYY-MM-DD HH:MI:SS. Not derived from the blockchain, but from the ETL process. |