サブストリームを利用したサブグラフに関するよくある質問
StreamingFast](https://www.streamingfast.io/)によって開発されたSubstreamsは、ブロックチェーンデータのリッチストリームを消費できる非常に強力な処理エンジンです。Substreamsを使用することで、エンドユーザーアプリケーションによる高速かつシームレスな消化のために、ブロックチェーンデータを洗練し、形成することができます。より具体的には、Substreams はブロックチェーンにとらわれない、並列化されたストリーミングファーストエンジンであり、ブロックチェーンデータ変換レイヤーの役割を果たします。Firehose](https://firehose.streamingfast.io/)を利用することで、開発者はRustモジュールを書いたり、コミュニティモジュールを基に構築したり、非常に高性能なインデックスを提供したり、データをどこにでも[sink](https://substreams.streamingfast.io/developers-guide/sink-targets)することができます。
サブストリームの詳細については、サブストリームのドキュメント にアクセスしてください。
Substreams-powered subgraphs は、サブストリームの機能とサブグラフのクエリ可能性を組み合わせています。 サブストリームを利用したサブグラフを公開する場合、サブストリーム変換によって生成されたデータは、エンティティの変更を出力できます。 /src/tables.rs)、サブグラフ エンティティと互換性があります。
すでにサブグラフ開発に精通している場合は、AssemblyScript 変換層によって生成されたかのように、サブストリームを利用したサブグラフをクエリできることに注意してください。動的で柔軟な GraphQL API の提供など、サブグラフのすべての利点が得られます。
サブグラフは、オンチェーン イベントと、それらのイベントが Assemblyscript で記述されたハンドラーを介して変換される方法を指定するデータソースで構成されます。これらのイベントは、チェーン上でイベントが発生する順序に基づいて、順番に処理されます。
一方、Substreamsで動作するサブグラフは、Substreamsパッケージを参照する単一のデータソースを持ち、これはGraph Nodeによって処理されます。従来のサブグラフと比較して、Substreamsはより細かい粒度のオンチェーンデータにアクセスでき、また、大規模な並列処理の恩恵も受けることができます。これにより、処理時間が大幅に短縮される可能性があります。
Substreams-powered subgraphs は、Substreams のすべての利点とサブグラフのクエリ機能を組み合わせたものです。サブストリームを利用することで、グラフの構成性が向上し、高性能なインデックス作成が可能になります。例えば、一度Substreams-powered Subgraphを構築すれば、そのSubstreamsモジュールを再利用して、PostgreSQL、MongoDB、Kafkaなどの異なるsinksに出力することができます。
サブストリームを使用すると、次のような多くの利点があります。
-
コンポーザブル: レゴ ブロックのようなサブストリーム モジュールを積み重ね、コミュニティ モジュールを基にして公開データをさらに洗練させることができます。
-
高パフォーマンスのインデックス作成: 並列操作の大規模なクラスター (BigQuery を考えてください) を通じて、桁違いに高速なインデックス作成を実現します。
-
場所を選ばずにデータをどこにでも沈める: PostgreSQL、MongoDB、Kafka、サブグラフ、フラットファイル、Googleシート。
-
プログラム可能: コードを使用して抽出をカスタマイズし、変換時の集計を実行し、複数のシンクの出力をモデル化します。
-
JSON RPC の一部として利用できない追加データへのアクセス
-
Firehose のすべての利点。
StreamingFast によって開発された Firehose は、ブロックチェーンの全履歴をこれまで見たことのない速度で処理するためにゼロから設計されたブロックチェーン データ抽出レイヤーです。ファイルベースでストリーミングファーストのアプローチを提供するこれは、StreamingFast のオープンソース テクノロジ スイートの中核コンポーネントであり、サブストリームの基盤です。
Firehose の詳細については、documentation にアクセスしてください。
Firehose を使用すると、次のような多くの利点があります。
-
最低のレイテンシーとポーリングなし: ストリーミングファーストの方式で、Firehose ノードはブロック データを最初にプッシュするために競合するように設計されています。
-
ダウンタイムの防止: 高可用性を実現するためにゼロから設計されています。
-
ビートを見逃すことはありません: Firehose ストリーム カーソルは、フォークを処理し、どのような状況でも中断したところから続行するように設計されています。
-
最も豊富なデータ モデル: 残高の変更、完全なコール ツリー、内部トランザクション、ログ、ストレージの変更、ガス料金などが含まれる最適なデータ モデル。
-
フラット ファイルの活用: ブロックチェーン データは、利用可能な最も安価で最適化されたコンピューティング リソースであるフラット ファイルに抽出されます。
Substreams ドキュメント では、Substreams モジュールを構築する方法を説明します。
Substreams-powered subgraphs ドキュメント では、The Graph にデプロイするためにサブグラフをパッケージ化する方法が示されています。
Rust モジュールは、サブグラフの AssemblyScript マッパーに相当します。これらは同様の方法で WASM にコンパイルされますが、プログラミング モデルにより並列実行が可能になります。これらは、生のブロックチェーン データに適用する変換と集計の種類を定義します。
詳しくはmodules documentationを参照してください。
サブストリームを使用すると、変換レイヤーで合成が行われ、キャッシュされたモジュールを再利用できるようになります。
例として、AliceはDEX価格モジュールを構築し、Bobはそれを使用して興味のあるいくつかのトークンのボリューム集計モジュールを構築し、Lisaは4つの個々のDEX価格モジュールを組み合わせて価格オラクルを作成することができます。単一のSubstreamsリクエストは、これらの個々のモジュールをまとめ、リンクしてより洗練されたデータのストリームを提供します。そのストリームはその後、サブグラフを作成し、消費者によってクエリされることができます。
Substreams を利用したサブグラフを defining した後、Graph CLI を使用してそれを Subgraph Studio にデプロイできます。
この Github リポジトリ にアクセスして、サブストリームとサブストリームを利用したサブグラフの例を見つけることができます。
この統合は、非常に高いパフォーマンスのインデクシングと、コミュニティモジュールを活用し、それらを基に構築することによる大きな組み合わせ可能性を含む多くの利点を約束しています。