0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

The Graphでサブグラフを作成して、ブロックチェーンデータを取得する方法

Posted at

ブロックチェーンのデータの可視化と分析を手助けするための「The Graph」でサブグラフを作成してみました。

下記ドキュメントを参考に、以下の手順で作成しました。
https://thegraph.com/docs/ja/cookbook/quick-start/

Graph CLIのインストール

このプロセスを行うためには、まずGraph CLIを使用します。
Graph CLIはJavaScriptで書かれており、npmまたはyarnを使用してインストールできます。
以下のコマンドのいずれかを使用してGraph CLIをインストールできます。

NPMを使用する場合:

$ npm install -g @graphprotocol/graph-cli

Yarnを使用する場合:

$ yarn global add @graphprotocol/graph-cli

サブグラフの作成

サブグラフの作成は、The GraphのStudioで行います。
以下のURLにアクセスし、「Create Subgraph」をクリックしてください。
https://thegraph.com/studio/

サブグラフの初期化

サブグラフの初期化は以下のコマンドで行います。

graph init --studio <SUBGRAPH_SLUG>

SUBGRAPH_SLUGの部分は作成したサブグラフのスラッグ名を入力します。
対話式で進んでいくので、指示に従って情報を入力しました。
今回はEthereumネットワークとしてFantom Testnetを選択して、コントラクトアドレスは以下を指定しました。
https://testnet.ftmscan.com/address/0x830AEE0b142F34187e9C286753A06ef17336FbC4

サブグラフの認証

次に、以下のコマンドを使用してサブグラフを認証します。
デプロイキーはサブグラフのダッシュボードで確認できます。

graph auth --studio <DEPLOY_KEY>

ビルドとデプロイ

サブグラフのディレクトリに移動し、以下のコマンドを使用してビルドとデプロイを行います。

cd <SUBGRAPH_SLUG>
graph codegen && graph build
graph deploy --studio <SUBGRAPH_SLUG>

以上の手順で、The Graphにサブグラフを作成しデプロイすることが可能になります。
デプロイ後、サブグラフがブロックチェーンとの同期を初め、同期状態はサブグラフのダッシュボードで確認できます。
私が実施したときは一時間くらいかかりました。

データの取得

同期後、PlayGroundにて、クエリを実行し、ブロックチェーンデータを取得しました。

クエリ

{
  # Approvalsエンティティの最初の5件を取得
  approvals(first: 5) {
    id                            # 各承認の一意の識別子
    owner                         # 承認を行ったユーザーのアドレス
    spender                       # オーナーから承認を受けたユーザーのアドレス
    value                         # オーナーがスペンダーに対して承認したトークンの量
  }
  # MinTokensBeforeSwapUpdatedsエンティティの最初の5件を取得
  minTokensBeforeSwapUpdateds(first: 5) {
    id
    minTokensBeforeSwap          # スワップが起こる前の新しい最小トークン量
    blockNumber                  # 更新が行われたブロックの番号
    blockTimestamp               # 更新が行われたブロックのタイムスタンプ
  }
}

メタデータ

{
  "data": {
    "approvals": [
      {
        "id": "0x1b6fc0ff854c2db871a3ab1469fbf136b9897d7a0ee19c01a02614f87f8eddc800000000",
        "owner": "0xebe141903cbf95f533d631c6d3f63f4ea1ccda2c",
        "spender": "0x655c5c7c57a397643bb4b201f465a1df40fc5fa3",
        "value": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
      },
      {
        "id": "0x3cc4fc845552fff40068cdf5f63f7586121af79bc2eba7834e8619591774cb2100000000",
        "owner": "0x2c5fe61cb1b239d36aa891177a5ae7b4db999cc1",
        "spender": "0x655c5c7c57a397643bb4b201f465a1df40fc5fa3",
        "value": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
      },
      {
        "id": "0xc4b20dec5aae400e595f8a0ebea8d1046e180b74307c43bd9a993b555931146700000000",
        "owner": "0xebe141903cbf95f533d631c6d3f63f4ea1ccda2c",
        "spender": "0x655c5c7c57a397643bb4b201f465a1df40fc5fa3",
        "value": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
      },
      {
        "id": "0xd5f06c66562165607164906bfaf65dc05d124b871f1156650316c32065a3a40000000000",
        "owner": "0xebe141903cbf95f533d631c6d3f63f4ea1ccda2c",
        "spender": "0x655c5c7c57a397643bb4b201f465a1df40fc5fa3",
        "value": "115792089237316195423570985008687907853269984665640564039457584007913129639935"
      }
    ],
    "minTokensBeforeSwapUpdateds": []
  }
}

このようなクエリにて、ブロックチェーンデータを特定の目的のために取得・可視化・分析できるようになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?