新しいネットワークの統合
Reading time: 6 min
Graph Nodeは現在、以下のチェーンタイプからデータをインデックス化できます:
もしご興味があるチェーンがあれば、統合はGraph Nodeの設定とテストの問題です。
異なるチェーンタイプに興味がある場合、Graph Nodeとの新しい統合を構築する必要があります。私たちの推奨するアプローチは、問題のチェーン用に新しい Firehose を開発し、その Firehose を Graph Node と統合することです。詳細は下記をご覧ください。
1. EVM JSON-RPC
ブロックチェーンが EVM と同等であり、クライアント/ノードが標準の EVM JSON-RPC API を公開している場合、グラフ ノードは新しいチェーンのインデックスを作成できるはずです。 詳細については、「EVM JSON-RPC のテスト」(new-chain-integration#testing-an-evm-json-rpc) を参照してください。
2. Firehose
EVMベースでないチェーンの場合、Graph NodeはgRPCと既知の型定義を介してブロックチェーンデータを取り込む必要があります。これはによって開発された新技術であるを介して行うことができ、ファイルベースとストリーミングファーストアプローチを使用して高度にスケーラブルなインデックス化ブロックチェーンソリューションを提供します。Firehoseの開発でサポートが必要な場合は、までご連絡ください。
これらの2つの方法は、サブグラフに適していますが、, を使用して開発者がビルドする場合、常にFirehoseが必要です。これには、 のようなサブストリームを活用したサブグラフの構築が含まれます。さらに、FirehoseはJSON-RPCと比較して、改善されたインデックス化速度を提供します。
新しいEVMチェーンの統合者は、サブストリームの利点とその大規模な並列化されたインデックス化能力を考慮して、Firehoseベースのアプローチも検討することができます。両方をサポートすることで、開発者は新しいチェーンに対してサブストリームまたはサブグラフのどちらを構築するかを選択できるようになります。
注意: EVM チェーンの Firehose ベースの統合では、インデクサーがチェーンのアーカイブ RPC ノードを実行してサブグラフに適切にインデックスを付ける必要があります。 これは、通常「eth_call」RPC メソッドによってアクセスできるスマート コントラクト状態を Firehose が提供できないためです。 (eth_calls は であることを思い出してください)
Graph NodeがEVMチェーンからデータを取り込むためには、RPCノードは以下のEVM JSON RPCメソッドを公開する必要があります。
eth_getLogs
eth_call
_(for historical blocks, with EIP-1898 - requires archive node):eth_getBlockByNumber
eth_getBlockByHash
net_version
eth_getTransactionReceipt
, in a JSON-RPC batch requesttrace_filter
(optionally required for Graph Node to support call handlers)
ローカル環境を準備することから始めます
- を変更して、新しいネットワーク名と EVM JSON RPC 準拠の URL を含めます。
環境変数名自体は変更しないでください。ネットワーク名が異なる場合でも、「ethereum」という名前のままである必要があります。
- IPFSノードを実行するか、The Graphが使用するものを使用してください:
サブグラフをローカルにデプロイして統合をテストします。
- Install
- 簡単なサブグラフの例を作成します。 いくつかのオプションを以下に示します。
- Adapt the resulting
subgraph.yaml
by changingdataSources.network
to the same name previously passed on to Graph Node. - グラフ ノードでサブグラフを作成します:
graph create $SUBGRAPH_NAME --node $GRAPH_NODE_ENDPOINT
- サブグラフをGraph Nodeに公開するには、次のコマンドを使用します:graph deploy $SUBGRAPH_NAME --ipfs $IPFS_ENDPOINT --node $GRAPH_NODE_ENDPOINT
Graph Nodeはエラーがない場合、デプロイされたサブグラフを同期するはずです。同期が完了するのを待ってから、ログに表示されたAPIエンドポイントに対していくつかのGraphQLクエリを送信してください。
新しいチェーンを統合することは、Firehoseアプローチを使用しても可能です。これは、非EVMチェーン向けの現在の最良のオプションであり、サブストリームサポートの要件でもあります。追加のドキュメントでは、Firehoseの動作方法、新しいチェーンへのFirehoseサポートの追加、およびGraph Nodeとの統合に焦点を当てています。統合者に推奨されるドキュメント: