ブロックチェーンと通信するウォレットやアプリは、すべてRPCエンドポイントを通じて行っています。この記事では、それが何か、公開エンドポイントのトレードオフ、そして安全に確認・追加する方法を説明します。
RPCエンドポイントとは
RPCは**リモートプロシージャコール(remote procedure call)**の略です。RPCエンドポイントとは、質問に答え、取引を受け付けるブロックチェーンノードのウェブアドレスです。ノードとは、チェーンのコピーを保持しているコンピューターのことです。
たとえばエンドポイントは、「このアドレスの残高は?」「最新のブロックは?」「この取引にいくらかかる?」といった質問に答えられます。また、署名済みの取引を受け取り、ネットワークに渡すこともできます。イーサリアム方式のチェーンでは、HTTPS上のJSON-RPCが一般的な形式です。Solanaは、独自のメソッドを持つ同様のJSON-RPC形式を使います。
エンドポイントはチェーンそのものではありません。チェーンへの入口です。入口が遅かったり間違っていたりすれば、見えるものも遅かったり間違っていたりします。
ウォレットやアプリでの使われ方
ウォレットを開いて残高が表示されるとき、ウォレットはRPCエンドポイントに問い合わせています。「送信」を押すと、ウォレットはお使いのデバイスで取引に署名し、署名済みのデータをエンドポイントに送り、エンドポイントがそれをネットワークに転送します。秘密鍵がエンドポイントに送られることはありません。ウォレットと鍵をご覧ください。
ウォレットには、チェーンごとにデフォルトのエンドポイントが付属しています。変更もできます。ウォレットが知らないネットワークでは、チェーンID、ネットワーク名、コインのシンボルとともに、自分で追加します。
公開プロバイダーと非公開プロバイダー
- 公開エンドポイントは無料で、誰でも利用できます。財団、チェーン、コミュニティ、企業が運営しています。軽い利用に向いています。
- 非公開または有料のプロバイダーは、専用のアクセスキー、より高い上限、より手厚いサポートを提供し、多くの場合、より高速で安定したサービスを備えています。多数のユーザーを抱えるアプリが利用します。
公開エンドポイントは、全ユーザーで容量を共有するため、予測しにくくなります。有料プランはよりコントロールしやすい一方、費用がかかり、企業に依存します。通常のウォレットユーザーなら、公開エンドポイントで十分なことが多いです。事業用のアプリには、非公開のほうが適しています。ChainMonitorは、特定のプロバイダーを推奨しません。
レート制限
自らを守るため、公開エンドポイントは、1秒あたりや1日あたりに送れるリクエスト数を制限しています。超えると、「429 too many requests」のようなエラーを返すか、速度を落とされます。ウォレットが空の残高を表示したり、送信に失敗したりすることがあります。対処法は、待つか、別のエンドポイントを使うか、非公開のプランを使うことです。
レイテンシーとブロック遅延
エンドポイントの健全性は、2つの数値でわかります。
- レイテンシー(latency): リクエストに対する応答が返るまでの時間で、ミリ秒単位です。低いほど良く、距離と負荷に左右されます。
- ブロック遅延(block lag): エンドポイントが、ネットワークの最新ブロックから何ブロック遅れているかです。数ブロック遅れているエンドポイントは、古い残高を表示したり、取引がないと言ったり(実際にはあるのに)、手数料の見積もりを誤ったりすることがあります。
なぜ、1つのエンドポイントが遅れることがあるのでしょうか。ノードの接続が切れた、まだ同期中、あるいは更新の遅いキャッシュの後ろにある、などが考えられます。ウォレットの残高がおかしいと感じたら、遅れているエンドポイントは最初に確認すべきことの1つです。ブロックエクスプローラーで同じアドレスを調べてみることもできます。
プライバシー
エンドポイントは、あなたが送るすべてのリクエストを見ます。これには、あなたのIPアドレスと、調べたアドレスが含まれます。運営者は、あなたのIPとウォレットのアドレスを結びつけることができます。ログに何を記録するかを示すプライバシーポリシーを公開しているプロバイダーもあれば、そうでないところもあります。
リスクを下げるには、次のようにします。
- プロバイダーのトラッキングとログに関するポリシーを読む。
- 運営者にIPアドレスを見られたくないなら、別のエンドポイントやVPNを使う。
- すべての取引は、いずれにせよチェーン上で公開されることを忘れない。リスクは、あなたの身元とアドレスが結びつけられることにあります。
- プライバシーが非常に重要なら、自分でノードを運用する。
ウォレットにカスタムRPCを追加する方法
詳細はウォレットによって異なりますが、手順は似ています。
- ウォレットのネットワーク設定を開き、ネットワークの追加または編集を選びます。
- ネットワーク名、RPCのURL、チェーンID、通貨シンボル、そして求められた場合はブロックエクスプローラーのURLを入力します。
- 保存して、そのネットワークに切り替えます。
- 残高が読み込まれ、ウォレットが正しいネットワークを表示していることを確認します。
チェーンIDは、信頼できる情報源から入手してください。間違ったチェーンIDや偽のRPCアドレスは、誤ったデータを表示することがあります。信頼できる情報源のエンドポイントだけを追加してください。
ChainMonitorのRPCヘルスページ
チェーンページには、サイトが対応するチェーンの公開RPCエンドポイントが一覧表示されています。各エンドポイントについて、次のものを測定します。
- レイテンシー: リクエストに応答するまでの時間。
- ブロック高: エンドポイントが報告する最新のブロック番号。
- 遅延(Lag): そのブロック高が、チェーンの他の健全なエンドポイントが報告する最新ブロックから、何ブロック遅れているか。
一覧は最速のものが先頭に並ぶので、どれが健全かが一目でわかります。/chains/<id>などからチェーンを開くと、そのエンドポイントの詳細が見られます。それぞれに、ワンクリックのウォレットに追加ボタンがあり、正しいチェーンIDでそのネットワークを追加するようウォレットに依頼します。リクエストの承認は、ウォレット側で行います。承認する前に、値を確認してください。
数値は、サイトのサーバーからある時点で測定したものです。あなた自身のレイテンシーは、居場所によって異なります。保証ではなく、目安としてお使いください。
よくある質問
暗号資産でRPCとは何を意味しますか?
リモートプロシージャコールの意味です。RPCエンドポイントは、ウォレットやアプリがブロックチェーンのノードと通信するためのウェブアドレスです。
公開RPCエンドポイントは安全ですか?
署名はウォレットの中で行われるため、資金を奪うことはできません。ただし、あなたのIPアドレスと調べたアドレスを見ることができ、誤ったデータや古いデータを表示することがあります。信頼できる情報源のエンドポイントを使ってください。
なぜウォレットの残高が間違って表示されるのですか?
エンドポイントがチェーンに遅れている、レート制限を受けている、または停止している可能性があります。別のエンドポイントに切り替えて、更新してください。エクスプローラーでアドレスを確認することもできます。
ブロック遅延とは何ですか?
エンドポイントが、最新のブロックから何ブロック遅れているかです。遅延が大きいと、データが古いことを意味します。
自分のRPCプロバイダーは必要ですか?
ほとんどの人には不要です。通常の利用なら、ウォレットのデフォルトのエンドポイントで十分です。アプリを構築する場合や、多くのリクエストを送る場合は、非公開のプランや自分のノードのほうが適していることがあります。