> ## Documentation Index
> Fetch the complete documentation index at: https://docs.allium.so/llms.txt
> Use this file to discover all available pages before exploring further.

# NFT Wash-Trading Flags Schema Update

> Schema update for polygon.nfts.trades_with_wash_trading_flags and solana.nfts.trades_with_wash_trading_flags. The _v2 tables let you preview and test the new schema before the cutover on June 19, 2026.

<Warning>
  **Important**: On **June 19, 2026**, `polygon.nfts.trades_with_wash_trading_flags` and `solana.nfts.trades_with_wash_trading_flags` schemas will be updated to a tighter column set. The `_v2` tables are available now as a preview — test your queries against them before the cutover.
</Warning>

## Overview

`polygon.nfts.trades_with_wash_trading_flags` and `solana.nfts.trades_with_wash_trading_flags` are receiving a schema update. The new schema retains the columns most queries use — token addresses, buyer/seller addresses, USD prices, fees, marketplace, and block info all map 1:1. The aggregate `WASH_TRADING_SCORE` and `WASH_TRADING_LEVEL` columns are preserved. Several per-trade boolean signal flag columns are being removed.

To make this easy to validate, the new schema is already live in parallel under the `_v2` tables. You can run your existing queries against `_v2` today to verify they continue to work. On June 19, the canonical (no-suffix) tables adopt the same schema, and the `_v2` aliases are retired.

## Summary

| Chain   | Canonical table (schema changing)             | Preview today                                    |
| ------- | --------------------------------------------- | ------------------------------------------------ |
| polygon | `polygon.nfts.trades_with_wash_trading_flags` | `polygon.nfts.trades_with_wash_trading_flags_v2` |
| solana  | `solana.nfts.trades_with_wash_trading_flags`  | `solana.nfts.trades_with_wash_trading_flags_v2`  |

## Schema changes

