本文へスキップ
このページは英語からの機械翻訳を使用しており、誤りや不明瞭な表現が含まれている可能性があります。最も正確な情報については、オリジナルの英語版をご覧ください。頻繁な更新のため、一部のコンテンツはオリジナルの英語になっている可能性があります。Crowdinでの取り組みに参加して、このページの翻訳改善にご協力ください。 (Crowdin translation page, Contributing guide)

The Graph

スマートコントラクトの履歴データを取得することは、ダップ構築時にフラストレーションがたまることがある。 The Graphは、サブグラフと呼ばれるAPIを通じてスマートコントラクトのデータを照会する簡単な方法を提供する。 Graphのインフラはインデクサーの分散型ネットワークに依存しており、あなたのダップが真の分散型になることを可能にする。

カイア・メインネットとテストネットはどちらもザ・グラフのサポートを受けている。

クイックスタート

これらのサブグラフの設定には数分しかかからない。 これらのサブグラフの設定には数分しかかからない。 始めるには、以下の3つのステップを踏む:

  1. サブグラフ・プロジェクトを初期化する
  2. デプロイとパブリッシュ
  3. ダップからのクエリー

価格設定:

  • Studioのレート制限付きテストエンドポイントは無料。
  • 分散型ネットワークのAPIコールは有料で、10万クエリーあたり4ドル。 最初の10万クエリーは無料!

以下、順を追って説明しよう:

1. サブグラフ・プロジェクトを初期化する

Subgraph Studioでサブグラフを作成する

Subgraph Studio](https://thegraph.com/studio/)にアクセスし、ウォレットを接続する。 ウォレットが接続されたら、"Create a Subgraph "をクリックします。 名称を決める際には、タイトル・ケースを使うことを推奨する。 ウォレットが接続されたら、"Create a Subgraph "をクリックします。 名称を決める際には、タイトル・ケースを使うことを推奨する。

Create a Subgraph

サブグラフのページが表示されます。 サブグラフのページが表示されます。 必要なCLIコマンドはすべてページの右側に表示されます:

CLI commands

Graph CLIのインストール

ローカル・マシンで以下を実行する:


npm install -g @graphprotocol/graph-cli

サブグラフを初期化する

これをサブグラフのページから直接コピーして、特定のサブグラフのスラッグを含めることができる:


グラフ開始 --スタジオ<SUBGRAPH_SLUG>

このように、サブグラフに関する情報を入力するプロンプトが表示される:

CLI sample

コントラクト情報を入力すると、graph-cli は blockexplorer API から ABI、StartBLock、コントラクト名を取得しようとします。

ただし、KaiaScanのAPIはまだ準備ができていないので、再試行を求められたら「いいえ」と答えてください。 手動で入手する方法は以下の通り: 手動で入手する方法は以下の通り:

  1. ABI: ABIを含むjsonファイルをgraph initを実行しているディレクトリに用意する必要がある。 Kaiascanの契約のページから、Contractタブを開き、View Codeをクリックすると、ABIをコピーすることができます。 それをjsonファイルとして、graph initを実行しているフォルダと同じ場所に保存する。 上のスクリーンショットでは、abi.jsonとして保存されている。 Finding ABI Kaiascanの契約のページから、Contractタブを開き、View Codeをクリックすると、ABIをコピーすることができます。 それをjsonファイルとして、graph initを実行しているフォルダと同じ場所に保存する。 上のスクリーンショットでは、abi.jsonとして保存されている。 Finding ABI

  2. ブロックを開始する:契約が作成されたトランザクションハッシュをクリックします。 そこに契約が作成されたブロックがある。 contract creation そこに契約が作成されたブロックがある。 contract creation

  3. 契約名:契約名を入力してください。 契約名:契約名を入力してください。 このサブグラフでインデックスを作成するコントラクトがこれだけであれば、デフォルトの Contract を使用しても問題ありません。

3) デプロイと公開

Subgraph Studioにデプロイする

まず、以下のコマンドを実行する:


$ graph codegen
$ graph build

