【保存版】ザ・グラフ(GRT)の公式ドキュメントまとめ
ザ・グラフ(The Graph)は、ブロックチェーンデータのインデックス作成とクエリを行うための分散型プロトコルです。これにより、開発者はブロックチェーン上のデータを効率的にアクセスし、dApps(分散型アプリケーション)の構築を容易にすることができます。本ドキュメントは、ザ・グラフの主要な概念、アーキテクチャ、開発プロセス、運用に関する公式情報を網羅的にまとめたものです。開発者、研究者、そしてザ・グラフに関心を持つすべての方にとって、貴重なリソースとなることを目指します。
1. ザ・グラフの概要
ブロックチェーンは、その性質上、データのクエリが困難です。従来のデータベースとは異なり、ブロックチェーンのデータは複雑な構造で保存されており、特定の情報を抽出するには、すべてのブロックをスキャンする必要があるため、時間とリソースを消費します。ザ・グラフは、この問題を解決するために設計されました。ザ・グラフは、ブロックチェーンデータをGraphQL形式でインデックス化し、開発者が効率的にクエリを実行できるようにします。
1.1 主要な概念
- Subgraph: ブロックチェーン上の特定のデータを記述するGraphQL APIです。Subgraphは、開発者が定義し、ザ・グラフネットワークに公開することができます。
- Graph Node: Subgraphのデータをインデックス化し、GraphQLクエリに応答するサーバーです。Graph Nodeは、ザ・グラフネットワークの一部として動作します。
- Indexer: Graph Nodeを運用するエンティティです。Indexerは、Subgraphのデータをインデックス化し、そのサービスに対して報酬を得ることができます。
- GraphQL: APIのためのクエリ言語であり、クライアントが要求するデータを正確に取得することができます。
- The Graph Network: ザ・グラフプロトコルを支える分散型ネットワークです。Indexer、Delegator、Curatorによって構成されます。
2. ザ・グラフのアーキテクチャ
ザ・グラフのアーキテクチャは、以下の主要なコンポーネントで構成されています。
2.1 データソース
データソースは、ブロックチェーン上のデータです。Subgraphは、特定のデータソースを対象として定義されます。データソースには、Ethereum、Polygon、Avalancheなどの様々なブロックチェーンが含まれます。
2.2 Subgraph定義
Subgraph定義は、GraphQLスキーマ、マッピング関数、およびデータソースへの参照を含むYAMLファイルです。GraphQLスキーマは、Subgraphが公開するデータの構造を定義します。マッピング関数は、ブロックチェーン上のデータをGraphQLスキーマに変換します。
2.3 インデックス作成
インデックス作成プロセスでは、Graph NodeがSubgraph定義に基づいてブロックチェーン上のデータをインデックス化します。インデックス化されたデータは、GraphQLクエリに応答するために使用されます。
2.4 クエリ実行
クライアントは、GraphQLクエリをGraph Nodeに送信し、インデックス化されたデータにアクセスします。Graph Nodeは、クエリを実行し、結果をクライアントに返します。
3. Subgraphの開発
Subgraphの開発は、以下のステップで行われます。
3.1 環境構築
Subgraphの開発には、Graph CLI(コマンドラインインターフェース)が必要です。Graph CLIは、Subgraphの作成、ビルド、デプロイを支援します。
3.2 Subgraph定義の作成
Subgraph定義は、YAMLファイルで記述します。GraphQLスキーマ、マッピング関数、データソースへの参照を定義します。マッピング関数は、AssemblyScriptで記述されます。
3.3 Subgraphのビルド
Graph CLIを使用して、Subgraph定義をビルドします。ビルドプロセスでは、Subgraph定義が検証され、GraphQLスキーマが生成されます。
3.4 Subgraphのデプロイ
Subgraphをザ・グラフネットワークにデプロイします。デプロイ後、SubgraphはGraphQL APIとして利用可能になります。
4. ザ・グラフネットワークの運用
ザ・グラフネットワークは、Indexer、Delegator、Curatorによって運用されます。
4.1 Indexer
Indexerは、Graph Nodeを運用し、Subgraphのデータをインデックス化します。Indexerは、インデックス化されたデータを提供することで報酬を得ることができます。Indexerは、高い信頼性と可用性を維持する必要があります。
4.2 Delegator
Delegatorは、IndexerにGRTトークンを委任し、Indexerの運用を支援します。Delegatorは、Indexerの報酬の一部を受け取ることができます。Delegatorは、信頼できるIndexerを選択する必要があります。
4.3 Curator
Curatorは、Subgraphの品質を評価し、適切なSubgraphをザ・グラフネットワークに公開します。Curatorは、質の高いSubgraphを公開することで報酬を得ることができます。Curatorは、Subgraphの正確性と信頼性を検証する必要があります。
5. セキュリティに関する考慮事項
ザ・グラフのセキュリティは、以下の要素によって確保されます。
5.1 データ整合性
ブロックチェーンのデータは、改ざんが困難です。ザ・グラフは、ブロックチェーンのデータをインデックス化することで、データの整合性を確保します。
5.2 分散化
ザ・グラフネットワークは、分散型であるため、単一障害点が存在しません。これにより、ネットワークの可用性と信頼性が向上します。
5.3 監査可能性
ザ・グラフのすべてのトランザクションは、ブロックチェーンに記録されます。これにより、ネットワークの監査可能性が確保されます。
6. 今後の展望
ザ・グラフは、ブロックチェーンデータのインデックス作成とクエリの分野において、重要な役割を果たしています。今後の展望としては、以下の点が挙げられます。
- マルチチェーンサポートの拡大: より多くのブロックチェーンをサポートすることで、ザ・グラフの適用範囲を拡大します。
- パフォーマンスの向上: インデックス作成とクエリのパフォーマンスを向上させることで、より大規模なデータセットを処理できるようにします。
- 開発ツールの改善: Subgraphの開発を容易にするためのツールを改善します。
- コミュニティの拡大: ザ・グラフのコミュニティを拡大し、より多くの開発者とユーザーが参加できるようにします。
7. 公式ドキュメントへのリンク
- The Graph 公式サイト: https://thegraph.com/
- The Graph Developer Documentation: https://thegraph.com/docs/
- The Graph Protocol Documentation: https://github.com/graphprotocol/graph-node/blob/master/docs/
まとめ: ザ・グラフは、ブロックチェーンデータの利用を促進する強力なツールです。本ドキュメントが、ザ・グラフの理解を深め、その活用を促進するための一助となれば幸いです。今後も、ザ・グラフは進化を続け、ブロックチェーンエコシステムの発展に貢献していくでしょう。