【初心者向け】ザ・グラフ(GRT)の始め方完全マニュアル
ザ・グラフ(GRT)は、ブロックチェーンデータのインデックス作成とクエリ実行を効率的に行うためのオープンソースのGraphQL APIレイヤーです。分散型アプリケーション(dApps)の開発者は、GRTを利用することで、ブロックチェーンから必要な情報を迅速かつ容易に取得し、アプリケーションに統合できます。本マニュアルでは、GRTの基本的な概念から、環境構築、データソースの定義、デプロイメント、そしてクエリの実行まで、初心者向けに完全な手順を解説します。
1. GRTの基礎知識
GRTを理解するためには、いくつかの重要な概念を把握する必要があります。
- ブロックチェーンデータ:GRTは、Ethereum、Polygon、Avalancheなど、様々なブロックチェーンのデータを扱います。
- GraphQL:GraphQLは、APIのためのクエリ言語であり、クライアントが必要なデータのみを要求できるため、効率的なデータ取得が可能です。
- Subgraph:Subgraphは、ブロックチェーンの特定のイベントやエンティティを定義し、GraphQL APIを通じてアクセスできるようにする設定ファイルです。
- The Graph Node:The Graph Nodeは、Subgraphをホストし、GraphQL APIを提供するためのソフトウェアです。
- Graph Explorer:Graph Explorerは、公開されているSubgraphを検索し、クエリを実行するためのWebインターフェースです。
GRTの主な利点は以下の通りです。
- 効率的なデータアクセス:GraphQLを使用することで、必要なデータのみを取得できます。
- スケーラビリティ:分散型のインデックス作成により、大規模なブロックチェーンデータにも対応できます。
- 開発の簡素化:Subgraphを定義することで、複雑なブロックチェーンデータの処理を抽象化できます。
2. 環境構築
GRTを使用するには、まず開発環境を構築する必要があります。以下の手順に従ってください。
2.1 Node.jsとnpmのインストール
GRTの開発にはNode.jsとnpm(Node Package Manager)が必要です。以下の公式サイトから最新バージョンをダウンロードしてインストールしてください。
インストール後、ターミナルで以下のコマンドを実行して、Node.jsとnpmが正しくインストールされていることを確認してください。
node -v
npm -v
2.2 The Graph CLIのインストール
The Graph CLIは、Subgraphの作成、デプロイメント、ローカルでの実行を支援するコマンドラインツールです。以下のコマンドを実行してインストールしてください。
npm install -g @graphprotocol/graph-cli
インストール後、ターミナルで以下のコマンドを実行して、The Graph CLIが正しくインストールされていることを確認してください。
graph --version
2.3 Ganacheのインストール(ローカルテスト用)
ローカルでSubgraphをテストするには、Ganacheなどのローカルブロックチェーンが必要です。以下の公式サイトから最新バージョンをダウンロードしてインストールしてください。
3. Subgraphの作成
Subgraphを作成するには、以下の手順に従ってください。
3.1 プロジェクトの初期化
ターミナルで以下のコマンドを実行して、新しいプロジェクトを作成してください。
graph init my-subgraph
このコマンドは、`my-subgraph`という名前のディレクトリを作成し、必要なファイルとディレクトリを生成します。
3.2 schema.graphqlの定義
`schema.graphql`ファイルは、Subgraphが扱うエンティティとイベントを定義します。例えば、EthereumのERC20トークンを扱うSubgraphを作成する場合、以下のような定義を追加します。
type Token @entity {
id: ID!
symbol: String!
name: String!
totalSupply: BigInt!
}
type Transfer @entity {
id: ID!
from: String!
to: String!
value: BigInt!
blockNumber: BigInt!
}
3.3 mappingファイルの作成
mappingファイルは、ブロックチェーンのイベントをSubgraphのエンティティに変換するロジックを記述します。例えば、ERC20トークンの`Transfer`イベントを処理するmappingファイルは以下のようになります。
import { Transfer } from "../generated/schema";
export function handleTransfer(event: TransferEvent): void {
let transfer = new Transfer(
event.transaction.hash.toHex() + "-" + event.logIndex.toString()
);
transfer.from = event.params.from.toHex();
transfer.to = event.params.to.toHex();
transfer.value = event.params.value;
transfer.blockNumber = event.block.number;
transfer.save();
}
3.4 subgraph.yamlの定義
`subgraph.yaml`ファイルは、Subgraphのメタデータ、データソース、mappingファイルを定義します。例えば、ERC20トークンを扱うSubgraphの`subgraph.yaml`ファイルは以下のようになります。
specVersion: '0.20.0'
kind: subgraph
runtimeVersion: '0.20.0'
repository: "https://github.com/your-username/your-subgraph"
dataSources:
- kind: ethereum
name: ERC20
network: mainnet
source: Address(0xdAC17F958D2ee523a2206206994597C13D831ec7)
abis:
- name: ERC20
file: ./abis/ERC20.json
mapping:
kind: ethereum/events
apiVersion: 0.0.7
language: wasm/assemblyscript
src: ./src/mapping.ts
handlers:
- event: Transfer(address,address,uint256)
handler: handleTransfer
4. Subgraphのデプロイメント
Subgraphをデプロイするには、以下の手順に従ってください。
4.1 The Graph Networkへの接続
Subgraphをデプロイするには、The Graph Networkに接続する必要があります。以下のコマンドを実行して、The Graph Networkにログインしてください。
graph auth https://api.thegraph.com/deploy/
このコマンドは、ブラウザを開き、The Graph Networkにログインするための認証フローを開始します。
4.2 Subgraphのデプロイ
以下のコマンドを実行して、Subgraphをデプロイしてください。
graph deploy --studio my-subgraph
このコマンドは、SubgraphをThe Graph Networkにデプロイし、GraphQL APIのエンドポイントを提供します。
5. クエリの実行
Subgraphがデプロイされたら、GraphQL APIを使用してクエリを実行できます。以下の手順に従ってください。
5.1 Graph Explorerへのアクセス
Graph Explorerにアクセスし、デプロイされたSubgraphを検索してください。
5.2 クエリの記述と実行
Graph Explorerで、Subgraphを選択し、GraphQLクエリを記述して実行してください。例えば、ERC20トークンの`totalSupply`を取得するクエリは以下のようになります。
query {
token {
totalSupply
}
}
このクエリを実行すると、Subgraphはブロックチェーンから`totalSupply`を取得し、結果を返します。
まとめ
本マニュアルでは、GRTの基本的な概念から、環境構築、データソースの定義、デプロイメント、そしてクエリの実行まで、初心者向けに完全な手順を解説しました。GRTは、ブロックチェーンデータの利用を簡素化し、dAppsの開発を加速するための強力なツールです。本マニュアルを参考に、GRTを活用して、革新的なdAppsを開発してください。継続的な学習と実践を通じて、GRTの可能性を最大限に引き出すことを期待します。