次に、これらを実行してサブグラフを認証し、デプロイする。 次に、これらを実行してサブグラフを認証し、デプロイする。 これらのコマンドをStudioのサブグラフのページから直接コピーして、特定の配置キーとサブグラフのスラッグを含めることができます:


$ graph auth --studio<DEPLOY_KEY>
$ graph deploy --studio<SUBGRAPH_SLUG>

デプロイと公開 バージョンラベルの入力を求められます。 v0.0.1のように入力できますが、形式は自由に選んでください。

サブグラフをテストする

プレイグラウンド・セクションでサンプル・クエリーを作成し、サブグラフをテストすることができる。 DetailsタブにはAPIエンドポイントが表示されます。 そのエンドポイントを使って、ダップからテストすることができる。

Playground

グラフの分散型ネットワークにサブグラフを公開する

サブグラフが完成したら、分散ネットワークに公開することができる。 サブグラフが完成したら、分散ネットワークに公開することができる。 Subgraph Studioのサブグラフのページで、Publishボタンをクリックします:

publish button

  • インデクサーの報酬をアンロックするための最終的なオンチェーン投票プロセスがまだ完了していないため、カイアは今のところ「部分的にサポートされている」と表示されている。 今のところ、Edge & Nodeのインデクサー(アップグレード・インデクサー)が、すべてのカイア・サブグラフをサポートする唯一のインデクサーとなる。 今のところ、Edge & Nodeのインデクサー(アップグレード・インデクサー)が、すべてのカイア・サブグラフをサポートする唯一のインデクサーとなる。
  • グラフのスマートコントラクトはすべてArbitrum One上にあり、サブグラフがKaiaやEthereum、その他のサポートされているチェーンのデータをインデックスしていても、そのデータはArbitrum One上にある。

3. 3. Query your Subgraph

おめでとう! これで分散型ネットワーク上で自分のサブグラフを照会できる!

分散ネットワーク上のどのサブグラフに対しても、エクスプローラーページの一番上にあるサブグラフのクエリーURLにGraphQLクエリーを渡すことでクエリーを開始できる。

これはMessariによるCryptoPunks Ethereum subgraphからの例である:

Query URL

このサブグラフのクエリーURLは以下の通り:

https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/HdVdERFUe8h61vm2fDyycgxjsde5PbB832NHgJfZNqK

このエンドポイントにGraphQLクエリーを送信するためには、API Keyを入力する必要がある。

APIキーの取得

API keys

Subgraph Studioでは、ページ上部に "API Keys "メニューが表示されます。 ここでAPIキーを作成することができます。 ここでAPIキーを作成することができます。

付録

サンプルクエリー

このクエリでは、最も高価なCryptoPunksが販売されている。


{
trades(orderBy: priceETH, orderDirection: desc) {
priceETH
tokenId
}.
}

これをクエリーURLに渡すと、このような結果が返される:


{
"data":{
"trades":[
{
"priceETH":"124457.067524886018255505",
"tokenId":"9998"
},
{
"priceETH":"8000",
"tokenId":"5822"
},
// ...

サンプルコード


const axios = require('axios');
const graphqlQuery = `{
trades(orderBy: priceETH, orderDirection: desc) {
priceETH
tokenId
}
}`;
const queryUrl = 'https://gateway-arbitrum.network.thegraph.com/api/[api-key]/subgraphs/id/HdVdERFUe8h61vm2fDyycHgxjsde5PbB832NHgJfZNqK'
const graphQLRequest = {
method: 'post',
url: queryUrl,
data: {
query: graphqlQuery,
},
};
// Send the GraphQL query
axios(graphQLRequest)
.then((response) => {
// Handle the response here
const data = response.data.data
console.log(data)
})
.catch((error) => {
// Handle any errors
console.error(error);
});

その他のリソース

  • より良いパフォーマンスのためにサブグラフを最適化&カスタマイズする方法については、サブグラフの作成をお読みください。
  • サブグラフからのデータ・クエリについては、こちらを参照してください。
ページを改善してください。