ザ・グラフ(GRT)初心者が押さえるべき基礎用語選
ザ・グラフ(The Graph、以下GRT)は、ブロックチェーン上のデータを効率的にクエリするための分散型プロトコルです。近年、Web3アプリケーションの開発において不可欠な存在となりつつあり、その重要性は増しています。しかし、GRTを理解するには、いくつかの基礎用語を把握する必要があります。本稿では、GRTの初心者に向けて、その基礎用語を網羅的に解説します。専門的な内容も含まれますが、できる限り分かりやすく説明することを心がけます。
1. ブロックチェーンとデータ
GRTを理解する上で、まずブロックチェーンの基本的な仕組みを理解する必要があります。ブロックチェーンは、取引履歴を記録したブロックを鎖のように繋げたものです。各ブロックには、ハッシュ値と呼ばれる一意の識別子が割り当てられており、改ざんが極めて困難な構造となっています。このブロックチェーン上に記録されたデータは、そのままではアクセスや分析が難しいため、GRTのようなインデックス作成プロトコルの必要性が生じます。
2. Subgraph(サブグラフ)
Subgraphは、GRTの中核となる概念です。特定のブロックチェーン上のデータを、特定の目的に合わせて整理・構造化したものです。例えば、あるDeFiプロトコルの取引履歴や、NFTの所有者情報などをSubgraphとして定義することができます。Subgraphは、GraphQLというクエリ言語を使ってアクセスすることができます。
3. GraphQL(グラフキューエル)
GraphQLは、APIのためのクエリ言語であり、データ取得の効率化を目的として開発されました。従来のREST APIとは異なり、GraphQLでは、クライアントが必要なデータのみを要求することができます。これにより、不要なデータの取得を避けることができ、ネットワーク帯域幅の節約や、アプリケーションのパフォーマンス向上に繋がります。GRTは、Subgraphを通じてGraphQL APIを提供します。
4. Indexer(インデクサー)
Indexerは、ブロックチェーン上のデータを読み込み、Subgraphに基づいてインデックスを作成するノードです。Indexerは、ブロックチェーンのイベントを監視し、Subgraphで定義された条件に合致するデータを抽出して、効率的に検索できるように格納します。Indexerは、GRTネットワークに参加することで、GRTトークンを獲得することができます。
5. Curator(キュレーター)
Curatorは、Subgraphの品質を評価し、GRTトークンを使ってSubgraphにシグナルを送る役割を担います。Curatorは、質の高いSubgraphをサポートすることで、GRTネットワーク全体の信頼性を高めることに貢献します。Curatorは、正しくシグナルを送ることで、GRTトークンを獲得することができます。
6. Delegator(デリゲーター)
Delegatorは、IndexerにGRTトークンを委任することで、Indexerの活動を支援する役割を担います。Delegatorは、Indexerが獲得した報酬の一部を受け取ることができます。Delegatorは、Indexerの選択によって、報酬の獲得額が変動します。
7. GRTトークン
GRTトークンは、GRTネットワークのネイティブトークンであり、Indexer、Curator、Delegatorのインセンティブとして機能します。Indexerは、データをインデックス化することでGRTトークンを獲得し、Curatorは、質の高いSubgraphにシグナルを送ることでGRTトークンを獲得し、Delegatorは、IndexerにGRTトークンを委任することで、Indexerが獲得した報酬の一部をGRTトークンとして受け取ります。
8. The Graph Node(グラフノード)
The Graph Nodeは、GRTネットワークに参加するために必要なソフトウェアです。Indexer、Curator、Delegatorは、The Graph Nodeをインストールし、設定する必要があります。The Graph Nodeは、ブロックチェーンとの接続、データのインデックス化、GraphQL APIの提供などの機能を提供します。
9. Deployment(デプロイメント)
Deploymentは、SubgraphをGRTネットワークに公開するプロセスです。Subgraphをデプロイするには、Subgraphのマニフェストファイル(schema.graphql, mapping.tsなど)を作成し、The Graph Nodeを使ってGRTネットワークに送信する必要があります。デプロイメントが完了すると、SubgraphはGraphQL APIを通じてアクセスできるようになります。
10. Manifest(マニフェスト)
Manifestは、Subgraphの定義ファイルであり、Subgraphの構造、データソース、マッピングなどを記述します。Manifestには、schema.graphql(GraphQLスキーマ)、mapping.ts(データマッピング)、configuration.json(設定ファイル)などが含まれます。Manifestは、Subgraphのデプロイメントに不可欠な要素です。
11. Schema(スキーマ)
Schemaは、GraphQLで使用されるデータ型を定義するものです。Subgraphのschemaは、Subgraphが提供するデータの構造を記述します。Schemaは、GraphQLクエリの基礎となります。
12. Mapping(マッピング)
Mappingは、ブロックチェーン上のデータをSubgraphのschemaに変換するコードです。Mappingは、通常、TypeScriptで記述され、ブロックチェーンのイベントを監視し、イベントデータから必要な情報を抽出して、schemaに合致するように変換します。
13. Event(イベント)
Eventは、ブロックチェーン上で発生する特定の出来事を指します。例えば、トークンの転送、スマートコントラクトの実行、NFTの発行などがイベントとして記録されます。Subgraphは、これらのイベントを監視し、マッピングを通じてデータを抽出します。
14. Entity(エンティティ)
Entityは、Subgraphで管理されるデータの単位です。例えば、ユーザー情報、取引履歴、NFTのメタデータなどがエンティティとして定義されます。Entityは、schemaに基づいて構造化され、GraphQLクエリを通じてアクセスすることができます。
15. Query(クエリ)
Queryは、GraphQLを使用してデータを要求する操作です。クライアントは、GraphQLクエリをSubgraphに送信し、必要なデータを取得します。クエリは、schemaに基づいて記述され、特定のエンティティや属性を指定することができます。
16. Network(ネットワーク)
Networkは、GRTネットワーク全体を指します。GRTネットワークは、Indexer、Curator、Delegator、Subgraphなどの要素で構成され、分散型で動作します。GRTネットワークは、ブロックチェーン上のデータを効率的にクエリするためのインフラストラクチャを提供します。
17. Hosted Service(ホストサービス)
Hosted Serviceは、GRTネットワークへの参加を容易にするためのサービスです。Hosted Serviceを利用することで、The Graph Nodeのインストールや設定が不要になり、簡単にSubgraphをデプロイすることができます。しかし、Hosted Serviceは、GRTネットワークへの直接的な参加ではないため、GRTトークンの獲得機会が制限される場合があります。
18. Data Source(データソース)
Data Sourceは、Subgraphがデータを取得するブロックチェーン上のアドレスまたはコントラクトを指します。Subgraphは、Data Sourceからイベントを監視し、マッピングを通じてデータを抽出します。
19. AssemblyScript(アセンブリスクリプト)
AssemblyScriptは、WebAssembly(Wasm)をターゲットとするTypeScriptに似たプログラミング言語です。GRTのマッピングは、AssemblyScriptで記述されることが推奨されています。AssemblyScriptは、パフォーマンスが高く、セキュリティに優れているという特徴があります。
20. IPFS(インタープラネタリファイルシステム)
IPFSは、分散型ファイルシステムであり、コンテンツアドレス指定によってファイルを識別します。Subgraphのマニフェストファイルは、IPFSに保存されることが推奨されています。IPFSは、データの永続性と可用性を高めることができます。
まとめ
本稿では、GRTの初心者に向けて、その基礎用語を網羅的に解説しました。GRTは、ブロックチェーン上のデータを効率的にクエリするための強力なツールであり、Web3アプリケーションの開発において不可欠な存在となりつつあります。これらの基礎用語を理解することで、GRTをより深く理解し、効果的に活用することができるでしょう。GRTは、まだ発展途上の技術であり、今後も様々な進化が期待されます。常に最新の情報を収集し、GRTの可能性を探求していくことが重要です。