Skip to main content
Thecrosschain.dex.trades table aggregates DEX trades indexed by Allium across multiple blockchains (EVM and non-EVM) into a single table. The crosschain.dex.trades_evm table aggregates DEX trades for EVM-compatible blockchain. This model includes EVM-specific fee details (e.g. priority fees) that are not found on non-EVM chains.

Blockchain Coverage

This table currently does not contain aggregator swaps to avoid double-counting volume. The dex trades table only contains swap events/instructions from DEXs with liquidity pools/vaults.
For example, suppose a DEX swap was executed by an aggregator (e.g. Openocean or 0x) and routed to liquidity pools on Uniswap and Balancer, only the volume on Uniswap and Balancer is included dex.trades. For trades routed by aggregators, they are found in the dex.aggregator_trades models on the respective blockchain.

Inclusion Criteria

dex.trades is a curated table, not a raw swap-event feed. A Swap event that exists on-chain can be absent from dex.trades. If you are reconciling a specific transaction and finding no row, work through the three layers below in order.
Allium resolves the project for each trade from the factory address that created the liquidity pool, matched against a label set maintained per chain and protocol. Trades are joined to that registry, so a pool missing from it produces no trades.
  • A new DEX fork is invisible until its factory is labeled. A Uniswap v2 clone deployed today emits the same PairCreated and Swap events as any other, but its swaps do not reach dex.trades until the factory is added.
  • Pools from unlabeled factories appear in neither dex.trades nor dex.pools. This is deliberate. Rogue factories emit incorrect pool-to-token mappings, which would produce duplicate and mis-mapped rows downstream.
  • Pools missing token0 or token1 on their creation event are dropped.
Venues without a pool factory (proprietary market makers and RFQ or CLOB venues such as Clipper, Hashflow, Native, WOOFi, and Dexalot) use a maintained contract allowlist instead. New vaults are covered once added.
If a DEX you expect is missing from the coverage tables above, contact Allium support with the factory address and we will add it.
Swaps where either leg is zero are excluded. Dust-sized swaps where the pool’s math rounds the output down to 0 emit a valid Swap event but produce no trade row. This is the most common reason a real, successful transaction has no match in dex.trades.Aggregator-level swaps are excluded to avoid double-counting volume, as described in the Overview tab. Find them in dex.aggregator_trades on the respective chain.A trade also requires its block and transaction records. Rows can be transiently absent while a chain is backfilling, and appear once the backfill lands.
These guards protect volume metrics from flashloan- and wash-trade-inflated prices. They change the USD columns only. The trade row, and its raw and normalized token amounts, always survive.
A null or 0 in usd_amount does not mean the trade did not happen. Filter on usd_amount is not null when you need priced volume, and use the raw amount columns when you need swap counts or token flow.
  • Uniswap v4 trades are built from decoded traces rather than the Swap event. Hooks that alter swap amounts cause the event to emit 0 for both amounts, so the trace output is the only reliable source of the true amounts.
  • EulerSwap swaps routed through the Uniswap v4 singleton are attributed once, to EulerSwap, so they are not double-counted against uniswap_v4.
  • Curve meta-pool swaps that emit TokenExchangeUnderlying are indexed in addition to standard TokenExchange swaps.

Sample Query

Query DEX Volume and Users Across Blockchains indexed by Allium in the last 90 days.

Table Columns

For blockchains (e.g. Solana) that are not EVM-compatible, the additional fields only relevant to these chains (e.g. Signer for Solana) are added and appended at the end of this table.