Skip to main content
チェーンがコミットするのはブロックです。一方でアプリケーションは、このアカウントの先週の約定は何か、いま板はどうなっているかといった問いを投げます。ブロック形式の記録が答えるのが苦手な問いです。インデクサーは、一方をもう一方へ変換するものです。 ほとんどのチェーンでは、インデクサーはインフラとして決定的な位置を占めます。チェーンは不透明なイベントを出し、第三者がそこから意味を再構成するので、アプリケーションが何を信じるかは、どのインデクサーを信頼するかに左右されます。ここでは、その再構成のステップが存在しません。カーネルは型付きで帰属の付いた出力を出し、あらゆる状態変化はすでに、それを引き起こしたトランザクションに結び付いています。そのためインデクサーは、意味を推論するのではなくデータを整形し直すだけです。 これはインデクサーの役割そのものを変えます。インデクサーは真実の源ではなく、提供レイヤーです。インデクサーが報告する内容はすべてチェーンに対して検証でき、食い違いがあれば、それは未解決の問いではなくインデクサーの不具合です。

経路

新しさで分割
フルノードコミット済みブロックを型付きレコードで配信
キャッシュ直近データ、メモリから
ファイルストア履歴データ、永続化
データサービス両方をひとつのストリームに
ゲートウェイ → REST · WebSocketアクセス、クォータ、ルーティング
分離している理由先頭の追跡は遅延に敏感で規模が小さく、履歴の問い合わせはスループットに敏感で規模が大きいため、大きなバックフィルがひとつ走るだけでライブ経路が止まります。
真実の源ではなく提供レイヤーカーネルは型付きで帰属の付いた出力を出すため、インデクサーは意味を推論せず整形し直すだけです。チェーンとの食い違いは、インデクサーの不具合です。
フルノードが起点です。取引記録は、解釈が必要な生のトランザクションではなく、型付きデータとしてそこから流し出されます。 キャッシュとファイルストアはストリームを新しさで分けます。直近のデータはメモリから提供されます。ほとんどの利用者が求めるのはそれであり、遅延が効いてくるからです。履歴データは永続的なファイルストレージへ書き出されます。すべてをメモリに保持し続けるのは戦略とは呼べないからです。古いデータを求める利用者と、チェーンの先頭を追う利用者は、どちらもそれと気づかないまま別の場所から提供を受けます。 データサービスは両方をひとつのストリームとして見せます。クライアントは任意の地点から始まる範囲を要求でき、その範囲がキャッシュから来るのか、ファイルから来るのか、両方から来るのかは、クライアントの関知するところではありません。 ゲートウェイは、サービスと公開インターネットの間に属する関心事を扱います。アクセス、クォータ、ルーティングです。 RESTとWebSocketの提供面が、アプリケーションが実際に使うものです。マーケットデータ、注文と約定の履歴、ポジション、アカウント状態、資金調達の支払い、リアルタイム購読を提供します。エンドポイント単位の詳細はAPIリファレンスを参照してください。

分離している理由

チェーンの先頭を追いながら履歴の問い合わせにも答える単一のサービスは、そのどちらもうまくこなせません。先頭の追跡は遅延に敏感で規模が小さく、履歴の問い合わせはスループットに敏感で規模が大きいため、大きなバックフィルがひとつ走るだけでライブ経路が止まります。 分離しておけば、新しい利用者に数か月前からのデータをバックフィルしても、先頭を追うマーケットメイカーへの配信は劣化しません。両者は独立にスケールでき、負荷の性質にまったく共通点がない以上、そうでなければ困ります。

どこまで頼ってよいか

頼ってよいもの。インデクサーが提供するもののうち、コミット済みブロックから導かれるものすべてです。約定、注文、ポジション、資金調達の支払い、送金、マーケットデータ。これらはチェーンの出力を整形し直したものです。 同じではないもの。まだコミットされていないものです。メモリプールに受け入れられた注文はまだ順序づけられておらず、インデクサーはそれについて何も言えません。インデクサーに現れないことは、拒否されたという意味ではなく、まだコミットされていないという意味です。 検証できるもの。答えの重みが十分に大きい場合(決済上の争い、監査、会計上の突合)は、インデクサーから受け取るのではなく、チェーンに対して直接検証できます。その最も強い形が自分でフルノードを運用することであり、間違いが許されない参加者が取るべき手段です。ノードを運用するを参照してください。
同じコミット済み範囲を読めば、どの利用者も同じ答えを得るはずです。そうならない場合、その食い違いは提供経路にあり、報告すべき不具合です。インデクサー越しにチェーンを読むことの本質的な性質ではありません。

次に読む

ステートモデル

インデクサーが何を読んでいるのか、どの表現が正なのかです。

開発者向け

RESTとWebSocketの提供面、SDK、ツールです。

ノードを運用する

自分でチェーンに対して検証する方法と、バリデータセットが閉じている理由です。

プログラムサービス

このストリームを消費して、派生的なアカウント状態を計算する仕組みです。