Dappsを強化するThe Graphの仕組み

The Graph Japan
The Graph Protocol Japan
21 min readDec 12, 2023

The Graph

The Graphの各コンテンツをフォローしてご参加ください!

The Graphはこの5年間で大きく成長し、進化してきました。The Graphに貢献するコア開発チームの一つ「StreamingFast」は、未来のインターネットのために、そして、より分散化された効率的なデータインデックスとクエリのエコシステムを促進するために複数のチームと協力して取り組んでいます。

最近、最新ロードマップ『New Era』が発表され、The Graphは新たなフェーズに入ろうとしています。私たちは、The Graphのエコシステムを強化する多くの新機能や新テクノロジーの開発に取り組む中で、今こそそれらがNew Eraにおいてどのように進化するのかを紹介する絶好の機会だと考えました。

各テクノロジーを個別に定義するだけでなく、これらのテクノロジーを組み合わせることでThe Graphの将来においてどのように花開くのかについても紹介していきます。

サブグラフ

定義:ブロックチェーンからデータを抽出し、処理し、GraphQLで簡単に照会できるように保存するオープンAPI

サブグラフはThe Graphが導入したオリジナルのデータサービスで、以来、ブロックチェーンデータのインデックスを作成する際の業界標準となっています。2018年のサービス開始以来、The Graphは40以上のチェーンで85,000以上のサブグラフをサポートしてきました。

サブグラフはカスタムAPIであり、誰でも作成することができ、クエリすることもできます。開発者がインデックス化したいデータスキーマを定義して、そのデータを簡単にクエリ可能にするものです。サブグラフは、GraphQLスキーマ、データソース、およびメタデータを参照するサブグラフマニフェストとともに記述されます。

簡単に言えば、サブグラフはブロックチェーンデータに特化した図書館員と考えることができます。図書館員が本を整理してカタログ化し、人々が探しているものを簡単かつ迅速に見つけられるようにするのと同じように、サブグラフはブロックチェーン・データを構造化されたフォーマットに整理します。

これはカスタムメイドのツールであり、ブロックチェーンデータの特定の部分を見つけやすく、使いやすくしたい人なら誰でも作ることができます。開発者がサブグラフを書く時には本質的に、簡単にアクセスできるようにしたいデータ、それがどのように配置されるべきか、そしてそれがどこから来たのかを指定する独自の「カタログ」を作成することになり、他の人がこの情報を検索して、簡単かつ効果的に利用することできます。

サブグラフは、主にWeb3の開発者が、ブロックチェーンデータを分散型アプリケーション(dapp)のフロントエンドに迅速に提供するために使用されます。サブグラフを使うことで、開発者はDeFiトランザクション、NFTの実績、流動性プール情報などのブロックチェーンデータをチャートやグラフで表示することができます。サブグラフはまた、検索バーの実装、チャートのフィルター機能、ページネーション、タグ付けなど、リッチな機能をDappsに構築することを可能にします。

サブグラフはグラフネットワークに掲載されて、任意のインデクサーからパーミッションレスで提供されます。また、開発者が自分のローカルインスタンスでグラフノードを実行している場合は、ローカルにデプロイすることもできます。

ネットワークにデプロイされたサブグラフは、これを使って誰でもクエリすることが可能です。

ファイアホース

定義:ファイアホースは、対応するブロックチェーンノードからデータを抽出し、フラットファイルに保存するためのツールです。

StreamingFastによって開発されたファイアホースは、ファイルベースかつストリーミングファーストのアプローチによって、ブロックチェーンデータのインデックス作成にこれまで実現できなかった機能と速度を提供します。

どのように機能するのかも見てみましょう。ファイアホースに対応したインスツルメンテッド・ブロックチェーン・ノードからリッチ・データが抽出され、シンプルなフラットファイルに保存されます。ファイアホースは主にGoプログラミング言語で書かれており、並列コンピューティングを最大限に活用しています。ファイアホースはまた、ブロックチェーンのデータを消費し、処理し、消費者にストリーミングします。ファイアホースは、一貫性のないJSON-RPCシステムのもろさや応答時間の遅さを置き換えるために設計された経緯があります。

