Documentation Index
Fetch the complete documentation index at: https://docs.chainstream.io/llms.txt
Use this file to discover all available pages before exploring further.
動的スキーマ生成
ChainStream GraphQL スキーマは起動時に activecube-rs によって動的に生成されます。activecube-rs は Rust のライブラリで、Cube 定義を完全に型付けされた async-graphql スキーマにコンパイルします。各 Cube は OLAP テーブルに裏付けられた分析データモデルに対応し、activecube-rs が自動的に次を生成します。- Cube 用のトップレベル Query フィールド(所属する Chain Group の下にネスト)
- 選択可能なディメンションを表す Record 型(
{Cube}Record) - ディメンション階層に対応する Filter 入力(
{Cube}Filter) - すべてのディメンションパスに対する ASC/DESC バリアントを持つ OrderBy 列挙(
{Cube}OrderBy)
スキーマは Cube 定義から生成されるため、Rust で新しいデータモデルを追加するとデプロイ後に GraphQL エンドポイントへ自動的に反映されます。
ルート Query の構造
ルートのクエリ型名はChainStream です。Cube は 3 つの Chain Group に整理され、それぞれがトップレベルフィールドとして公開されます:
Mutation 型や Subscription 型はありません — GraphQL API は読み取り専用の分析クエリです。
Chain Group
Cube は対象とするブロックチェーンエコシステムに応じて 3 グループに分かれます:| Chain Group | network 引数 | 利用可能なネットワーク | 説明 |
|---|---|---|---|
| EVM | 必須 | eth, bsc, polygon | すべての EVM 互換チェーン向けの共通 Cube |
| Solana | 不要 | sol(暗黙) | Instructions、DEXOrders などチェーン固有 Cube を含む Solana 向け |
| Trading | 不要 | クロスチェーン(sol, eth, bsc) | 事前集計の取引分析(OHLC ローソク、トークン統計)。データ内に chain ディメンションあり |
EVM グループは、問い合わせるチェーンを選ぶために
network 引数が必要です。Solana と Trading には network 引数は不要です — Solana は暗黙で、Trading はデータ内に chain ディメンションがあります。Chain Group のパラメータ
すべての Chain Group は、データソースの挙動を制御する 2 つの任意パラメータを受け取ります。Dataset
dataset パラメータは、問い合わせるデータの時間範囲を制御します:
| 値 | 説明 |
|---|---|
combined | 全期間 — 直近と履歴の両方をクエリ (既定) |
realtime | 直近のみ(おおよそ過去 24 時間) |
archive | 保持 TTL までの履歴データ |
Aggregates
aggregates パラメータは、事前集計(DWM/DWS)テーブルを使うかどうかを制御します:
| 値 | 説明 |
|---|---|
yes | 可能な場合は事前集計テーブルを優先 (該当 Cube の既定) |
no | 生の明細テーブルのみ使用 |
only | 事前集計テーブルのみ(高速だがフィールドが限定的) |
共通の引数パターン
Chain Group 内の各 Cube フィールドは、同じ標準引数セットに加え、Cube 固有の任意のセレクターを受け取ります:| 引数 | 型 | 必須 | 説明 |
|---|---|---|---|
where | {Cube}Filter | いいえ | ディメンション階層に対応するネストしたフィルターオブジェクト |
limit | LimitInput | いいえ | ページネーション: {count: Int, offset: Int} |
orderBy | {Cube}OrderBy | いいえ | 並び順列挙({Path}_ASC / {Path}_DESC) |
| selectors | フィルター入力 | いいえ | 省略形フィルター(例: tokenAddress: {is: "..."}) |
LimitInput
count は Cube により異なります(多くは 25)。最大はほとんどの Cube で 10,000 です。
Cube ごとに生成される型
各 Cube に対して activecube-rs は 3 つの関連型を生成します:Record 型
{Cube}Record — 選択可能なすべてのディメンションとメトリクスを含む戻り値の型。フィールド構造は Cube のディメンション階層を反映します。Filter 入力
{Cube}Filter — 各ディメンションがフィルターprimitive(StringFilter、IntFilter、DateTimeFilter など)にマップされるネストした入力オブジェクト。OrderBy 列挙
{Cube}OrderBy — すべてのディメンションパスについて ASC と DESC の両方向の列挙値(例: Block_Time_ASC, Trade_Buy_Amount_DESC)。イントロスペクション
スキーマは標準の GraphQL イントロスペクションをサポートします。__schema と __type クエリで型・フィールド・引数を調べられます:
- すべての Cube を列挙
- Cube 型を調べる
- フィルター演算子を列挙
次のステップ
Data Cubes
25 の Cube — フィールド、セレクター、データウェアハウス層を確認します。
Chain Groups
EVM、Solana、Trading の Chain Group と利用可能な Cube を理解します。
Dataset & Aggregates
dataset と aggregates でデータソースの範囲と事前集計の挙動を制御します。フィルタリング
where フィルターとセレクター省略形でクエリを絞り込みます。並び順とページネーション
orderBy と limit で結果を並べ替え、大きなデータセットをページングします。メトリクスと集計
クエリ内で
count、sum、avg、min、max、uniq を使ってデータを集計します。
