Quicknodeでは、RPCエンドポイントのエラーログを提供しています。ダッシュボードから直接詳細なエラー情報を確認することで、問題を簡単に特定し、解決することができます。
HTTPエラーコード
ここでは、よく遭遇するHTTPエラーコードとその意味、そしてそれらを防ぐためにできることについて見ていきましょう。
400不正なリクエスト
HTTPリクエストの種類が間違っている(例:POSTの代わりにGETを使用している)か、無効な文字が含まれている
401アクセス権限なし
これは、トークン認証の不備、IPアドレスがホワイトリストに登録されていない、JWTが無効であるなど、1つまたは複数のセキュリティ要件が満たされていない場合に発生することがあります。
403アクセス禁止
エンドポイントが無効化されています(その理由の一つとして、支払いの延滞が考えられます)
403アクセス拒否 - カスタムトレースが見つかりません
カスタムトレースコードがホワイトリストに登録されていません(承認手続きを進めるには、チケットを送信してください)
404見つかりません
URLが間違っているか、メソッドが間違っています
413コンテンツが大きすぎます
リクエストの本文が大きすぎます
413リクエストエンティティが大きすぎます
eth_getLogs および eth_newFilter は、10,000 ブロックの範囲に制限されています。ログやイベントの取得をリクエストする際、10,000 ブロックの範囲という制限を適用しています。
429リクエストが多すぎます
リクエストの秒間リクエスト数(RPS)が、ご利用のプランで許可されている上限を超えています。429エラーの詳細については、サポートドキュメントをご覧ください。
500サーバー内部エラー
サポートチームがエラーをできるだけ早く確認できるよう、チケットを送信してください
503サービス利用不可
サポートチームがエラーをできるだけ早く確認できるよう、チケットを送信してください
HTTPエラーコードの例
以下のコードスニペットは、エラーコード429 の例です。
{
"jsonrpc": "2.0",
"error": {
"code": 429,
"message": "The requests per second (RPS) of your requests are higher than your plan allows."
},
"id": 1
}
B3 RPC Error Codes
Let's look at the common B3 RPC Error Codes you can encounter, what they mean and what you can do to prevent them.
指定されたブロックは、そのノードには存在しません。ブロック番号が不正であるか、アクセス先のノードがまだ同期完了していません。タイムアウト時間を徐々に延長する再試行メカニズムを使用してください。
-32000スタックの上限に達しました
通常はスマートコントラクトのエラー/バグです - スタック制限に達しました 1024 (1023)
-32000メソッドハンドラがクラッシュしました
ブロックチェーンクライアントからの内部エラーです。これはクライアント側のバグである可能性があります。ノードを再確認できるよう、チケットを送信してください。
-32000実行タイムアウト
リクエストに「timeout」パラメータを追加することで、デフォルトのクライアントタイムアウトを上書きできます。
-32000ノンセが小さすぎます
トランザクションで指定されたノンセ値は、送信者アカウントの次の有効なノンセ値よりも小さいです。
-32000フィルターが見つかりません
フィルタのタイムアウトが超過しました。フィルタをもう一度作成し直す必要があります。
-32001リソースが見つかりません
要求されたリソースは存在しないか、利用できません。
-32002リソースが見つかりません
要求されたリソースは、一時的または恒久的に利用できません。
-32003取引が拒否されました
検証に失敗したか、リソースが不足しているため、トランザクションを作成できませんでした。
-32004このメソッドはサポートされていません
要求されたメソッドは、サーバーで実装されていないか、サポートされていません。
-32005制限を超えました
このリクエストは、許可された上限または割り当て量を超えています。
-32006JSON-RPC のバージョンがサポートされていません
指定されたJSON-RPCのバージョンは、サーバーでサポートされていません。
-32009トレースリクエストの制限
ノードの過負荷を防ぐため、デバッグおよびトレースメソッドを特定のRPSに制限しました
-32010トランザクションコストがガス制限を超えています
ガスリミットの設定値が低すぎます
-32011ネットワークエラー
このエラーは、タイムアウトや接続切断など、クライアントとサーバー間の接続に問題がある場合に発生します。
-32015VM実行エラー
スマートコントラクトの実行エラー
-32600無効なリクエスト
JSONリクエストの形式が不正であるか、必須フィールドが欠落しています。所定の形式に従っていることを確認してください。
-32601メソッドが見つかりません
たいていはメソッド名のタイプミスです。スペルミスがないか確認してください
-32601リクエストの解析に失敗しました
リクエスト本文が不正です。メソッドのパラメータを再確認してください。
-32602無効なパラメータ - 0x プレフィックスが欠落しています
リクエストが不正です。アドレスに「0x」が含まれていません。16進数
-32602ブロック範囲の制限を超えました
eth_getLogs および eth_newFilter は、10,000 ブロック範囲に制限されています。詳細については、サポートドキュメントをご覧ください。
-32603JSON-RPCの内部エラー
このエラーは、通常、ペイロードに問題があるか、無効であるために発生します。
-32612カスタムトレースはブロックされています
カスタムトレースを有効にするには、リクエストを送信してください。
-32613カスタムトレースは許可されていません
許可されているカスタムトレースに、このカスタムトレースが見つかりません。このトレースをホワイトリストに登録するには、リクエストを送信してください。
-32700構文エラー
無効なJSONが受信されました。サーバーがJSONテキストの解析中にエラーが発生しました
3実行が元に戻されました
このトランザクションは実行中にロールバックされました。これは、条件を満たさなかった、ガスが不足していた、あるいはコントラクトのエラーなどが原因であると考えられます。
B3 RPC Error Code Example
以下のコードスニペットは、エラーコード-32601 の例です。
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32601,
"message": "the method eth_randomMethod does not exist/is not available"
}
}
上記で定義したRPCエラーは、ETH、BSC、Polygonなどのチェーン上で開発を行う際に発生しうる一般的なエラーのまとめです。これらのチェーンは、それぞれ独自のエラー定義を持つ複数のクライアント上で動作しています。ノードクライアントのソースコードに記載されているエラーについては、こちらでも確認できます:
Quicknode では、問題の診断に役立つよう、RPC エンドポイントのログを提供しています。Quicknode ダッシュボードで以下のページにアクセスすると、ログを直接確認できます:
- サイドバーのエンドポイント
- エンドポイントの選択
- [ログ] タブを開く
ログは、時間範囲、レスポンスの種類、メソッド、ネットワークごとにフィルタリングできます。
どのような情報が記録されるか
エンドポイントへのリクエスト
エンドポイントに対して行われたリクエスト。これには、HTTPステータス、リクエストメソッド、RPCメソッドまたはパス、およびタイムスタンプが含まれます。
エラーの詳細
利用可能な場合、失敗したリクエストには、RPCエラーコード、リクエストおよびレスポンスの本文、関連ドキュメントへのリンクなどのエラー詳細が含まれます。
伐採の制限
ログの可用性は、メソッド、レスポンスの種類、ネットワーク、およびプランによって異なる場合があります。エンドポイントのパフォーマンスを最適に維持するため、ログ記録は「ベストエフォート」方式で動作します。低遅延を維持するため、トラフィックが集中している時間帯には、一部のログが破棄される場合があります。
保存とアクセス
「Build」および「Scale」プランには、標準的なログ保存期間を備えたダッシュボードへのアクセスが含まれます。 「Enterprise」プランでは、保存期間が延長されるほか、ログ取得のためのプログラムによるAPIアクセスが提供されます。
その他のエラーコードが表示される場合は、チケットを送信してその旨をお知らせください。喜んでお手伝いさせていただきます。