サブグラフを説明するために使った図書館員の例えに戻りましょう。この場合、ファイアホースは、専門の図書館員であるサブグラフが整理する必要のある「本」(データ)のための画期的な配信システムだと考えることができます。サブグラフは、ブロックチェーンのデータをカタログ化し、簡単にアクセスできるようにする司書だと考えてみましょう。この例えでは、ファイアホースは図書館の高度な図書配送システムとなります。ハイテクを駆使したベルトコンベアー・システムが、信じられないほどのスピードで図書館員のデスクまで本を直接運んでくるのを想像してください。Firehoseがブロックチェーン・データで行うのは、効率的にデータを抽出してサブグラフに配信することで、本を図書館員に迅速かつ確実に届けるのと同じことなのです。これによって、図書館員(サブグラフ)は、より速く、より正確に情報を目録化して、それを必要とする誰もがすぐに利用できるようになる仕組みです。

Web3に話を戻し、ファイアホースが対応するために設計された主要な技術的ポイントをおさらいしてみましょう:

  • ブロックチェーンデータを処理するための、ファイルベースかつストリーミングファーストのアプローチを提供
  • ファイアホースに対応し、インスツルメンテッドなブロックチェーン・クライアント・ソフトウェアを実行するノードのコンシューマーにブロックチェーン・データを消費、処理、ストリーミング
  • バイナリ・データ・ストリームの形でリアルタイムのブロックチェーン・データを低レイテンシーで処理
  • ファイアホースカーソルは、データベースとブロックチェーン自体から発せられるイベントのストリーム内の特定の位置を指す。このカーソルには、フォークされたインスタンスや正規のインスタンスを再構築するために必要な情報が含まれており、ダウンタイムが発生しても極めて簡単に復旧可能

New Eraでは、ファイアホースはWorld of Data Servicesのいくつかのマイルストーンで取り上げられ、より高速でモジュール化されたデータフローを保証する新しいデータサービスとして重要な役割を果たしています。さらに、Verifiable Firehoseの導入は、過去のイーサリアムデータにアクセスするための革新的なソリューションを提示し、EIP-4444によってもたらされた課題に対処する可能性があります。

サブストリーム

定義:大規模なストリーミングデータを効率的に変換するために設計されたデータ処理ツール。あらゆるタスクに容易に対応でき(コンポーザブル)、複数のデータ処理を同時に処理できる(パラレライザブル)。サブストリームは、基本的なファイル形式のデータをより使いやすい形式に素早く変換することに特化している。

同じくStreamingFastによって作成されたサブストリームを使うことで、開発者はデータを合成するための素朴なモジュールを記述できます。サブストリームは、ストリーミングファースト方式による並列化によって、非常に高性能なインデックス作成を提供します。サブストリームは、ユーザが継続的にデータを要求するのを待つのではなく、データが利用可能になり次第プッシュする仕組みです。

サブストリームのモジュールは、ブロックオブジェクトやスマートコントラクトからブロックチェーンのデータをソート、ふるい分け、一時保存、変換して、データベースやサブグラフなどのデータシンクで使用します。これらのモジュールはコンポーザブルで、データセット全体を他のサブストリーム内で再利用可能な小さなデータストリームに分解することで、開発者は他の人の作品の上に構築することができます。

サブストリームパッケージの公開レジストリはsubstreams.devにあり、開発者は他のコミュニティ開発者が作成したサブストリームにアクセスすることが可能です。サブストリームを修正したり、自分のサブストリームのインプットとして利用したり、独自のサブストリームを追加したりすることもできます。

もう一度、図書館員の例えに戻ると、サブグラフはデータを整理する専門の図書館員で、ファイアホースは本を高速で運んでくる高度な配送システムであることがわかったと思います。このアシスタントたちは、図書館員のデスクに本が届く前に、本を事前に分類し、分類し、要約までしてくれます。彼らがベルトコンベアの横で熱心に働いて、関連する本を選び出して、テーマ別の書架に並べて、重要なページにしおりまでつけているのを想像してみてください。つまり、本(ブロックチェーンデータ)が図書館員(サブグラフ)に届く頃には、単に早く届けられるだけでなく、あらかじめ整理され、目録を作りやすくなっているということになります。サブストリームは図書館の効率を高め、かつて数ヶ月かかっていた作業を数時間にすることができるのです。

New Eraでは、サブストリームによる新ツールは、開発者に力を与え、開発者体験を向上させると同時に、新しいデータサービスとしてネットワークに統合されます。

サブグラフ、Firehose、サブストリームのパワーの融合

サブグラフ、ファイアホース、サブストリームについて紹介したところで、大量のデータを処理する例で、それぞれが必要とされるユースケースと、それらが互いにサポートし合うユースケースを説明してみましょう。

