とはホストされたサービス?
Reading time: 5 min
ホスト型サービスは 2023 年に廃止されますが、分散型ネットワークでサポートされていないネットワークでも引き続き利用できることに注意してください。より多くのネットワークがサポートされているため、開発者はサブグラフを The Graph Network にアップグレードすることをお勧めします。各ネットワークでは、開発者がサブグラフを分散型ネットワークにアップグレードするのに十分な時間を確保できるように、ホスト型サービスと同等のサービスが段階的に廃止されます。ホスト型サービスの終了について詳しくは、こちらをご覧ください。
このセクションでは、ホストされたサービスにサブグラフをデプロイする手順を説明します。
ホストされているサービスのアカウントをお持ちでない場合は、GitHub アカウントでサインアップできます。認証が完了すると、UI を介してサブグラフの作成を開始し、端末からそれらのデプロイを開始できます。ホストされたサービスは、Polygon、Gnosis Chain、BNB Chain、Optimism、Arbitrum などの多数のネットワークをサポートします。
包括的なリストについては、サポートされているネットワークをご覧ください。
まずこちらの指示に従って、Graph CLI をインストールします。graph init --product hosted service
を渡してサブグラフを作成します。
選択したネットワークにスマート コントラクトを既に展開している場合は、このコントラクトから新しいサブグラフをブートストラップすることが、ホストされるサービスを開始するための良い方法となる可能性があります。
このコマンドを使用して、既存のコントラクトからすべてのイベントにインデックスを付けるサブグラフを作成できます。これは、Etherscanからコントラクト ABI をフェッチしようとします。
graph init \--product hosted-service--from-contract <CONTRACT_ADDRESS> \<GITHUB_USER>/<SUBGRAPH_NAME> [<DIRECTORY>]
さらに、以下のオプション引数を使用することもできます。ABI が Etherscan から取得できない場合は、ローカルファイルのパスを要求するようにフォールバックします。コマンドにオプション引数がない場合は、対話形式になります。
--network <ETHEREUM_NETWORK> \--abi <FILE> \
この場合の <GITHUB_USER>
は GitHub ユーザーまたは組織名、<SUBGRAPH_NAME>
はサブグラフの名前、<DIRECTORY>
です。 graph init
がサンプル サブグラフ マニフェストを配置するディレクトリのオプションの名前です。 <CONTRACT_ADDRESS>
は、既存の契約のアドレスです。 <ETHEREUM_NETWORK>
は、コントラクトが存在するネットワークの名前です。 <FILE>
は、コントラクト ABI ファイルへのローカル パスです。 --network
と --abi
はどちらもオプションです。
graph init
がサポートする 2 つ目のモードは、例となるサブグラフから新しいプロジェクトを作成することです。以下のコマンドがこれを行います:
graph init --from-example --product hosted-service <GITHUB_USER>/<SUBGRAPH_NAME> [<DIRECTORY>]
サンプルのサブグラフは、Dani Grant による Gravity コントラクトをベースにしています。このコントラクトは、ユーザーのアバターを管理し、アバターが作成または更新されるたびにNewGravatar
またはUpdateGravatar
イベントを発行します。サブグラフは、Gravatar
エンティティをグラフノードストアに書き込み、イベントに応じてこれらが更新されるようにすることで、これらのイベントを処理します。subgraph manifestを見ると、スマートコントラクトからどのイベントに注意を払うべきか、マッピングなどがよくわかります。
Proxyコントラクトを監視するためのサブグラフを作成するには、実装コントラクトのアドレスを指定してサブグラフを初期化します。初期化プロセスが完了したら、最後のステップとして、subgraph.yamlファイルのネットワーク名をProxyコントラクトのアドレスに更新します。以下のコマンドを使用します。
graph init \--product hosted-service--from-contract <IMPLEMENTATION_ADDRESS> \<GITHUB_USER>/<SUBGRAPH_NAME> [<DIRECTORY>]
対応ネットワークの一覧はこちらで確認できます。