<AccordionGroup>
  <Accordion title="Polygon — current (46 cols) vs new (35 cols)">
    Columns retained in the new schema:

    * Trade identity: `TOKEN_ADDRESS`, `TOKEN_ID`, `TOKEN_NAME`, `TOKEN_SYMBOL`, `TOKEN_STANDARD`, `ITEM_QUANTITY`
    * Parties: `BUYER_ADDRESS`, `SELLER_ADDRESS`
    * Marketplace: `MARKETPLACE`, `PROTOCOL`, `ORDER_MATCH_TYPE`, `TRADE_TYPE`, `AGGREGATOR_NAME`, `AGGREGATOR_ADDRESS`
    * Pricing: `RAW_PRICE`, `PRICE`, `USD_PRICE`, `CURRENCY_ADDRESS`, `CURRENCY_SYMBOL`
    * Fees: `AGG_FEES`, `BUYER_FEES`, `SELLER_FEES`
    * Block info: `BLOCK_TIMESTAMP`, `BLOCK_NUMBER`, `BLOCK_HASH`, `TRANSACTION_HASH`, `UNIQUE_ID`
    * Wash-trading aggregate: `WASH_TRADING_SCORE`, `WASH_TRADING_LEVEL`
    * Extra fields: `EXTRA_FIELDS`, `_HELPER_NFT_TOKENS__UPDATED_AT`

    Columns being removed (per-trade boolean signal flags, 11 total):

    * `BUYER_BIRTH_FUNDING_WALLET`, `SELLER_BIRTH_FUNDING_WALLET`
    * `WALLETS_FIRST_FUNDED_EACH_OTHER`, `WALLETS_FIRST_FUNDED_BY_SAME_WALLET`
    * `NFT_TRADED_BACK_N_FORTH`, `BUYER_ADDRESS_EQUALS_SELLER_ADDRESS`
    * `BUYER_TRADED_SAME_NFT_MULTIPLE_TIMES`, `COUNT_SAME_NFT_TRADES_BY_BUYER`
    * `SELLER_TRADED_SAME_NFT_MULTIPLE_TIMES`, `COUNT__SAME_NFT_TRADES_BY_SELLER`
    * `SELLER_FUNDED_BUYER_RECENTLY`, `BUYER_BOUGHT_SAME_NFT_FROM_SELLER`

    Row counts and date coverage are comparable across the two schemas.
  </Accordion>

  <Accordion title="Solana — current (63 cols) vs new (54 cols)">
    Columns retained in the new schema:

    * Trade identity: `TOKEN_MINT`, `TOKEN_METADATA`, `ASSET_ID`, `NAME`, `SYMBOL`, `TOKEN_STANDARD`, `ITEM_QUANTITY`
    * Solana-specific: `IS_CNFT`, `MERKLE_TREE`, `LEAF_INDEX`, `COLLECTION_MINT`, `COLLECTION_NAME`, `COLLECTION_SYMBOL`
    * Parties: `BUYER_ADDRESS`, `SELLER_ADDRESS`, `FROM_TOKEN_ACCOUNT`, `TO_TOKEN_ACCOUNT`, `SIGNER`
    * Marketplace: `MARKETPLACE`, `PROTOCOL`, `AGGREGATOR_NAME`, `AGGREGATOR_ADDRESS`, `ORDER_MATCH_TYPE`, `TRADE_TYPE`
    * Pricing: `RAW_PRICE`, `PRICE`, `USD_PRICE`, `CURRENCY_MINT`, `CURRENCY_SYMBOL`
    * Fees: `RAW_FEES`, `FEES`, `USD_FEES`, `AGG_FEES`, `BUYER_FEES`, `SELLER_FEES`
    * Block info: `BLOCK_SLOT`, `BLOCK_HEIGHT`, `BLOCK_TIMESTAMP`, `BLOCK_HASH`, `TXN_ID`, `TXN_INDEX`, `INSTRUCTION_INDEX`, `INNER_INSTRUCTION_INDEX`, `OUTER_PROGRAM_ID`, `UNIQUE_ID`
    * Wash-trading aggregate: `WASH_TRADING_SCORE`, `WASH_TRADING_LEVEL`
    * Extra fields: `EXTRA_FIELDS`

    Columns being removed (per-trade boolean signal flags, 9 total):

    * `NFT_TRADED_BACK_N_FORTH`, `BUYER_ADDRESS_EQUALS_SELLER_ADDRESS`
    * `BUYER_TRADED_SAME_NFT_MULTIPLE_TIMES`, `COUNT_SAME_NFT_TRADES_BY_BUYER`
    * `SELLER_TRADED_SAME_NFT_MULTIPLE_TIMES`, `COUNT__SAME_NFT_TRADES_BY_SELLER`
    * `SELLER_FUNDED_BUYER_RECENTLY`, `BUYER_BOUGHT_SAME_NFT_FROM_SELLER`
    * `_UPDATED_AT__TRADES`

    Row counts and date coverage are identical across the two schemas.
  </Accordion>
</AccordionGroup>

## What to do

**If you query the canonical table** (`polygon.nfts.trades_with_wash_trading_flags` or `solana.nfts.trades_with_wash_trading_flags`):

1. Run your existing queries against the `_v2` table today to confirm they continue to work with the new schema.
2. If you reference any of the columns being removed (listed above), update those queries or reach out to [support@allium.so](mailto:support@allium.so) to discuss alternatives.
3. No query update is required if your queries only reference retained columns — your existing query will continue to work after the cutover.

**If you query the `_v2` table directly**:

Update your queries to drop the `_v2` suffix before the cutover. After June 19, the `_v2` aliases will no longer resolve.

## Timeline

* **May 18, 2026**: Schema update announced. `_v2` tables are available now as a preview.
* **June 17, 2026**: Recommended testing deadline.
* **June 19, 2026**: Canonical tables adopt the new schema; `_v2` aliases are retired.

<Note>
  Values in the new schema match the underlying data exactly — no transformation is needed in your ETL. The change is purely a column-set difference.
</Note>

## Support

If anything here impacts your workflows, reach out to [support@allium.so](mailto:support@allium.so) or your account team.
