# 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.

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:

| Table | What it holds | Rows | Size |
|---|---|---|---|
| `uniswap_v3_trades` | One row per v3 swap: signed token deltas, post-swap price and liquidity, tick, sender and recipient | 131M | 34.1 GB |
| `uniswap_v4_trades` | One row per v4 swap, plus the per-swap `fee` that hooks can vary | 69.1M | 16.3 GB |
| `uniswap_v3_pools` | v3 pool creations: token pair, fee tier, tick spacing | 658K | 238 MB |
| `uniswap_v4_pools` | v4 pool initializations: currencies, fee, tick spacing, hooks contract, opening price and tick | 554K | 216 MB |
| `tokens` | ERC-20 identities: name, symbol, decimals, creator, descriptive metadata | 64.4K | 31.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](https://supanode.xyz/docs/robinhood/tables).

**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.
</Note>

## How the pieces fit

| From | Column | To | Column |
|---|---|---|---|
| `uniswap_v3_trades` | `pool_address` | `uniswap_v3_pools` | `pool_address` |
| `uniswap_v4_trades` | `pool_id` | `uniswap_v4_pools` | `pool_id` |
| `uniswap_v3_pools` | `token0` / `token1` | `tokens` | `token_address` |
| `uniswap_v4_pools` | `currency0` / `currency1` | `tokens` | `token_address` |
| `pons_creations` | `token` | `pons_migrations` | `token` |

<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](https://supanode.xyz/docs/robinhood/examples).
</Warning>

<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.
</Tip>

## 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](https://telegram.me/supanode_tgs). Keep them in environment variables or a local `.env`, never in source.
</Note>

### Python

```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.
</Warning>

### DBeaver

<Steps>
  <Step title="New connection">
    Create a **New Connection** and select the **ClickHouse** driver.
  </Step>
  <Step title="Host and port">
    Enter the host and port we provisioned for you.
  </Step>
  <Step title="Database">
    Set the database to `robinhood`.
  </Step>
  <Step title="Credentials">
    Enter your username and password, then test the connection.
  </Step>
</Steps>

<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.
</Warning>

## Access

Provisioning is manual, over Telegram: [@supanode_tgs](https://telegram.me/supanode_tgs).

<Tip>
**Free trial up to 24 hours.** Activate it via Telegram before committing to a subscription.
</Tip>

## Next steps

<CardGroup cols={3}>
  <Card title="Table reference" icon="table" href="https://supanode.xyz/docs/robinhood/tables">
    All 25 tables, column by column.
  </Card>
  <Card title="Query examples" icon="code" href="https://supanode.xyz/docs/robinhood/examples">
    Cross-version swap feeds, active pools, launchpad funnels.
  </Card>
  <Card title="Pricing" icon="tag" href="https://supanode.xyz/docs/robinhood/pricing">
    How the subscription is quoted, billing, free trial.
  </Card>
</CardGroup>
