Database schema
All tables, columns, and storage configuration for the Indexer.
// updated 2026-06-04
The Indexer maintains 9 core tables tracking decoded Solana DEX activity. ClickHouse with MergeTree engine and daily partitioning.
Shared columns (block time, slot, signature, signing wallet, fee) are common across all tables. Per-protocol columns (mint addresses, amounts, pool details) live on each table.
Tables overview
| Table | What it contains |
|---|---|
solana_mints | New SPL tokens (excluding Pump.fun) |
pumpfun_token_creation | New tokens launched on Pump.fun |
pumpfun_all_swaps | All Pump.fun swap activity |
pumpswap_all_swaps | PumpSwap protocol transactions |
pfamm_migrations | PumpFun AMM migration events |
raydium_all_swaps | Raydium exchange transactions |
raydium_launchpad_swaps | Raydium launchpad transactions |
raydium_launchpad_migrations | Raydium launchpad graduations |
meteora_swaps | Meteora DLMM exchange swaps |
Shared columns
Use these for joins, time-series aggregations, and wallet-level queries.
| Column | Type | Purpose |
|---|---|---|
block_time | DateTime | Block processing timestamp |
block_date_utc | Date | UTC date - daily partition key |
slot | UInt32 / UInt64 | Blockchain slot number |
tx_idx | UInt16 / UInt32 | Transaction index within block |
signature | String | Unique transaction signature |
signing_wallet / user | String | Transaction signer |
fee_payer | String | Fee-paying account |
fee / fee_paid | UInt64 | Actual fees paid (lamports) |
Some tables include arrival_ts_ns - the nanosecond-resolution arrival timestamp. See Nanosecond timestamps.
Per-table column details
Detailed per-table column lists (swap-specific fields like input/output mint, amounts, AMM pool, LP details) are being published in this section. Schema is finalizing - contact @supanode_tgs for the current full schema if you're starting integration today.
Storage configuration
All tables share the same engine and storage policy.
| Setting | Value |
|---|---|
| Engine | MergeTree |
| Partitioning | daily by block_date_utc |
| Sort order | (slot, tx_idx) |
| TTL | 1 year (older data dropped automatically) |
| Indexes | Bloom filter on wallet and token address columns |
Coverage and latency
Data starts from January 11, 2024. Anything earlier is not indexed.
~15 seconds between Solana block confirmation and the row appearing. Confirmed transactions only - never processed-level data that might revert.
Sample queries
24h trading volume on Raydium for a specific token
SELECT
sum(amount_in_usd) AS volume_usd,
count() AS swap_count,
count(DISTINCT signing_wallet) AS unique_traders
FROM raydium_all_swaps
WHERE block_date_utc >= today() - 1
AND token_in_mint = 'So11111111111111111111111111111111111111112'
Top 10 wallets by Pump.fun activity in the last 24 hours
SELECT
signing_wallet,
count() AS swap_count,
sum(amount_sol) AS total_sol_volume
FROM pumpfun_all_swaps
WHERE block_date_utc = today()
GROUP BY signing_wallet
ORDER BY swap_count DESC
LIMIT 10
Pump.fun graduations in the past week
SELECT
block_date_utc,
count() AS graduations
FROM pfamm_migrations
WHERE block_date_utc >= today() - 7
GROUP BY block_date_utc
ORDER BY block_date_utc
Column names like amount_in_usd, token_in_mint, amount_sol are illustrative - confirm against the live schema.
See also
Connection and authentication.
Precision arrival data.