開発者とサブグラフ
前回のレッスンのおさらいをすると、The Graphを利用するのは主にDAppsの開発者でした。
そして、開発者がどのようなデータをどのように保存するのかを定義するために作成するのがサブグラフです。
開発者がサブグラフを公開するまでの流れを簡単に見ていきましょう。
まず開発者はサブグラフの作成を行います。
サブグラフは3つのファイルから構成されます。
- マニフェスト:インデックスを作成するデータソースなどを定義
- GraphQLスキーマ:サブグラフが保存するデータと形式を定義
- マッピングス:データソースから受け取ったデータをスキーマの形式に変換するプログラム
これらを用意した後はデプロイを行います。
デプロイ先は二種類あります。
1つ目がサブグラフスタジオで、イーサリアムメインネット上のデータのインデックスを作成する際に利用されます。
2つ目はHosted Serviceで、ベータ版としてイーサリアムメインネット以外のネットワークにも対応しています。
Hosted Serviceの対応するネットワークは、Ropsten、 Rinkebyといったイーサリアムテストネットの他、AvalancheやCelo、NEAR Protocolなど非常に幅広いです。
一方で、Hosted Serviceには分散性はありません。
Hosted Serviceは、The Graphの分散型ネットワークにHosted Serviceと同等の機能が備わった段階で少しずつ廃止されていく予定です。
サブグラフスタジオへのデプロイを行い、十分なテストを完了したら遂にThe Graphの分散型ネットワークに公開することができます。
一度公開を行ったサブグラフは削除することはできません。
公開したサブグラフはGraph Explorerから見ることが可能です。
Graph Explorerを見るとすでに多くのプロジェクトのサブグラフが公開されていることがわかります。
公開されているサブグラフを使ってクエリを投げることも可能です。
したがって、既に便利なサブグラフが公開されていた場合、新しいサブグラフを作成する必要はないと言えるでしょう。
Проверьте ход вашего урока
После того, как вы поняли урок,
нажмите кнопку "Проверить"!
クエリマーケット
ところで、The Graphを使ってクエリ処理をして欲しいコンシューマー(DApps開発者など)は、どのようにしてIndexerを探しているのでしょうか。
The Graphにはクエリマーケットという仕組みが用意されています。
一般的なクラウドサービスでは、サービスを運営する会社が一方的に定めた価格でユーザーは使用しなければなりません。
一方で、The Graphではクエリマーケットを利用して複数のIndexerがコンシューマーに選ばれるように価格競争を行っています。
クエリ料は、帯域幅とクエリ処理にかかる計算量などに基づいてIndexerが設定します。
Indexerの一部がオフラインになってしまった場合でも問題はありません。
なぜなら、オンライン状態の他のIndexerがクエリの処理を行ってくれるからです。
次に、コンシューマーがクエリマーケットを利用してクエリ処理を行う流れを見ていきましょう。
コンシューマーは初めに、The Graphに対してクエリを行いたいサブグラフに対応しているIndexerを探します。
この時に利用されるのがサービス検索レイヤーです。
サービス検索レイヤーは、コンシューマーにサブグラフに対応するIndexerのリストを返してくれます。
次はクエリ処理を申し込むIndexerの選択です。
Indexerの選択時は、価格の他に遅延の大きさ、評判、データが最新であるかなどを考慮して決定します。
次に、コンシューマーは選択したIndexerに条件付きマイクロペイメントとクエリ内容でオファーを提示します。
マイクロペイメントは少額決済のことです。
条件付きマイクロペイメントは、Indexerにいくら支払うかを定めたもので最初はロックされています。
Indexerがこのオファーを受諾すると、クエリが処理され、結果とその結果が正しいという証明書をコンシューマーに返します。
証明書により、条件付きマイクロペイメントのロックが解除され、Indexerは料金を受け取ることができます。
Проверьте ход вашего урока
После того, как вы поняли урок,
нажмите кнопку "Проверить"!
マイクロトランザクション
クエリ料は基本的に小さなものですし、クエリは何度も処理されます。
スケーラビリティに課題を抱えるブロックチェーン上でこのような決済の処理を行うのは非効率です。
また、ブロックチェーンの抱える問題の一つにファイナリティというものがあります。
ファイナリティは取引が覆る危険性がほぼ消滅するまでにかかる時間で、例えばビットコインでは6つのブロックの承認を得るのに必要な60分がファイナリティの時間とされています。
決済に多くの時間がかかってしまうとThe Graphを利用したDAppsのUXまで低下させてしまうでしょう。
そこで、The Graphではステートチャネルを活用したマイクロトランザクションシステムを利用しています。
ステートチャネルはブロックチェーンの外で参加者がチャネルを開き、その間でオフチェーン取引を繰り返すことで非常に効率的な取引を可能にする技術です。
The Graphに導入されているマイクロトランザクションシステムはScalarと呼ばれており、The Graph Foundation、Edge&Node、Connextの共同研究によって生まれました。
Проверьте ход вашего урока
После того, как вы поняли урок,
нажмите кнопку "Проверить"!