Analytics·EVM · Solana · Multi-chain
Flipside
Flipside helps builders turn curated multi-chain blockchain data into queryable analytics workflows without standing up raw indexing infrastructure. This protocol reference now leads with the practical evaluation angle searchers need: when Flipside fits better than generic dashboards, how the Compass SQL workflow supports product and growth analysis, and what teams should validate before wiring it into operational reporting or onchain data products.
- 01ad-hoc SQL over indexed onchain data
- 02wallet and protocol cohort analysis
- 03leaderboards and dashboards
- 04fact tables with parsed events
- 05free curated EVM + Solana coverage
- pnpm add @flipsidecrypto/sdk
| Variable | Scope | Description |
|---|---|---|
| FLIPSIDE_API_KEY | Server | Flipside Compass API key from flipsidecrypto.xyz account settings. Server-only. |
Use Flipside's Compass API for SQL over curated onchain data. Server-side: `import { Flipside } from "@flipsidecrypto/sdk"`, then `const flipside = new Flipside(process.env.FLIPSIDE_API_KEY!, "https://api-v2.flipsidecrypto.xyz")`. Run queries via `await flipside.query.run({ sql, maxAgeMinutes: 30 })` and read `result.records`. Prefer curated `ez_*` views (e.g. `ethereum.core.ez_token_transfers`, `solana.core.fact_transactions`) over raw fact tables. Always set `maxAgeMinutes` to leverage the cache and avoid rerunning identical queries.
- ⚑Queries can take seconds-to-minutes — never run Compass synchronously inside a request handler; use a job queue or pre-warm with `maxAgeMinutes`.
- ⚑Free tier has concurrency and row limits (typically 1 concurrent query, ~1M rows); production analytics need a paid plan.
- ⚑Schemas drift: chain teams add and rename columns; pin to `ez_*` views which Flipside commits to maintaining instead of raw tables.
- ⚑Data freshness varies by chain — Ethereum is near-realtime, smaller chains can lag 30+ minutes; check the chain's freshness page before alerting on it.
- ⚑SQL dialect is Snowflake — `LATERAL FLATTEN`, `OBJECT_CONSTRUCT`, etc. won't port to Postgres/BigQuery directly.