Documentation

Robinhood indexer

Decoded Robinhood Chain activity in ClickHouse SQL: 200M Uniswap v3 and v4 swaps, pool and ERC-20 metadata, and eight launchpads, with the execution envelope on every row.

// updated 2026-09-07

Robinhood Chain decoded into a ClickHouse database you query with SQL. Swaps, pools, tokens and launchpad activity are already parsed out of the logs - you write queries, not decoders.

What's indexed

The robinhood database holds 25 surfaces. These are the ones most work starts from:

TableWhat it holdsRowsSize
uniswap_v3_tradesOne row per v3 swap: signed token deltas, post-swap price and liquidity, tick, sender and recipient131M34.1 GB
uniswap_v4_tradesOne row per v4 swap, plus the per-swap fee that hooks can vary69.1M16.3 GB
uniswap_v3_poolsv3 pool creations: token pair, fee tier, tick spacing658K238 MB
uniswap_v4_poolsv4 pool initializations: currencies, fee, tick spacing, hooks contract, opening price and tick554K216 MB
tokensERC-20 identities: name, symbol, decimals, creator, descriptive metadata64.4K31.4 MB

Alongside them sit eight launchpads - Pons, Flap, Doppler, Noxa, Nox, Letscash, Varo and Long. Full column lists for all 25 are in the Table reference.

History: from 22 May 2026 to now, continuously refreshed.

NOTE

Every launchpad reads the same way. A _creations table holds the launch record - deployer, token metadata, and the pool it opened against. A _trading surface holds the swap stream for those pools. Where the launchpad graduates tokens onto a public AMM there is a _migrations table, and where it runs its own bonding curve there is _curve_trades. Learn one and you can read all eight.

How the pieces fit

FromColumnToColumn
uniswap_v3_tradespool_addressuniswap_v3_poolspool_address
uniswap_v4_tradespool_iduniswap_v4_poolspool_id
uniswap_v3_poolstoken0 / token1tokenstoken_address
uniswap_v4_poolscurrency0 / currency1tokenstoken_address
pons_creationstokenpons_migrationstoken
WARNING

The two Uniswap versions key their pools differently. v3 identifies a pool by its deployed address in pool_address; v4 has no per-pool contract and uses pool_id. Any query spanning both versions has to normalize the two into one column - there is a ready-made pattern in Query examples.

TIP

Scale amounts with decimals from tokens. Every amount, value and fee column is a raw integer in base units. Prices arrive as sqrt_price_x96, a Q64.96 fixed-point integer - square it, divide by 2 to the 192nd, then adjust for the decimal difference between the two tokens to get a human price.

What this makes easy

  • Cross-version price series for any pair, built straight from v3 and v4 swaps.
  • Pool discovery and ranking - which pools carry the volume in a given window, by trades or by unique senders.
  • Launchpad funnels - launches, bonding-curve activity, graduations to an AMM, and what happened after.
  • Token provenance - who deployed a token, when, and in the same transaction as what.
  • Execution-cost analysis - gas used, base fee and priority fee travel with every decoded event.

Interfaces

  • ClickHouse SQL - connect with DBeaver, DataGrip, the Python client, or anything speaking the HTTP or native protocol.
  • Custom REST endpoints - a recurring query deployed as a stable URL, quoted per scope.

Connection

The database is named robinhood. It is separate from the Solana, Hyperliquid and Polymarket datasets and is provisioned with its own credentials.

NOTE

Host, port and credentials are provisioned per customer via Telegram @supanode_tgs. Keep them in environment variables or a local .env, never in source.

Python

import os
import clickhouse_connect

client = clickhouse_connect.get_client(
    host=os.environ['CH_HOST'],
    port=int(os.environ['CH_PORT']),
    username=os.environ['CH_USER'],
    password=os.environ['CH_PASSWORD'],
    database='robinhood',
    secure=True,
)

df = client.query_df("""
    SELECT block_timestamp,
           pool_address,
           sender,
           toString(amount0) AS amount0_raw,
           toString(amount1) AS amount1_raw,
           tick
    FROM uniswap_v3_trades
    PREWHERE block_timestamp >= now() - INTERVAL 1 HOUR
    ORDER BY block_number DESC, transaction_index DESC, log_index DESC
    LIMIT 100
""")
print(df.head())
WARNING

Keep 128- and 256-bit integers as strings. amount0, amount1, sqrt_price_x96 and the fee columns exceed what a JSON number or a float64 can hold. Wrap them in toString() before they leave ClickHouse, or you will lose precision silently.

DBeaver

  1. 1
    New connection

    Create a New Connection and select the ClickHouse driver.

  2. 2
    Host and port

    Enter the host and port we provisioned for you.

  3. 3
    Database

    Set the database to robinhood.

  4. 4
    Credentials

    Enter your username and password, then test the connection.

WARNING

Filter block_timestamp in PREWHERE on the trade tables. It feeds the partition key toYYYYMMDD(block_timestamp) on uniswap_v3_trades, uniswap_v4_trades, pons_curve_trades and flap_curve_trades. Without it a query scans all 34 GB of the v3 stream.

Access

Provisioning is manual, over Telegram: @supanode_tgs.

TIP

Free trial up to 24 hours. Activate it via Telegram before committing to a subscription.

Next steps

Table reference

All 25 tables, column by column.

Query examples

Cross-version swap feeds, active pools, launchpad funnels.

Pricing

How the subscription is quoted, billing, free trial.