RPCのレート制限とは? Web3開発者のためのガイド | Quicknode ターミナル、コード、またはAIエージェントからQuicknodeを管理できます。 CLI、Admin API、MCP、SDKが利用可能になりました。
作成を開始する
当社のニュースレターには、無料のリソース、Quicknodeの最新情報、Web3に関するインサイトなどが満載です。
83以上のブロックチェーンに対応したCLI、Admin API、MCP、SDK、およびAIネイティブツール。開発者によって、開発者のために構築されました。
Python、Ruby、JavaScriptにわたる最新のコード例。スマートコントラクト、NFT、dAppに関する詳細なガイド。
回答 > RPCとAPIについて学ぶ > RPCのレート制限とは何ですか? // Tags
RPCのレート制限 APIのレート制限
要約: RPCのレート制限とは、 所定の時間枠内でアプリケーションがブロックチェーンノードに送信できるリクエスト数を制限する仕組みです。 制限を超えると、その時間枠がリセットされるまで、それ以降のリクエストは拒否されます(通常はHTTP 429エラーが返されます)。レート制限は、共有インフラを悪用から保護し、すべてのユーザーに対して公平なアクセスを確保するために設けられています。レート制限を理解し、適切に管理することは、負荷がかかっても正常に動作し続ける信頼性の高いブロックチェーンアプリケーションを構築するために不可欠です。
わかりやすい説明 1時間に100食を調理できるレストランの厨房を想像してみてください。50人の客がそれぞれ3品ずつ注文した場合、厨房はフル稼働状態になります。もし1人の客が50品も注文しようとしたら、他の客全員が食事を楽しめるように、厨房はその客の注文を断らざるを得ません。レート制限もこれと同じ仕組みです。ブロックチェーンのノードには有限の処理能力があり、レート制限を設けることで、同じインフラを利用する他のすべての利用者の犠牲の上に、単一のアプリケーションがその処理能力を独占することを防ぎます。
アプリケーションが短時間に過剰な数のRPCリクエストを送信すると、ノードは要求したデータではなくエラーを返します。ほとんどのプロバイダでは、これはHTTP 429「Too Many Requests」ステータスコードとして返され、多くの場合、許可されているリクエスト数、試行したリクエスト数、再試行までの待機時間が記載されたJSON-RPCエラー本文が添付されます。 アプリケーションがこれらのシグナルを無視してリクエストを送り続けると、プロバイダーは一時的にIPアドレスをブロックしたり、APIキーの使用を完全に停止したりする場合があります。
レート制限は通常、1秒あたりのリクエスト数(RPS)、1分あたりのリクエスト数、あるいはその両方の組み合わせで表されます。 プロバイダーによっては、無料プランで25 RPS、成長プランで300 RPS、エンタープライズプランで1,000 RPS以上を許可している場合があります。また、一部のプロバイダーではメソッドごとの制限を設けており、debug_traceTransactionや、広範囲のブロックを対象とするeth_getLogsなど、計算負荷の高いメソッドについては、eth_blockNumberのような負荷の軽いメソッドよりも個別の制限が低く設定されています。
レート制限が存在する理由
SOC 2 タイプ II 認証取得 · ISO 27001
レート制限には、主に3つの目的があります。第一に、インフラの安定性を保護することです。ブロックチェーンノードは、ブロックチェーン全体のデータを保持し、EVM呼び出しや状態の検索といった複雑な操作を実行するステートフルなシステムです。制限のないリクエストの集中は、ノードのCPU、メモリ、ディスクI/O、あるいはネットワーク帯域幅に過大な負荷をかけ、すべてのユーザーのパフォーマンスを低下させたり、ノードを完全にダウンさせたりする可能性があります。レート制限は、単一のクライアントが連鎖的な障害を引き起こすのを防ぐ「サーキットブレーカー」としての役割を果たします。
第二に、レート制限はリソースの公平な配分を保証します。共有インフラストラクチャ(ほとんどの開発者が利用しているもの)では、数百から数千ものアプリケーションが同じノードプールを共有しています。レート制限がなければ、過度に負荷のかかるインデックス作成スクリプトを実行しているアプリケーションや、設定ミスによるポーリングループが、利用可能な容量の大部分を消費してしまい、他のアプリケーションが必要なリソースを確保できなくなる可能性があります。レート制限は、すべてのアプリケーションが妥当な割合のリソースを確実に得られるよう保証する、フェアユースポリシーを徹底するものです。
第三に、レート制限は悪用を防ぐための手段です。意図的か偶発的かを問わず、サービス拒否攻撃(DoS攻撃)は、多くのアプリケーションが依存しているインフラをダウンさせる恐れがあります。レート制限を設けることで、悪意のある攻撃者が公開エンドポイントを攻撃手段として悪用することを防ぐだけでなく、善意の開発者が制御不能になったスクリプトによって誤ってノードにDDoS攻撃を仕掛けてしまうことも防ぐことができます。
レート制限がアプリケーションに与える影響 アプリケーションがレート制限に対応するように設計されていない場合、本番環境で動作しなくなります。最も一般的な障害の原因は、ブロックチェーンへのクエリを頻繁に行いすぎるポーリングループです。新しいブロックの有無を確認するために100ミリ秒ごとに「eth_blockNumber」を呼び出すアプリケーションは、このメソッドだけで1分間に600回のリクエストを送信することになります。さらに、残高の確認、ログの照会、アクティブなユーザー全員に対するトランザクションステータスのポーリングなどが加われば、たとえ寛大なレート制限であっても、簡単に上限を超えてしまうことになります。
WebSocketのサブスクリプションも、レート制限の対象となる場合があります。最初のサブスクリプションリクエストは1回の呼び出しとしてカウントされますが、サーバーからの受信メッセージ(新しいブロックの通知や保留中のトランザクションのアラートなど)は、プロバイダーによっては利用量にカウントされる場合があります。アプリケーションが複数のコントラクトにわたって高頻度のイベントストリームをサブスクライブしている場合、受信メッセージの量は急速に増加する可能性があります。
レート制限によってリクエストが失敗すると、波及効果が生じます。アプリが要求したデータを受け取れない場合、リクエストを再試行することがあり、その結果、負荷がさらに増加する可能性があります。再試行に指数関数的なバックオフが実装されていない場合、レート制限されたリクエストがさらなるリクエストを生み出し、それがさらなるレート制限を招くというフィードバックループが発生します。このパターンにより、レート制限のウィンドウがリセットされるまで、アプリケーションが事実上RPCエンドポイントにアクセスできなくなる可能性があります。
レートリミットの管理戦略 最も効果的な戦略は、アプリケーションが行う必要のあるリクエストの数を減らすことです。キャッシュはこのアプローチの基盤となります。アプリでETHの価格、トークンのメタデータ、またはその他の変化の緩やかなデータを表示する場合は、ページが読み込まれるたびに、あるいはユーザーの操作のたびにノードにクエリを送信するのではなく、それらの結果をローカルにキャッシュし、適切な間隔で更新するようにしてください。ブロックごとに変化するデータについては、HTTPによるポーリングではなくWebSocket経由でサブスクライブするようにしてください。1回のサブスクライブで、何千もの個別のポーリングリクエストを置き換えることができるからです。
リクエストをバッチ処理することで、HTTPのオーバーヘッドを軽減し、レート制限内に収めることができます。10種類のウォレット残高について10回の個別の呼び出しを行う代わりに、それらを1つのJSON-RPC配列リクエストにまとめてください。ノードはそれぞれを個別に処理しますが、それらすべてを送信するのに必要なHTTPリクエストは1回だけです。プロバイダーによっては、HTTPリクエスト自体だけでなく、バッチ内の各メソッド呼び出しもレート制限の対象としてカウントされる場合があることに注意してください。
クライアント側でのレート制限の実施は、防御的なベストプラクティスです。サーバーがリクエストを拒否するのを待つのではなく、送信リクエストのレートを追跡し、既定の制限を超える可能性のあるリクエストをキューに入れるか、遅延させるようにします。これにより、アプリケーションを先回りして許容範囲内に収めることができ、リクエストが拒否されることによる遅延のペナルティを回避できます。bottleneck(Node.js)やratelimit(Python)などのライブラリを使えば、これを簡単に実装できます。
利用状況に適したインフラストラクチャ・ティアを選択することが、結局のところ最も信頼性の高い解決策となります。アプリケーションが常にレート制限に引っかかってしまう場合は、さらなる最適化の手法ではなく、より多くの容量が必要です。より高いティアにアップグレードするか、専用インフラストラクチャに移行することで、レート制限に関する懸念を完全に解消することができます。
HTTP 429 エラーとはどういう意味ですか? HTTP 429「Too Many Requests」というレスポンスは、現在の時間枠における許可されたリクエストレートを超過したことを意味します。ノードに不具合があるわけではなく、通常は認証情報にも問題はありません。単に、プランで許可されている速度を超えてリクエストを送信しているだけです。対処法としては、レスポンスを確認し(多くの場合、待機時間が指定されています)、その待機時間が経過した後、指数関数的なバックオフを用いて再試行します。これにより、繰り返し失敗することでさらなる負荷がかかるのを防ぐことができます。 429エラーが繰り返し発生する場合は、無理に再試行するのではなく、リクエストの量を減らすか、より大容量のティアに移行する必要があります。RPCリクエストの仕組みや 、RPCエンドポイントが 呼び出しを処理する方法を 理解しておけば、なぜ特定のメソッドが他のメソッドよりも早く制限に達してしまうのかが、より理解しやすくなります。
RPCのレート制限に引っかからないようにするにはどうすればよいでしょうか? レート制限を回避するには、主にリクエストの数を減らし、リクエストの負荷を軽減し、リクエストを分散させることが重要です。以下の表は、最も効果的な手法と、それぞれが最も適している場面をまとめたものです。
テクニック
機能の説明
こんな方に最適
キャッシュ
変化の緩やかなデータについては、結果を再利用する
価格、メタデータ、残高
ポーリングによるストリーミング
繰り返し行われるポーリングをプッシュ型データに置き換える
ブロックごとの更新とインデックス作成
バッチ処理
複数の呼び出しを1つのリクエストにまとめる
バルクは、多くの残高と同様に読み取れる
クライアント側のレート制限
上限を超えないようリクエストを保留にする
バースト型またはユーザー主導型のトラフィック
上位グレードまたは専用インフラ
制限を引き上げる、または解除する
リクエスト数が引き続き高い水準にある
レート制限とスロットリングの違いは何ですか? これらの用語はしばしば同じ意味で使用されますが、過大な負荷に対する対応は異なります。レート制限は厳格な上限を課すもので、一度その上限を超えると、リクエストは即座に拒否されます(通常は429エラーが返されます)。スロットリングはより柔軟な対応です。リクエストを拒否するのではなく、システムが処理速度を落とすか、キューに格納することで、処理自体は完了しますが、より時間がかかります。どちらも共有インフラを保護する目的ですが、クライアントの視点から見ると、その失敗の仕方は異なります。
アスペクト
レート制限
スロットリング
過剰への対応
リクエストを拒否する
リクエストの処理が遅くなったり、キューに蓄積されたりします
典型的な信号
HTTP 429 エラー
レイテンシの増加
顧客への影響
失敗した呼び出しの再試行
遅延したが完了した通話
目標
厳格な使用上限を適用する
トラフィックの急増を緩和する
どちらも、アプリケーションの観点からはRPCの遅延 が悪化したように見える可能性があり、どちらもインフラストラクチャにおける全体的なスループットと遅延の トレードオフと密接に関連しています。
よくある質問
RPCのレート制限として妥当な値はどれくらいでしょうか? これは、ワークロードやプランによって異なります。無料プランでは1秒あたり約25リクエストまで許容される場合がありますが、GrowthプランやEnterpriseプランでは数百~数千リクエストに達します。適切な上限値とは、キャッシュ、バッチ処理、ストリーミングを適用した後に、ピーク時のリクエストレートを余裕を持って上回る値のことです。
429レスポンスにはどのように対処すればよいでしょうか? エンドポイントに繰り返しリクエストを送り続けるのではなく、バックオフして再試行してください。ジッターを伴う指数関数的なバックオフを採用し、レスポンスに含まれる「再試行までの待機時間」の指示を遵守し、再試行回数を制限してください。429エラーが継続する場合は、再試行の頻度を増やすのではなく、リクエストの量を減らすか、容量を拡張してください。
バッチリクエストは1つのリクエストとしてカウントされますか? 必ずしもそうとは限りません。バッチは単一のHTTPリクエストとして送信されますが、多くのプロバイダーでは、バッチ内の各メソッド呼び出しをレート制限の対象としてカウントします。バッチ処理によってネットワークのオーバーヘッドは軽減されますが、レート制限の対象となる呼び出し回数が必ずしも減るわけではありません。
ストリーミングならレート制限を回避できるのでしょうか? 概して言えば、データ取り込みに関してはそうです。プッシュ型のストリームでは、何千回ものポーリング呼び出しを行う必要がなく、新しいブロックチェーンデータが生成されるたびにそれが配信されるため、そもそもレート制限を引き起こすリクエスト量の大部分が解消されます。
なぜ一部のメソッドは、より厳しくレート制限がかけられているのでしょうか? トランザクションの追跡や大規模なログクエリといった計算負荷の高いメソッドは、最新のブロック番号を取得するといった軽量な呼び出しに比べて、はるかに多くのノードリソースを消費します。プロバイダーは、ノード全体の安定性を確保するため、こうした負荷の高い呼び出しに対して、メソッドごとの制限をより厳しく設定しています。
Quicknodeにおけるレート制限の処理方法 Quicknode は、開発者がエンドポイントの利用状況を管理できる柔軟なレート制限機能を提供しています。プラン単位の RPS 制限に加え、Quicknode ではメソッド単位のレート制限も提供しており、個々の RPC メソッドに対して正確な制限を設定することができます。これは、制御不能なスクリプトや、リソースを大量に消費するメソッドを過度に呼び出す可能性のあるサードパーティ製統合ツールからエンドポイントを保護する際に特に役立ちます。 制限は、ダッシュボードのUIまたはConsole APIを介したプログラム的な方法により、メソッドごとに秒単位、分単位、または日単位で設定できます。
Quicknode では、個々の IP アドレスからのリクエスト総数を制御するための IP ベースのレート制限機能も提供しています。これは、エンドポイントがクライアントサイドのアプリケーションに公開されており、リクエスト量を完全に制御できない場合に役立ちます。Quicknode ダッシュボードのリアルタイム分析機能では、メソッド呼び出し数、レスポンスステータス、レスポンスタイムを確認できるため、利用パターンを完全に把握し、レート制限の問題に発展する前に課題を特定して対処することができます。
レート制限を完全に回避する必要があるチームにとって、QuicknodeStreams は リクエスト・レスポンスのパターンを、プッシュ型のデータ配信モデルに置き換えます。アプリケーションが 1 分間に数千回もノードをポーリングする代わりに、Streams は新しいブロックが生成されるたびに、ブロックチェーンデータを Webhook、データベース、またはデータウェアハウスに直接プッシュします。これにより、データ取り込みワークロードにおける RPC のレート制限が完全に解消されるだけでなく、レイテンシの低減やバックエンドアーキテクチャの簡素化も実現します。
参考資料 // Tags
RPCのレート制限 APIのレート制限
// Publisher
Quicknode
2026年6月2日更新
2026年2月3日 — 読了時間10分