RPCとは何か エンドポイント? JSON-RPC、WebSockets、およびgRPC |Quicknode🤖 新着:Quicknode AIクックブック AIプログラミングの10の実証済みレシピ エージェント.
レシピを見る 回答>RPCとAPIについて学ぶ>RPCとは エンドポイント? // Tags
RPC エンドポイントRPCとはJSON-RPC
要約:RPC エンドポイント とは、アプリケーションがブロックチェーン ノードと通信するために使用するURLのことです。RPCはRemote Procedure Call(リモートプロシージャコール)の略で、あるプログラムがネットワークを介して別のプログラムにデータやアクションを要求することを可能にするプロトコルです。ブロックチェーン では、RPCエンドポイントを通じて、ウォレットが残高を確認したり、dappがスマートコントラクトを実行したり、開発者 がオンチェーン のデータを読み書きしたりします。ブロックチェーン とのやり取りは、自覚しているかどうかに関わらず、すべてRPC エンドポイントを経由します。
わかりやすい説明
ウォレットアプリを開いてETHの残高を確認したとしても、そのウォレットがブロックチェーン 上に「存在」しているわけではありません。それは、スマートフォンやブラウザ上で動作する通常のアプリケーションであり、残高を確認するためにブロックチェーン に問い合わせる必要があります。その問い合わせを行うために、アプリはRPCにリクエストを送信します エンドポイント。 エンドポイント リクエストを受信すると、その背後にあるノードが回答を検索し、レスポンスを返します。その後、ウォレットはその結果を表示します。
RPCを エンドポイント をレストランの正面玄関のようなものだと考えてみてください。厨房(ブロックチェーン ノード)は、トランザクションの検証、状態の管理、ブロックの生成といった実際の作業が行われる場所です。しかし、厨房に直接入ることはできません。正面玄関(RPC エンドポイント)から入り、注文(リクエスト)をすると、ウェイター(RPCプロトコル)が料理(レスポンス)を運んでくれます。RPC エンドポイント は、ノードの機能を外部に公開するためのアクセスポイントです。
技術的な用語で言えば、RPC エンドポイント とは、URL(例:https://your-エンドポイント.quiknode.pro/your-token/)であり、アプリケーションはJSON-RPC仕様に従ってフォーマットされたHTTPまたはWebSocketリクエストをこのURLに送信します。JSON-RPCは、リクエストとレスポンスをJSONオブジェクトとして構成する方法を定義する軽量なプロトコルです。主要なブロックチェーン はすべて、この標準の何らかのバージョンを採用しています。つまり、Ethereum でのRPC呼び出し方法を一度理解すれば、Solana 、Polygon 、Arbitrum 、Base 、およびその他数十のチェーンでも同様のパターンが適用されます。
RPC呼び出しの仕組み
一般的なRPCのやり取りは、単純なリクエスト・レスポンスのパターンに従います。アプリケーションは、呼び出したいメソッドと必要なパラメータを指定したJSON-RPCリクエストを作成し、それを エンドポイント URLへHTTP POSTで送信します。ノードはリクエストを処理し、対応するロジックを実行して、結果を含むJSONレスポンスを返します。
SOC 2 タイプ II 認証取得・ISO 27001
たとえば、EVMチェーンの最新のブロック番号を取得するには、アプリケーションがメソッド「eth_blockNumber」と空のパラメータ配列を含むリクエストを送信します。ノードは、現在のブロック番号を16進数で返します。アカウントのETH残高を確認するには、ウォレットアドレスとブロックパラメータ(現在のブロックの場合は「latest」など)を指定して「eth_getBalance」を呼び出します。 トランザクションを送信するには、署名済みのトランザクションデータを引数として「eth_sendRawTransaction」を呼び出します。
これらの標準的なJSON-RPCメソッドは、by およびブロックチェーン の各仕様で定義されています。Ethereum のJSON-RPC APIには、ブロックデータの読み取り、アカウントおよびコントラクトの状態の照会、ガスの見積もり、トランザクションの送信、WebSocket経由でのイベントの購読などのメソッドが含まれています。Solana は、アカウントベースのアーキテクチャに最適化された、類似しているが独自のRPCメソッドセットを使用しています。各チェーンには独自のAPIインターフェースがありますが、RPCエンドポイントを通じた基盤となる通信パターンは一貫しています。
WebSocket接続は、基本的なRPCパターンの拡張であり、リアルタイムの双方向通信を可能にします。アプリケーションがノードに対して更新情報を繰り返しポーリングする(これは非効率的で処理が遅くなる)代わりに、WebSocket接続を利用することで、ノードが新しいデータをアプリケーションにプッシュできるようになります。
アプリケーションの動作をリアルタイムで把握すること。これは、新しいブロックが生成されるのを監視したり、特定のスマートコントラクトのイベントをリアルタイムで監視したり、トランザクションの確認通知を受け取ったりといったユースケースにおいて不可欠です。
パブリックとプライベートのRPCエンドポイント
パブリック RPC エンドポイントは、by ブロックチェーン 財団やコミュニティプロジェクトによって管理されている、無料で公開されている URL です。 認証なしで誰でもこれらに接続できます。これらは簡単なテスト、プロトタイピング、教育目的には有用ですが、本番環境のアプリケーションには適していません。パブリックエンドポイントは厳格なレート制限(1秒あたりに送信できるリクエスト数に制限があることを意味します)が課されており、頻繁に過負荷状態by になり、数千の同時接続ユーザー が発生し、稼働時間、レイテンシ、データの鮮度については一切保証されません。もしアプリケーションがパブリックエンドポイントに依存しており エンドポイント に依存しており、トラフィックの急増時にそのエンドポイントがダウンした場合、アプリもそれに伴ってダウンしてしまいます。
プライベートRPCエンドポイントは、通常by のインフラストラクチャサービスとして提供される、お客様のアプリケーション専用に確保された接続です。これらは、より高速な応答時間、より高いレート制限、安定したパフォーマンス、およびby のSLAに基づく稼働時間の保証を提供します。プライベートエンドポイントには、トークンベースの認証、IPホワイトリスト、分析ダッシュボード、標準のJSON-RPC仕様を超える拡張APIへのアクセスなど、追加機能が含まれていることがよくあります。
実際のユーザー 、実際の資金、またはリアルタイムデータを扱うアプリケーションにおいては、プライベートRPCエンドポイントは「アップグレード」ではなく、必須の要件です。パブリックとプライベートの エンドポイント の違いは、共有の公共Wi-Fiネットワークと専用光ファイバー回線の違いに他なりません。どちらも技術的にはインターネットに接続できますが、ビジネスを運営するのに適しているのはどちらか一方だけです。
基本的なRPCを超えて
標準的なJSON-RPCメソッドは、ブロックチェーン データの読み書きという基本機能を網羅していますが、実運用環境のアプリケーションの多くには、それ以上の機能が必要です。拡張APIは、RPCの基本仕様を拡張し、データを集約してアプリケーションが必要とする呼び出し回数を削減する、より高レベルなメソッドを提供します。例えば、ウォレットのトークン保有状況を再構築するために数十回もの個別の呼び出しを行う代わりに、拡張APIであれば、1回のリクエストですべてのトークン残高を取得することができます。
ストリーミングおよびイベント駆動型アーキテクチャは、リクエスト・レスポンス型のRPCを超えた次の進化形です。アプリケーションが新しいブロックやイベントについてRPCを絶えずポーリングする代わりに エンドポイント に新しいブロックやイベントがないかポーリングし続ける代わりに、ストリーミングサービスはデータが利用可能になり次第、アプリケーションにデータをプッシュします。これにより、レイテンシが低減され、無駄なリクエストが排除され、バックエンドアーキテクチャが簡素化されます。
gRPC は、特定のブロックチェーンにおいて、JSON-RPCと併用される、あるいはその代わりとして使用されるもう1つのプロトコルです。例えば、Solana のYellowstone gRPC は、取引 ボットやリアルタイム分析といった高頻度なユースケース向けに最適化された、超低遅延のデータ配信を実現しています。gRPC は、JSONの代わりにProtocol Buffersを採用しています。Protocol Buffersはよりコンパクトでシリアライズも高速であるため、遅延が1ミリ秒単位で重要となるアプリケーションに最適です。
Quicknode のQuicknode
QuicknodeのCore APIは、80以上のブロックチェーン ネットワークにまたがる、本番環境向けのRPCエンドポイントを提供します。 で エンドポイント Quicknode 上でエンドポイントを作成すると、HTTPSおよびWebSocketのURLが提供され、これによりアプリケーションは、稼働率99.99%のSLAを備え、競合他社と比較して平均で2.5倍高速な応答時間を誇る、グローバルに分散された高性能なノードインフラストラクチャに接続されます。すべての エンドポイント には、完全なデータおよびアーカイブデータへのアクセス、リアルタイム分析、トークンベースの認証、ならびにリファラーのホワイトリスト登録やドメインマスキングなどのセキュリティ機能が含まれています。
標準的なRPCに加え、Quicknode は、 Streams リアルタイムおよび過去のブロックチェーン データの配信、 Yellowstone gRPC 超高速なSolana データ、DeFiデータやNFT API、セキュリティツール向けのマーケットプレイス アドオンエコシステム、そしてJavaScriptやTypeScriptでのシームレスな統合を実現するQuicknode SDK など、 の機能を活用できます。週末のプロジェクトや エンドポイント が必要であっても、エンタープライズプラットフォーム向けのマルチチェーン やマルチリージョンインフラストラクチャであっても、Quicknode は、あらゆるものが構築される基盤となるRPCレイヤーを提供します。
RPCと エンドポイント とノードの違いは何ですか?
これらの用語は関連していますが、同一ではありません。ノードとは、ブロックチェーン のコピーを保持し、トランザクションを検証し、状態を追跡するソフトウェアのことです。RPC エンドポイント とは、そのノードと通信するために接続するネットワークアドレスのことです。1つのノードは複数のエンドポイントの背後に配置されることがあり、また、 エンドポイント 冗長性を確保するために、負荷分散されたノード群全体にリクエストをルーティングすることも可能です。マネージドプロバイダーを利用する場合、ユーザーは エンドポイント とやり取りするため、自分でノードを運用する必要は一切ありません。URLの背後で何が実行されているかについて詳しく知りたい場合は、「ブロックチェーン ノードとは」を参照し、リクエストのライフサイクル全体については、「RPCリクエストの仕組み」を参照してください。
HTTP、WebSocket、gRPC ――どのRPCトランスポートを使うべきか?
RPCエンドポイントは複数のトランスポートを提供しており、適切な選択は、単発のクエリを行うのか、それとも継続的なデータフィードを利用するのかによって異なります。HTTPは、リクエスト・レスポンス型の呼び出しにおける普遍的なデフォルトです。WebSocketは永続的な接続を維持するため、ノードから更新情報をプッシュで受け取ることができます。gRPC は、対応しているチェーン上で高頻度のワークロードに対して、最も低いレイテンシを実現します。以下の表では、これら3つを一覧で比較しています。
輸送 | 接続モデル | こんな方に最適 | トレードオフ |
|---|
HTTP | ステートレスなリクエストとレスポンス | 標準的な読み取り、トランザクションの送信、バッチ呼び出し | サーバーからのプッシュ通知はないため、更新の有無をポーリングする必要があります |
WebSocket | 持続的、双方向 | 新しいブロック、ログ、および保留中のトランザクションへのサブスクリプション | 接続は維持し、切断された場合は再接続する必要があります |
gRPC | 永続化とProtocol Buffersを用いたストリーミング | 取引 のボットや分析ツールなど、超低遅延のフィード | 設定がより複雑で、サポート に対応しているチェーンに限定される |
アプリケーションで、繰り返しポーリングを行うのではなく、継続的なデータ受信が必要な場合は、Quicknode Streams のようなマネージド・ストリーミング・レイヤーを利用すれば、ソケットのライフサイクルを管理することなく、ブロック、レシート、トレースをバックエンドに直接配信できます。
RPCの エンドポイント レイテンシやレート制限は何が原因で発生するのでしょうか?
RPCの利用体験を左右する主な要因は2つあります エンドポイント:応答速度と、許容されるリクエスト数です。レイテンシは、by ノードまでの地理的な距離、呼び出すメソッドの複雑さ、および基盤となるインフラの負荷状況によって左右されます。レート制限が存在するのは、すべてのノードには有限の処理能力があるためであり、プロバイダーは共有リソースを保護するために1秒あたりのリクエスト数に上限を設けています。この両方を理解することで、トラフィックが増加する前に エンドポイント 適切なサイジングを行うのに役立ちます。詳細については、「RPCのレイテンシとは」および「RPCのリミットとは」をご覧ください。
生のRPCの代わりにインデックス化をいつ使用すべきか?
生のRPCは、現在の状態の読み取りやトランザクションの送信には最適ですが、「このウォレットが過去1年間に実行したすべての送金」といった分析的なクエリには不向きです。RPCだけでこれに答えるには、何千もの連続した呼び出しが必要になります。インデックス化はこの問題を解決します。by データの前処理オンチェーン により、クエリ可能なデータベースが構築されるため、履歴データや集計データの検索も単一のクエリで実行できます。「RPCとインデックス化」で2つのアプローチを比較し、 ブロックチェーン データのクエリにおいて大規模なクエリがなぜ難しいのかをご確認ください。
よくある質問
RPCとは何の略ですか?
RPC は「リモート・プロシージャ・コール(Remote Procedure Call)」の略称です。これは、あるプログラムが、あたかもローカル関数を呼び出すかのように、ネットワークを介して別のプログラムにデータの取得を要求したり、アクションを実行させたりできるプロトコルです。ブロックチェーン では、アプリケーションは RPC を使用して、ノードに状態の読み取りやトランザクションの送信を依頼します。
RPCは エンドポイント APIと同じものなのでしょうか?
RPC エンドポイント は、APIの一種です。これは、単一のURLを通じて、JSON-RPC標準を用いてブロックチェーン ノードの機能を公開します。多くのプロバイダーは、基本的なRPCインターフェースの上に、拡張されたRESTやより高レベルのAPIを重ねていますが、中核となる エンドポイント は、Node.jsが理解できるJSON-RPCプロトコルで通信する部分です。
無料のパブリックRPCエンドポイントは、本番環境で安全に使用できますか?
これらはテストや学習には適していますが、本番環境向けには設計されていません。パブリックエンドポイントは厳格なレート制限が課されており、頻繁に過負荷状態になり、稼働時間やレイテンシの保証もありません。トラフィックの急増時にパブリック エンドポイント がトラフィックの急増時にパフォーマンスが低下すると、アプリケーションのパフォーマンスもそれに伴って低下します。そのため、本番環境のアプリ では、専用のプライベートエンドポイントが使用されています。
1つのRPCで エンドポイント ブロックチェーン に複数接続できますか?
1つの エンドポイント URLは通常、1つのネットワークに対応します。例えば、Ethereum メインネット またはSolana メインネット。複数のチェーンをサポート するには、ネットワークごとに個別のエンドポイントを作成します。ほとんどのチェーンはJSON-RPCパターンを共有しているため、あるチェーン用に作成したコードは エンドポイント コードは、わずかな変更を加えるだけで他のチェーンにも流用できます。
オンチェーン のイベントについて、絶えずポーリングすることなく通知を受けるにはどうすればよいですか?
ポーリングの代わりにプッシュ型の仕組みを使用してください。WebSocketのサブスクリプションや、 Quicknode Webhooks は、関連するブロックやイベントが発生した瞬間にバックエンドに通知するため、レイテンシを低減し、無駄なリクエストを排除します。ステップバイby-ステップのチュートリアルについては、『Builders Guide』で一般的なパターンが解説されています。
参考資料