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?

本記事では、分散型RPCを実現するサービスの一つである「dRPC」について、概要と仕組みを記述します。

1.RPCノード

前提として、ブロックチェーンにはクライアント呼び出しのゲートウェイとなるRPCノードが存在します。
残高の参照やトランザクションの送信など、JSON-RPC APIを用いてクライアントとブロックチェーンがやり取りするにあたり、ブロックチェーン側のゲートウェイとなるのがRPCノードです。

2.分散型RPC

RPCノードは自前で用意することも可能ですが、コストや保守性の面から、多くのケースではRPCプロバイダー(主に従量課金制でRPCノードを貸し出す)が利用されます。

こうした状況の中で、分散型RPCと呼ばれる分野が存在します。分散型RPCは、単一のRPCプロバイダーを利用する際の問題点を解消できる選択肢となっています。

3. 分散型RPC提供サービス「dRPC」

概要

dRPCはその名の通り、コミュニティによって運営される、分散型RPCを提供するサービスです。
無料プランからエンタープライズプランまで用意されており、サポートも手厚いようです。
image.png

仕組み

dRPCはDProxyDshacleというコンポーネントで構成されています。
DProxyはクライアントからのJSON-RPCリクエストを受け付け、それをDshacleへ受け渡します。そしてDshacleは、適切なRPCノード(ドキュメントでは「Data providers」と呼んでいます)にリクエストルーティングします。
つまり、RPCノードの前に置くロードバランサーのようです。
image.png
出典: https://drpc.org/docs/howitworks/overview

ちなみに、DshacleはもともとEmerald社が開発したOSSライブラリですが、dRPCは独自にforkしたものを使用しているようです。

メリット

ドキュメントから、dRPCを利用することによるメリットをいくつか記載します。

  • 低遅延
    • 遅延のないRPCノードへ優先的にルーティングすることができる
  • 耐障害性
    • あるRPCノードがダウンしても、別のRPCノードへルーティングできる
  • RPCプロバイダーへの依存からの脱却
    • dAppsが大手プロバイダー(Infura、Alchemy、Quicknodeと名指しされていました)に依存してしまう状況を解消できる

料金体系

プラン制で、「Free」「Growth」「For Enterprise
」の3つから選べるようです。
image.png
出典: https://drpc.org/pricing

FreeとGrowthの大きな違いとして、ルーティングされるノードの種類があります。
Freeプランでは、パブリックノードのみがルーティングの対象となりますが、Growthプランでは有料のノード(RPCプロバイダが提供するノードと思われます)もルーティング対象となります。
このとき、有料ノードの利用料はCompute Units(CU) という独自の単位で表され、RPC methodの内容によってCU消費量が変わります。例えば、eth_getBlockByHashには21CU、eth_sendRawTransactionには90CU消費します。
Growthプランでは163 Million CU が付与されるようなので、その範囲内で利用する必要があります。

4.所感

dRPCは、分散型RPCを手軽に導入できる良いサービスだと感じました。
一方、Dshackleへの依存について疑問が湧きました。すべてのトラフィックは、各RPCノードへルーティングされる前にDshackleを経由するので、Dshackleが単一障害点となりえないのか、またはその解決策はあるか気になりました。

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?