Showcase Accessible Superfluid data · powered by Substreams

Data accessible in minutes

Stream Superfluid protocol data with Substreams, land it in ClickHouse, and serve apps with Hasura GraphQL.

One Substreams pipeline

Build and run a Substreams package; sink and GraphQL are the last mile.

1

Substreams extract

Modules decode Superfluid CFA, IDA, GDA, and factory logs in WASM — address-gated, parallel, deterministic. Output: typed protobuf events.

2

Substreams sink

substreams sink clickhouse streams those events into ClickHouse. SQL views turn append-only rows into open streams, pools, and memberships.

3

Serve Substreams data

Hasura turns your ClickHouse tables into a GraphQL API apps can query — with a console for exploring Superfluid streams live.

Substreams at the center

Everything else hangs off the Substreams package: typed protobuf events, a deterministic module graph, and a sink that lands rows in your warehouse at chain speed.

Parallel, cacheable extraction

Substreams splits history across workers, caches module outputs, and reuses them when you change only the sink or SQL — not a linear reindex every time.

Portable WASM modules

Decode Superfluid logs in Rust compiled to WASM. Address-gated factories, CFA/IDA/GDA, deterministic results — ship a .spkg and run it anywhere Substreams runs.

Sinks, not a single API shape

The same Substreams stream feeds ClickHouse today (and SQL, files, or webhooks tomorrow). Run the sink yourself, or let StreamingFast host it against your database.

You control the database

Data lands in your ClickHouse — not a black-box indexer API. You own indexes, partitions, materialized views, and query plans so analytics stay fast as Superfluid volume grows.

Lean stores, rich SQL

Substreams keeps only dynamic addresses in stores. Higher-order logic (open streams, pools, memberships) lives in SQL views you write, version, and optimize yourself.

Query Substreams-backed streams

After the Substreams sink has landed blocks and views are tracked, open streams are one GraphQL request away.

GraphQL
query OpenStreams {
  superfluid_api_streams(
    limit: 5,
    where: { is_open: { _eq: 1 } }
  ) {
    stream_id
    sender
    receiver
    token
    current_flow_rate # base units / second
    deposit
  }
}
curl
curl -s http://localhost:8080/v1/graphql \
-H 'content-type: application/json' \
-H 'x-hasura-admin-secret: SecureMe!' \
-d '{"query":"{ superfluid_api_streams(limit: 5, where: { is_open: { _eq: 1 } }) { stream_id sender receiver token current_flow_rate deposit } }"}'

Run the Substreams package

Install the Substreams CLI (includes substreams sink clickhouse). The package is published as superfluid-substreams@v0.2.3 on the registry — clone the repo for Docker Compose, SQL views, and Hasura scripts.

Prefer not to run the sink yourself?

StreamingFast can host Substreams for you — we run and scale the sink against your ClickHouse or Postgres. You keep the database and the indexes; we keep the pipeline online.

Hosted sinks docs → · StreamingFast Portal →

Terminal
# clone the chain-modules repo, then enter the Superfluid package
git clone https://github.com/streamingfast/substreams-chain-modules.git
cd substreams-chain-modules/payment/superfluid-substreams

docker compose up -d

# install CLI: https://docs.substreams.dev/how-to-guides/installing-the-cli
# once: substreams auth · SQL sink is part of the CLI (migration guide below)
# https://docs.substreams.dev/how-to-guides/sinks/sql/migration
substreams sink clickhouse superfluid-substreams@v0.2.3 \
  --dsn "clickhouse://default:SecureMe!@127.0.0.1:9000/superfluid" \
  -s 1000000 --network base \
  --bytes-encoding hex \
  --cursor-file-path ./cursor.txt \
  --sink-info-folder ./ch-sink-info

# after Substreams has created tables
./scripts/apply_views.sh
./scripts/hasura_connect_clickhouse.sh

Local endpoints

GraphQL · http://localhost:8080/v1/graphql
Console · http://localhost:8080/console · secret SecureMe!
ClickHouse · http://127.0.0.1:8123 · DB superfluid