サブグラフは開発者にとって強力なツールで、サーバレスアーキテクチャへの容易なアクセスと、堅牢なツールやドキュメントを提供します。サブグラフは、既にDappsに不可欠なものとなっており、開発者がブロックチェーンのデータに素早くアクセスしてクエリする便利な方法を提供しています。サブグラフは標準的なデータロードの管理に優れていて、ブロックチェーンのデータにアクセスするためのデフォルトの業界標準となっています。

さらに、大規模なデータ処理を処理するために、ファイアホースを組み込むことで、サブグラフのパフォーマンスと効率を大幅に向上できます。ファイアホースは大量のデータを迅速かつ効率的に処理することに長けていて、ブロックチェーン上のすべてのトランザクションをフラットファイルと呼ばれる、より小さく管理しやすいコンポーネントに分解する機能を備えています。このファイルは、データの迅速なトラバーサルと検索を可能にして、大規模なデータ要求の処理に関連するニーズと要求に応えます。

また、開発者は個別にデータを自分のサーバーにポーリングおよび計算して、ニーズに合うように変換する必要が生じまるため、世界中に重複したデータが大量に流れることになります。サブストリームは、この課題に対するエレガントな解決策を提供します。サブストリームは、過去のデータを並列処理できる事前計算されたデータのリクエストを可能にして、ストリーミングされるライブデータにシームレスに追従します。すべての生データとキャッシュされた事前計算データをサブストリームクラスタ内でライブ処理することで、開発者エコシステムは共有データインテリジェンスレイヤーの恩恵を受けることができるのです。

サブストリームとサブグラフの違い

サブグラフとサブストリームはよく似た名前なので、違いがよくわからないという人もいるかもしれません。このセクションでは、その違いをより明確にしていきましょう。

サブストリームとサブグラフの違いを理解する最も良い方法は、それぞれのユースケースを理解することです:

サブグラフは、スマートコントラクトのイベントのインデックスを作成して、GraphQL APIでそのデータを使用して構築を開始するために、非常に簡単かつ迅速に扱えるため、ブロックチェーンのデータ検索ニーズの大部分に対応しています。

サブストリームは、さまざまなユースケース、特に線形処理ではなく並列化されたデータ処理を必要とする分析やビッグデータに関するユースケースに対応して作成されています。サブストリームが作成されたポイントは以下の通りです:

  • ブロックチェーンデータの消費と変換にストリーミングファーストのアプローチを提供
  • ブロックチェーンデータを消費・変換するための、高度に並列化可能かつシンプルなモデル
  • コミュニティの他の開発者が提供するビルディングブロックに依存できるコンポーザブルなシステム
  • 豊富なブロックモデルを提供

どちらもブロックチェーン・データの変換と処理に関して似たようなアイデアを共有しており、The Graphエコシステムの一部ですが、それぞれは互いに無関係な独立したテクノロジーと見なすことができます。サブグラフのコードをサブストリームのエンジンで実行することはできないし、その逆も同様です。

簡単に説明するために、サブグラフとサブストリームの主な違いを以下に示していきます:

  • サブストリームはRustで、サブグラフはAssemblyScriptで記述される。
  • サブストリームはgRPCによるステートレスリクエストで、サブグラフは永続的なデプロイメントである。
  • サブストリームはブロックチェーン固有のフルブロックを提供する。サブグラフでは、コードを呼び出すトリガーを定義する必要がある。
  • サブストリームはgRPC接続を通じて消費され、実際の出力メッセージを制御する。サブグラフはGraphQLクエリを介して消費される。
  • サブストリームは長期的なストレージやデータベースを持たない(一時的なストレージを持つ)。サブグラフはPostgresデータベースに永続的にデータを保存する。
  • サブストリームは、フォークを意識したモデルでリアルタイムに消費できる。Subgraphは、GraphQLとポーリングによってのみ利用できる。
  • サブストリームはProtobufモデルに依存する。サブグラフはGraphQLスキーマに依存する。

サブグラフとサブストリームの使い分け

サブグラフとサブストリームのどちらを活用するかを迷ったとき、判断の助けとなる便利なヒントがいくつかあります。

サブグラフは、データベースのセットアップ、操作、管理の手間とコストを効果的に削減します。すぐに使えるGraphQLクエリー・レイヤーを備えており、開発者のワークフローを効率化します。つまり、開発開始後すぐにデータの利用を開始することができます。

