The Graph について調べたことメモ
ENS の TextRecord を一回のリクエストで取得したいなーと思って探したときのメモ。 (ethers.js #getText では、1件の TextRecord しか取得できないので、良い方法を探していた)
The Graph
まず調べて見て分かったことをまとめる。その後で調べた記事などを羅列する
参照 READ 専用で、GraphQL のクエリで参照できる
トランザクションの発行など、READ以外のことはできないっぽい
参照時に経由するノードは分散化されており、落ちる可能性 (サーバーダウンなど) がほぼない
後述するが「理想型では」という意味。ホステッドサービスを利用している場合はこの限りではない。
参照の手数料は、The Graph のトークン `GRT` (ERC-20) を使用する
請求について https://thegraph.com/docs/ja/querying/billing/
ENS 提供のサブグラフで参照できる ENS text record は、設定されている key の配列までだった (value までは取得できない)
自分でサブグラフを作ったら行けそう (要検証)
The Graph 公式イントロダクション (日本語)
https://thegraph.com/docs/ja/about/
何はともあれ原点のドキュメント
言葉や概念の理解が難しいので、後述する資料などに軽く目を通した後だとすっと理解できる
「サブグラフ」は、誰でも作れる API エンドポイントグループと考えることができる。
Apollo クライアントでクエリを投げる公式ドキュメント https://thegraph.com/docs/ja/querying/querying-from-an-application/
現在、ホステッドサービスと非中央集権的なネットワークがある
ホステッドサービス公式 https://thegraph.com/docs/ja/deploying/hosted-service/
請求について https://thegraph.com/docs/ja/querying/billing/
The Graph Studio でENSサブグラフを試す https://thegraph.com/hosted-service/subgraph/ensdomains/ens
この記事 Query ENS records using The Graph Network の実装を参考にすると、ENS サブグラフで Text Record の key 配列を取得 `#texts` して、その後、複数の ethers.js #text 関数を非同期実行して取得していた
https://github.com/christopherdro/ens-lookup-extension/blob/49c383f640e262a89d4f7d860dcf2ff416e11b6f/src/content/EnsProvider.tsx#L72-L83このやり方だと N+1 の問題が軽減されるが、根本解決にはなっていない
また、この記事ではホステッドサービスの ENS サブグラフを叩いていた
https://github.com/christopherdro/ens-lookup-extension/blob/49c383f640e262a89d4f7d860dcf2ff416e11b6f/src/apollo/client.ts#L6
現状ホステッドサービスは無料で使えるが、いずれ The Graph Network (非中央集権のネットワーク) に移行すると有料になるはず (無料枠があるか不明)。
The Graphについて知っておくべき重要事項(GRT)
https://medium.com/the-graph-protocol-japan/the-graph%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8F%E3%81%B9%E3%81%8D%E9%87%8D%E8%A6%81%E4%BA%8B%E9%A0%85-grt-ec5761b7c83d
The Graph の全体感に触れるために大変有意義だった
ブロックチェーン方面の The Graph を試してみる (for developers)
https://qiita.com/chomado/items/705d0a6d9ce985f1a433
The Graph に対して Node.js でクエリ発行する記事