クイックスタート
このガイドでは、サブグラフの初期化、作成、Subgraph Studioまたはホスティングサービスへのデプロイ方法を説明します。
サブグラフが supported network からのデータにインデックスを付けることを確認してください。
このガイドは、次のことを前提として書かれています。
- 選択したネットワーク上のスマート コントラクト アドレス
- サブグラフをキュレートする GRT
- クリプトウォレット
Subgraph Studioにアクセスし、ウォレットを接続する。
接続したら、「サブグラフの作成」をクリックして開始できます。選択したネットワークを選択し、[続行] をクリックします。
Graph CLI は JavaScript で書かれており、これを使用するには「npm」または「yarn」のいずれかをインストールする必要があります。
ローカル マシンで、次のいずれかのコマンドを実行します。
Using npm:
npm install -g @graphprotocol/graph-cli
Using yarn:
yarn global add @graphprotocol/graph-cli
特定のサブグラフのコマンドは、Subgraph Studio のサブグラフ ページで見つけることができます。
サブグラフを初期化すると、CLI ツールは次の情報を要求します。
- プロトコル: サブグラフがデータのインデックスを作成するプロトコルを選択します
- サブグラフ スラッグ: サブグラフの名前を作成します。サブグラフ スラッグは、サブグラフの識別子です。
- サブグラフを作成するディレクトリ: ローカル ディレクトリを選択します
- Ethereum ネットワーク (オプション): サブグラフがデータのインデックスを作成する EVM 互換ネットワークを指定する必要がある場合があります。
- コントラクト アドレス: データを照会するスマート コントラクト アドレスを見つけます。
- ABI: ABI が自動入力されない場合は、JSON ファイルとして手動で入力する必要があります
- 開始ブロック: サブグラフがブロックチェーン データをインデックス化する間、時間を節約するために開始ブロックを入力することをお勧めします。コントラクトが展開されたブロックを見つけることで、開始ブロックを見つけることができます。
- 契約名: 契約の名前を入力します
- コントラクト イベントをエンティティとしてインデックス付けする: これを true に設定することをお勧めします。発行されたすべてのイベントのサブグラフにマッピングが自動的に追加されるためです。
- 別の契約を追加 (オプション): 別の契約を追加できます
次のコマンドを実行して、既存のコントラクトからサブグラフを初期化します。
graph init --studio <SUBGRAPH_SLUG>
サブグラフを初期化する際に予想されることの例については、次のスクリーンショットを参照してください。
前述のコマンドでは、サブグラフを作成するための出発点として使用できる scaffold サブグラフを作成します。 サブグラフに変更を加える際には、主に 3 つのファイルを使用します:
- マニフェスト (subgraph.yaml) - マニフェストは、サブグラフがインデックスするデータソースを定義します。
- スキーマ (schema.graphql) - GraphQL スキーマは、サブグラフから取得するデータを定義します.
- AssemblyScript Mappings (mapping.ts) - データソースからのデータを、スキーマで定義されたエンティティに変換するコードです。
サブグラフの書き方については、サブグラフの作成 をご覧ください。
サブグラフが作成されたら、次のコマンドを実行します。
$ graph codegen$ graph build
- サブグラフの認証とデプロイを行います。 デプロイキーは、Subgraph Studio の Subgraph ページにあります。
$ graph auth --studio <DEPLOY_KEY>$ graph deploy --studio <SUBGRAPH_SLUG>
バージョンラベルの入力を求められます。 「0.0.1」のようなバージョン管理には semver を使用することを強くお勧めします。 つまり、「v1」、「version1」、「asdf」などの任意の文字列をバージョンとして自由に選択できます。
プレイグラウンド セクションでサンプル クエリを作成して、サブグラフをテストできます。
ログは、サブグラフにエラーがあるかどうかを示します。運用サブグラフのログは次のようになります。
サブグラフに障害が発生した場合は、GraphiQL Playground を使用してサブグラフの健全性をクエリできます。 以下のクエリを利用して、サブグラフのデプロイメント ID を入力できることに注意してください。 この場合、Qm...
はデプロイメント ID です (これは、サブグラフ ページの 詳細 にあります)。 以下のクエリはサブグラフがいつ失敗したかを通知するため、それに応じてデバッグできます。
{nodesyncedhealthfatalError {messageblock {numberhash}handler}nonFatalErrors {messageblock {numberhash}handler}chains {networkchainHeadBlock {number}earliestBlock {number}latestBlock {number}lastHealthyBlock {number}}entityCount}}
サブグラフが Subgraph Studio にデプロイされたら、それをテストして、本番環境に配置する準備ができたら、それを分散ネットワークに公開できます。
Subgraph Studio で、サブグラフをクリックします。サブグラフのページでは、右上の公開ボタンをクリックできます。
サブグラフを公開したいネットワークを選択します。 faster transaction speeds and lower gas costs を利用するために、サブグラフを Arbitrum One に公開することをお勧めします。
サブグラフにクエリを実行する前に、インデクサーはサブグラフに対するクエリの提供を開始する必要があります。このプロセスを合理化するために、GRT を使用して独自のサブグラフをキュレートできます。
執筆時点では、独自のサブグラフを 10,000 GRT でキュレートして、できるだけ早くインデックスを作成してクエリに使用できるようにすることをお勧めします。
ガスのコストを節約するために、サブグラフを The Graph の分散型ネットワークに公開するときにこのボタンを選択すると、公開したのと同じトランザクションでサブグラフをキュレートできます。
これで、GraphQL クエリをサブグラフのクエリ URL に送信することで、サブグラフにクエリを実行できます。これは、クエリ ボタンをクリックして見つけることができます。
API キーを持っていない場合は、開発とステージングに使用できる無料のレート制限された一時クエリ URL を介して、dapp からクエリを実行できます。
サブグラフからデータをクエリする方法については、こちらを参照してください。