サブストリームはデータ取り込みの並列化を可能にして、他の開発者が作成したコンポーザブル・モジュールのパワーを活用します。つまり、データベースの種類や保存形式をカスタマイズできるようになり、出力形式や消費するデータをより詳細に制御できるようになります。

サブグラフとサブストリームはそれぞれ、異なるユースケースに合わせた明確な利点を提供します。どちらかを選択する場合、開発者はプロジェクト固有のニーズを考慮することが重要です。サブストリームはデータストレージとライブストリーミング機能に柔軟性があり、複雑な分析やリアルタイムのデータ要件に理想的である一方で、サブグラフは初期設定とデータ管理プロセスを簡素化するため、使いやすいGraphQLベースのインターフェースを求める開発者にとって最適な選択肢となります。

サブストリーム、ファイアホース、サブグラフのグラフ上での相互作用

サブグラフ、ファイアホース、サブストリームをそれぞれ個別に考えてみると、それぞれがデータアクセスと管理にどのような革命をもたらしたかがよくわかります。では、これらのテクノロジーを組み合わせることで、The Graphがどのように可能性のフロンティアを押し広げて、ブロックチェーンデータの世界で新たなスタンダードを確立できるのかを見てみましょう。

ファイアホースはサブグラフをフィードする
インデックサーは、GraphQLエンドポイントを介してクエリ可能なデータストアを決定論的に更新するためにブロックチェーンをソースとするGraph Nodeソフトウェアを実行しなければなりません。サブグラフとは、開発者がブロックチェーンから同期されたデータを変換するためのスキーマとマッピングを参照する方法です。元々、インデクサーはRPCかArchive Nodeのどちらかを介してGraph Nodeにフィードしていました。その後、ファイアホースが Graph Node の代替データソースとして追加され、インデクサーはこの非常にパフォーマンスの高いファイルベースのデータストアを利用できるようになりました。

ファイアホースのサブストリームへのフィード
サブストリームは、ブロックチェーンデータの低コストなキャッシュとアーカイブ、高スループット処理、カーソルベースの再編成処理など、ファイアホースのすべての利点を提供します。基本的なブロックチェーン・プロトコルのプラットフォームに依存せず、ファイアホースを使用してノードから抽出されたデータのみで動作します。

サブストリームを利用したサブグラフ
サブストリームは、サブグラフに新しいデータソースを導入して、サブストリームのインデックス作成速度と追加データをサブグラフ開発者に提供します。このデータ ソースは、インデックス付けされたネットワーク、相対ファイルの場所としての サブストリームパッケージ (spkg)、およびサブグラフと互換性のあるエンティティの変更を生成するサブストリームパッケージ内のモジュールを指定する必要があります。

サブストリームを使用したサブグラフを構築する開発者は、サブグラフの同期時間を 100 倍以上短縮して、全体的なパフォーマンスも向上させることで、新しく新鮮なデータ俊敏性を実現できます。インデクサーにとっては、ファイアホースの実行とサブストリームの提供によって、水平スケーリングと効率性の向上、処理時間の短縮、待機時間の短縮が実現することによって、時間とリソースの節約につながります。

サブストリームを利用したサブグラフの利点は、実世界のアプリケーションですでに実証されています。この利点の最も顕著な例の1つは、同期時間の劇的な改善です。Uniswap-v3のサブグラフは、従来同期に2ヶ月かかっていましたが、サブストリームのサブグラフでは、同じプロセスはわずか20時間で完了します。これは72倍という驚異的なスピードの向上で、同期にかかる時間は1,440時間以上からわずか20時間に短縮されました。このような効率化は、開発プロセスだけでなく、グラフネットワーク上でのユーザーのデータ操作方法にも革命をもたらす可能性があります。

まとめ

今回の記事は、サブグラフ、ファイヤーホース、サブストリームについて効果的なものとなったのではないでしょうか?The Graph New Eraを迎えるにあたって、各テクノロジーを理解して、それらがどのように相互作用するのかを理解して、今後の拡張と進化に備えることが重要です。

サブグラフ、ファイアホース、サブストリームに関しては、それぞれがブロックチェーン・データへのアクセスと管理を最適化する上で極めて重要な役割を果たしています。サブグラフの基礎的なインパクトから、ファイアホースやサブストリームの革新的な機能まで、各テクノロジーはこの組み合わせがいかに分散型インターネットをサポートするのかを示しています。

改めて技術がどのように相互接続されているかを明確に理解するために、覚えておくべき重要な要素を要約します:

  • サブグラフは、インデックス化されたブロックチェーンデータを利用するためのオープンAPIを作成・整理する際の業界標準である。
  • サブグラフは、データベースやインデックス作成インフラを構築、運用、管理する手間やコストを効果的に排除する。
  • ファイアホース対応ノードは、各トランザクションからすべてのデータを抽出し、フラットファイルに格納することで、ブロックチェーンのデータ検索を高速化する。フラットファイルは、その中のデータで上で実行されるデータ索引付けジョブを容易に並列化する機能を導入する。
  • サブストリームは各データストリームをより小さなコンポーザブル・モジュールに分解し、簡単に再利用したり相互にパイプ接続する。
  • サブストリームを使用することで、開発者はデータを任意のストレージに永続化したり、別のデータパイプラインに直接送信することができる。
  • サブストリームはファイアホースで作成されたフラットファイルを使用して、変換されデータシンクに格納されるすべてのデータをパイプで取り込む。
  • サブストリームを利用したサブグラフでは、サブグラフ作成者によって定義された GraphQL API エンドポイントを介して、インデックス化されたデータを簡単にクエリできる。

次にすべきことは?

ここまでで、サブグラフ、ファイヤーホース、サブストリームの違いについて理解できたのではないかと思います。

まずは誰でもサブグラフの作成と公開グラフネットワークへのクエリの送信、サブグラフのレジストリの閲覧など、様々なことを試せます。ファイヤーホースノードを動かしてみたい方は、現在サポートされているプロトコルをご覧ください。また、どのサブストリームパッケージが使用可能かを確認したり、サブストリームを使用したサブグラフのフードを見たりすることができます。

The Graphについて

The Graphはweb3のインデックスとクエリのレイヤーであり、開発者はサブグラフと呼ばれるオープンAPIを構築・公開して、GraphQLを使ってクエリを実行できます。The Graphは現在、Ethereum、NEAR、Arbitrum、Optimism、ZkSync、Polygon、Avalanche、Celo、Fantom、Moonbeam、IPFS、Cosmos Hub、PoAを含む40以上のネットワークからのインデックスデータをサポートしており、さらに多くのネットワークが公開されていく予定です。現在までに、88,900以上のサブグラフがホスティングサービスにデプロイされ、何万人もの開発者が、Uniswap、Synthetix、KnownOrigin、Art Blocks、Gnosis、Balancer、Livepeer、DAOstack、Audius、DecentralandなどのアプリケーションにThe Graphを使用しています。

グラフネットワークの開発者向けセルフサービスは2021年7月に開始され、それ以来、800以上のサブグラフがネットワークにアップグレードされています。現在までに200以上のインデクサーがサブグラフのクエリーを提供しており、11,300以上のデリゲーター、2,500以上のキュレーターが存在し、現在まで560万以上のGRTがシグナリングに活用されています。

アプリケーションやWeb3アプリケーションを構築している開発者であれば、ブロックチェーンデータのインデックス作成やクエリにサブグラフを使用することができます。グラフを使うことで、アプリケーションに効率的かつ高パフォーマンスでデータをUIに表示でき、他の開発者もあなたのサブグラフを使うことが可能です!Subgraph Studioを使ってサブグラフをネットワークにデプロイしたり、Graph Explorerの既存のサブグラフをクエリすることができます。The Graphは、The Graphのメインネットのインデクサーキュレーターデリゲーターとしてどなたでも歓迎しています。Discordで技術的なディスカッションをしたり、Telegramチャットに参加したり各コンテンツをフォローして、The Graphのコミュニティに参加してください!The Graphのエコシステムには、お互いをサポートし合う開発者のコミュニティが広がっています。

The Graph FoundationはThe Graph Networkの監督機関です。また、The Graph Foundationは技術評議会によって監督されています。Edge & Node, StreamingFast, Semiotic Labs, The Guild, Messari, GraphOpsは、The Graphエコシステム内の7つのコア組織として活動しています。

The Graphの各コンテンツをフォローしてご参加ください!

--

--

The Graph Japan
The Graph Protocol Japan

オープンAPIによる分散型アプリケーションを可能に GraphQLでブロックチェーンデータをクエリする為のインデックスプロトコルです