From c4d6cb10b071dd1c585091f82d5f7d1015aa4c89 Mon Sep 17 00:00:00 2001 From: alchemy-bot <80712764+alchemy-bot@users.noreply.github.com> Date: Fri, 29 May 2026 17:26:49 +0000 Subject: [PATCH] [docs-agent] Add Try It method audit (DOCS-101) Live-probes every method's canonical example payload across the 91 OpenRPC specs in src/openrpc/, classifies the failures, and surfaces three single-edit quick wins. Catalog lives at audits/2026-05-29-try-it-audit/. Headline numbers: 3,749 probed, 2,604 ok, 842 failed (24.4%), 303 skipped (websocket-only or no example). Refs DOCS-101 Requested-by: @0xmts --- audits/2026-05-29-try-it-audit/README.md | 32 + audits/2026-05-29-try-it-audit/failures.csv | 863 ++++++++++++++++++ audits/2026-05-29-try-it-audit/report.md | 646 +++++++++++++ .../scripts/build_report.py | 417 +++++++++ .../scripts/reprobe_overrides.py | 150 +++ .../scripts/retry_429.py | 144 +++ .../scripts/run_audit.py | 358 ++++++++ 7 files changed, 2610 insertions(+) create mode 100644 audits/2026-05-29-try-it-audit/README.md create mode 100644 audits/2026-05-29-try-it-audit/failures.csv create mode 100644 audits/2026-05-29-try-it-audit/report.md create mode 100644 audits/2026-05-29-try-it-audit/scripts/build_report.py create mode 100644 audits/2026-05-29-try-it-audit/scripts/reprobe_overrides.py create mode 100644 audits/2026-05-29-try-it-audit/scripts/retry_429.py create mode 100644 audits/2026-05-29-try-it-audit/scripts/run_audit.py diff --git a/audits/2026-05-29-try-it-audit/README.md b/audits/2026-05-29-try-it-audit/README.md new file mode 100644 index 000000000..574f79f94 --- /dev/null +++ b/audits/2026-05-29-try-it-audit/README.md @@ -0,0 +1,32 @@ +# Try It audit — May 2026 + +Full automated audit of every method's canonical example payload across the OpenRPC specs in `src/openrpc/`. Probes each example live against the documented mainnet endpoint with the `docs-demo` API key (using the same `Origin` / `Referer` headers Fern's Try It widget sends) and catalogs every failure. + +* [report.md](./report.md) — full categorized report with per-category breakdown, per-spec failure rates, and top quick-win recommendations. +* [failures.csv](./failures.csv) — every failed probe as a row (`spec`, `method`, `category`, `http_status`, `rpc_code`, `rpc_message`) for spreadsheet pivot analysis. +* [scripts/](./scripts) — the Python scripts that produced the report. Reproducible from a fresh `pnpm install && pnpm run generate:rpc` checkout. + +## Headline numbers + +* Probed: **3,749** methods (chain specs + Alchemy product specs) +* OK: **2,604** +* Failed: **842** (24.4%) +* Skipped (websocket-only or no example in the spec): **303** + +## Reproducing + +``` +pnpm install +pnpm run generate:rpc # produces content/api-specs/ +python3 scripts/run_audit.py # initial pass; writes results.json +python3 scripts/retry_429.py "HTTP 429" # retry rate-limited probes +python3 scripts/build_report.py # rebuilds report.md and failures.csv +``` + +`docs-demo` is aggressively rate-limited; the retry script paces requests serially per host. + +## Out of scope + +* OpenAPI REST specs (`src/openapi/`). Each REST spec needs a per-spec adapter (path params, query params, auth, body shapes vary). Worth a follow-up audit. +* Production logs of customer-hit errors. Needs data-team observability access. +* Fern Try It auto-fill on optional fields not in the example. The audit only sends the literal example payload, so the failure count here is a lower bound on what users actually see in the widget. diff --git a/audits/2026-05-29-try-it-audit/failures.csv b/audits/2026-05-29-try-it-audit/failures.csv new file mode 100644 index 000000000..3cce3bc45 --- /dev/null +++ b/audits/2026-05-29-try-it-audit/failures.csv @@ -0,0 +1,863 @@ +spec,category_chain_or_product,method,status,reason,category,http_status,rpc_code,rpc_message +avax,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +avax,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +ronin,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +opbnb,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x9eec55c5bc6d5481ef601a8b7d4729fae56e2d4061727fdf092d723a5ad50364 err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +hyperliquid,chain,net_listening,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: net_listening on HYPERLIQUID_MAINNET""}}" +eth,chain,eth_createAccessList,fail,jsonrpc error,Mutation method - gas mismatch,200,-32000,intrinsic gas too high +ronin,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +abstract,chain,zks_getAllAccountBalances,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +avax,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +avax,chain,eth_simulateV1,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_simulateV1 does not exist/is not available +injective,chain,eth_estimateGas,fail,jsonrpc error,Other JSON-RPC error,200,-32000,rpc error: code = Unknown desc = insufficient balance for transfer +zetachain,chain,eth_getBlockByHash,fail,jsonrpc error,Stale example - block reference,200,-32000,block not found for hash 0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c +zetachain,chain,eth_getBlockReceipts,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getBlockReceipts does not exist/is not available +tron,chain,eth_call,fail,jsonrpc error,Other JSON-RPC error,200,-32600,Smart contract is not exist. +tron,chain,eth_estimateGas,fail,jsonrpc error,Other JSON-RPC error,200,-32600,"Validate TransferContract error, no OwnerAccount." +adi,chain,eth_call,fail,jsonrpc error,Other JSON-RPC error,200,-32603,"invalid transaction: LackOfFundForMaxFee { fee: 1, balance: 0 }" +matic,chain,bor_getRootHash,fail,jsonrpc error,Example payload type/format invalid,200,-32602,invalid argument 0: json: cannot unmarshal string into Go value of type uint64 +fantom,chain,eth_blockNumber,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_call,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_callMany,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_chainId,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getTransactionCount,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getTransactionReceipt,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +stable,chain,eth_blobBaseFee,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_blobBaseFee on STABLE_MAINNET""}}" +stable,chain,eth_call,fail,jsonrpc error,Other JSON-RPC error,200,-32000,rpc error: code = Internal desc = insufficient balance for transfer +opt,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000 +anime,chain,eth_call,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,err: insufficient funds for gas * price + value: address 0x0000000000000000000000000000000000000000 have 0 want 1 (supplied gas 550000000) +megaeth,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 2023155498000000 +flow,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed transaction: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +berachain,chain,eth_blobBaseFee,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_blobBaseFee on BERACHAIN_MAINNET""}}" +pharos,chain,eth_call,fail,jsonrpc error,Other JSON-RPC error,200,-32029,The caller does not have enough funds for value transfer. +apechain,chain,eth_blobBaseFee,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_blobBaseFee on APECHAIN_MAINNET""}}" +citrea,chain,citrea_sendRawDepositTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +stellar,chain,getHealth,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,invalid parameters +stellar,chain,getEvents,fail,jsonrpc error,Other JSON-RPC error,200,-32600,startLedger must be within the ledger range: 62549698 - 62791617 +bitcoincash,chain,estimatesmartfee,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,createrawtransaction,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,decoderawtransaction,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +clankermon,chain,eth_call,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,err: insufficient funds for gas * price + value: address 0x0000000000000000000000000000000000000000 have 0 want 1 (supplied gas 1100000000) +polygonzkevm,chain,eth_accounts,fail,jsonrpc error,Other JSON-RPC error,200,-32000,the method has been deprecated: eth_accounts +sui,chain,sui_devInspectTransactionBlock,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,"Deserialization error: invalid value: integer `15043`, expected variant index 0 <= i < 3" +sui,chain,sui_executeTransactionBlock,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +sui,chain,sui_dryRunTransactionBlock,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Deserialization error: ULEB128-encoded integer did not fit in the target size +arc,chain,eth_call,fail,jsonrpc error,Other JSON-RPC error,200,3,execution reverted: Zero address not allowed +monad,chain,eth_blobBaseFee,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +monad,chain,eth_accounts,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +gnosis,chain,eth_blobBaseFee,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_blobBaseFee on GNOSIS_MAINNET""}}" +crossfi,chain,eth_call,fail,jsonrpc error,Other JSON-RPC error,200,-32000,rpc error: code = Internal desc = insufficient balance for transfer +crossfi,chain,eth_estimateGas,fail,jsonrpc error,Other JSON-RPC error,200,-32000,rpc error: code = InvalidArgument desc = insufficient balance for transfer: invalid request +linea,chain,eth_blobBaseFee,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_blobBaseFee on LINEA_MAINNET""}}" +rise,chain,eth_blobBaseFee,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_blobBaseFee on RISE_MAINNET""}}" +astar,chain,eth_call,fail,jsonrpc error,Other JSON-RPC error,200,-32603,evm error: OutOfFund +tea,chain,eth_blockNumber,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_call,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +eth,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +sonic,chain,eth_callMany,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_callMany does not exist/is not available +opbnb,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +hyperliquid,chain,web3_sha3,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +dogecoin,chain,createrawtransaction,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +dogecoin,chain,decoderawtransaction,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +litecoin,chain,createrawtransaction,fail,jsonrpc error,Other JSON-RPC error,200,-5,Invalid Litecoin address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa +opbnb,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +zora,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +hyperliquid,chain,eth_blobBaseFee,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_blobBaseFee on HYPERLIQUID_MAINNET""}}" +dogecoin,chain,estimatesmartfee,fail,jsonrpc error,Other JSON-RPC error,200,-1,"estimatesmartfee nblocks + +WARNING: This interface is unstable and may disappear or change! + +Estimates the approximate fee per kilobyte needed for a transaction to begin +confirmation within nblocks blo" +sonic,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +hyperliquid,chain,eth_accounts,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +injective,chain,eth_fillTransaction,fail,jsonrpc error,Stale example - block reference,200,-32000,header not found +injective,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +bob,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 2000000000021000000 +tempo,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32000,value transfer not allowed +tron,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,method not found +botanix,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value +adi,chain,eth_estimateGas,fail,jsonrpc error,Other JSON-RPC error,200,-32603,"invalid transaction: LackOfFundForMaxFee { fee: 1, balance: 0 }" +zksync,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +fantom,chain,eth_estimateGas,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +adi,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +rootstock,chain,eth_feeHistory,fail,jsonrpc error,Method not supported on chain,200,-32601,method not found +fantom,chain,eth_feeHistory,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +rootstock,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,method not found +fantom,chain,eth_gasPrice,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getAccount,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +base,chain,eth_callBundle,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +tea,chain,eth_chainId,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +base,chain,eth_createAccessList,fail,jsonrpc error,Mutation method - gas mismatch,200,-32000,intrinsic gas too high +tea,chain,eth_estimateGas,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +unichain,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000 +ink,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000 +stable,chain,eth_createAccessList,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_createAccessList on STABLE_MAINNET""}}" +celo,chain,eth_callMany,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_callMany does not exist/is not available +stable,chain,eth_estimateGas,fail,jsonrpc error,Other JSON-RPC error,200,-32000,rpc error: code = Unknown desc = insufficient balance for transfer +scroll,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +anime,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 550000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +celo,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x9198f0ae5e8bf0e0afc3b2b388efb172fd11439785b5797b7eac1c0e80653dcb err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +scroll,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +flow,chain,eth_fillTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_fillTransaction does not exist/is not available +flow,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +berachain,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000 +pharos,chain,eth_estimateGas,fail,jsonrpc error,Other JSON-RPC error,200,-32029,The caller does not have enough funds for value transfer. +jovay,chain,eth_estimateGas,fail,jsonrpc error,Other JSON-RPC error,200,-32603,The caller does not have enough funds for value transfer. +worldchain,chain,eth_callBundle,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +worldchain,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000 +sei,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0xfdde7ce71f365821e9b64135d0bea0bdaa34adba83a2008b9055811f8de2d39c err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +sei,chain,eth_fillTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_fillTransaction does not exist/is not available +apechain,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +metis,chain,eth_createAccessList,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_createAccessList does not exist/is not available +metis,chain,eth_feeHistory,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_feeHistory does not exist/is not available +katana,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +arb,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x5cf233fb2361355996805304785090735fbbfe392362664fbb5687cfb9032df7 err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +katana,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +story,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +arb,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +settlus,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 30000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +gensyn,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x648396a8748f5e3dbc343d9477894054505922c6cdc0711d84d8c589366654ba err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +gensyn,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 550000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +settlus,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +clankermon,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 1100000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +bitcoincash,chain,getblock,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +lens,chain,eth_fillTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +polygonzkevm,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +arc,chain,eth_callBundle,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +arc,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000 +arc,chain,eth_createAccessList,fail,jsonrpc error,Mutation method - gas mismatch,200,-32000,intrinsic gas too high +monad,chain,eth_callMany,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +blast,chain,eth_createAccessList,fail,jsonrpc error,Other JSON-RPC error,200,-32603,method handler crashed +crossfi,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +linea,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x8125237d60f37fa609508f104344529d7c3287a34ded02671867ed530aa24b89 err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +linea,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 16777216 gas: insufficient funds for gas * price + value: address 0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73 have 0 want 1 +rise,chain,eth_createAccessList,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_createAccessList on RISE_MAINNET""}}" +rise,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +rise,chain,eth_fillTransaction,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_fillTransaction on RISE_MAINNET""}}" +degen,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +tea,chain,eth_gasPrice,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getAccount,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +humanity,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 550000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +moonbeam,chain,eth_fillTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +humanity,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +bnb,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000 +bnb,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x6ac54253b7374c823e1598e34ed1cd4b6ae07cc8b8ad173fea235368abb6ee53 err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +robinhood,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +soneium,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x2d1604ff4cfd70f498997ebee5cf095a5153e4ed1c62947f192dc6420d31e431 err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +sonic,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +tempo,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Other JSON-RPC error,200,-32000,value transfer not allowed +mythos,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x348ba44b77143267d6d4c74f057f998cc0dd9521a8f608ee3a119d7a288cc1eb err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +zora,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +mythos,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 550000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +dogecoin,chain,getblock,fail,jsonrpc error,Stale example - block reference,200,-5,Block not found +hyperliquid,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 2023155498000000 +zora,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +abstract,chain,zks_getConfirmedTokens,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +litecoin,chain,getblock,fail,jsonrpc error,Stale example - block reference,200,-5,Block not found +bob,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +injective,chain,eth_getBlockReceipts,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getBlockReceipts on INJECTIVE_MAINNET""}}" +zetachain,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +zetachain,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tempo,chain,eth_simulateV1,fail,jsonrpc error,Other JSON-RPC error,200,-32003,value transfer not allowed +tempo,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +botanix,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +adi,chain,eth_getBalance,fail,dns/connect,Host does not resolve,,,[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1016) +fantom,chain,eth_getBalance,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +matic,chain,eth_callMany,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +fantom,chain,eth_getBlockByHash,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getBlockByNumber,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getBlockReceipts,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getBalance,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getBlockByHash,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +opt,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +base,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +unichain,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +ink,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +stable,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +anime,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +celo,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +stable,chain,eth_getBlockByHash,fail,jsonrpc error,Stale example - block reference,200,-32000,block not found for hash 0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c +scroll,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +celo,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +scroll,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +flow,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +berachain,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +apechain,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +citrea,chain,eth_createAccessList,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_createAccessList on CITREA_MAINNET""}}" +sei,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +citrea,chain,eth_estimateDiffSize,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 10000 +sei,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +citrea,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +apechain,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +metis,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +stellar,chain,getTransactions,fail,jsonrpc error,Other JSON-RPC error,200,-32600,start ledger (62462511) must be between the oldest ledger: 62549861 and the latest ledger: 62791780 for this rpc instance +bitcoin,chain,getblockfilter,fail,jsonrpc error,Other JSON-RPC error,200,-1,Index is not enabled for filtertype basic +arb,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +story,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +story,chain,eth_getAccountInfo,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getAccountInfo on STORY_MAINNET""}}" +gensyn,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +gensyn,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +gensyn,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +clankermon,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +bitcoincash,chain,getblockfilter,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,getblockheader,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,getblockstats,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +lens,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +lens,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +solana-das,product,getNftEditions,fail,jsonrpc error,Other JSON-RPC error,200,-32000,Database Error: RecordNotFound Error: Master Edition not found +shape,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +monad,chain,eth_fillTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32603,reserve balance violation +monad,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +xmtp,chain,eth_call,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,err: insufficient funds for gas * price + value: address 0x0000000000000000000000000000000000000000 have 0 want 1 (supplied gas 550000000) +gnosis,chain,eth_fillTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,The method 'eth_fillTransaction' is not supported. +blast,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +blast,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +xmtp,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 550000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +linea,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +linea,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +linea,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +superseed,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +degen,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +tea,chain,eth_getBlockByNumber,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getBlockTransactionCountByHash,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +moonbeam,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +moonbeam,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +humanity,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +bnb,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +bnb,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +soneium,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +robinhood,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +litecoin,chain,getblockfilter,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +sonic,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +mantle,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_protocolVersion does not exist/is not available +mantle,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,"failed to forward tx to sequencer, err: 'only replay-protected (EIP-155) transactions allowed over RPC'" +mythos,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +litecoin,chain,getblockheader,fail,jsonrpc error,Stale example - block reference,200,-5,Block not found +opbnb,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +eth,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +dogecoin,chain,getblockfilter,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +dogecoin,chain,getblockstats,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +soneium,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +dogecoin,chain,getblockheader,fail,jsonrpc error,Stale example - block reference,200,-5,Block not found +litecoin,chain,getblockstats,fail,jsonrpc error,Stale example - block reference,200,-5,Block not found +soneium,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +ronin,chain,eth_protocolVersion,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_protocolVersion on RONIN_MAINNET""}}" +mantle,chain,eth_simulateV1,fail,jsonrpc error,Other JSON-RPC error,200,-32000,error calculating DA footprint: missing deposit transaction +abstract,chain,zks_getL2ToL1MsgProof,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +avax,chain,eth_callMany,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_callMany does not exist/is not available +mantle,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +injective,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +zetachain,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getRawTransactionByHash does not exist/is not available +hyperliquid,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +tron,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tron,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tron,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,method not found +fantom,chain,eth_getBlockTransactionCountByHash,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +zksync,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +adi,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +adi,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +fantom,chain,eth_getBlockTransactionCountByNumber,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +matic,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +fantom,chain,eth_getCode,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +rootstock,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +fantom,chain,eth_getFilterChanges,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getBlockTransactionCountByNumber,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +rootstock,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +matic,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +tea,chain,eth_getCode,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +celo,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +jovay,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +jovay,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +sei,chain,eth_getBlockByHash,fail,jsonrpc error,Other JSON-RPC error,200,-32000,could not find block for hash D5F1812548BE429CBDC6376B29611FC49E06F1359758C4CEAAA3B393E2239F9C +sei,chain,eth_getBlockByNumber,fail,jsonrpc error,Other JSON-RPC error,200,-32000,EVM is only supported from block 79123881 onwards +citrea,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +citrea,chain,eth_fillTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +citrea,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +sei,chain,eth_getBlockTransactionCountByHash,fail,jsonrpc error,Other JSON-RPC error,200,-32000,could not find block for hash B903239F8543D04B5DC1BA6579132B143087C68DB1B2168786408FCBCE568238 +worldmobilechain,chain,eth_estimateGas,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed with 550000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 have 0 want 1 +metis,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +frax,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +frax,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +bitcoin,chain,getblocktemplate,fail,dns/connect,Host does not resolve,,,[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1016) +katana,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +settlus,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +bitcoincash,chain,getchaintxstats,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +polygonzkevm,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +polygonzkevm,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +monad,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +xmtp,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +crossfi,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +crossfi,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +superseed,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +astar,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +astar,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tea,chain,eth_getFilterChanges,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getFilterLogs,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +ronin,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 7, tx nonce 1" +eth,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +litecoin,chain,getblocktemplate,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +avax,chain,eth_createAccessList,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,failed to apply transaction: 0x06e1fc810838685f59bb39dc2fa1e1c9b8ed248faa8961c29923b255e4ef9241 err: insufficient funds for gas * price + value: address 0xaeA8F8f781326bfE6A7683C2BD48Dd6AA4d3Ba63 have +eth,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +opbnb,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +litecoin,chain,getchaintxstats,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +opbnb,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +zora,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +zora,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +dogecoin,chain,getchaintxstats,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +ronin,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +zora,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32602,"invalid hex in storage key: ""0x283s34c8e2b1456f09832c71e5d6a0b4f8c9e1d3a2b5c7f0e6d4a8b2c1f3e5d7""" +injective,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getRawTransactionByHash does not exist/is not available +injective,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +botanix,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +botanix,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +zksync,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +fantom,chain,eth_getFilterLogs,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +zksync,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +fantom,chain,eth_getLogs,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getProof,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getStorageAt,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getLogs,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getRawTransactionByHash,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +rootstock,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,method not found +opt,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tempo,chain,eth_call,fail,jsonrpc error,Other JSON-RPC error,200,-32603,Revm error: value transfer not allowed +anime,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +anime,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +megaeth,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +megaeth,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +anime,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +stable,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +stable,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +scroll,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +scroll,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +flow,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +flow,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +flow,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getRawTransactionByHash does not exist/is not available +pharos,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +pharos,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +pharos,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32700,"PARAM_VERIFY_ERROR: failed to parse slot, invalid hex character" +jovay,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,METHOD_NOT_FOUND +worldchain,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +sei,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +apechain,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +sei,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +apechain,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +worldmobilechain,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +metis,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +bitcoin,chain,getmempoolancestors,fail,jsonrpc error,Other JSON-RPC error,200,-5,Transaction not in mempool +katana,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +plasma,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +plasma,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +arb,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +arb,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +story,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +story,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +settlus,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +settlus,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +gensyn,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +mode,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +mode,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +mode,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +clankermon,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +clankermon,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +clankermon,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +bitcoincash,chain,getmempoolancestors,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +lens,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +lens,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +shape,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +xmtp,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +gnosis,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +blast,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +blast,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +xlayer,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 2, tx nonce 1" +crossfi,chain,eth_getProof,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getProof on CROSSFI_MAINNET""}}" +crossfi,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getRawTransactionByHash does not exist/is not available +linea,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +rise,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tea,chain,eth_getStorageAt,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getTransactionByBlockHashAndIndex,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +rise,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +superseed,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +moonbeam,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +degen,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +astar,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +superseed,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +degen,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +moonbeam,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +humanity,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +humanity,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +degen,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +robinhood,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +robinhood,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +sonic,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +sonic,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +avax,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +mythos,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +mythos,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +dogecoin,chain,getindexinfo,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +tempo,chain,eth_callBundle,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +dogecoin,chain,getmemoryinfo,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +dogecoin,chain,getmempoolancestors,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +litecoin,chain,getmempoolancestors,fail,jsonrpc error,Other JSON-RPC error,200,-5,Transaction not in mempool +soneium,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +avax,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +avax,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +abstract,chain,zks_sendRawTransactionWithDetailedOutput,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +injective,chain,eth_getTransactionByBlockNumberAndIndex,fail,jsonrpc error,Other JSON-RPC error,200,-32000,"error in json rpc client, with http response metadata: (Status: 200 OK, Protocol HTTP/1.1). RPC error -32603 - Internal error: height 82990 is not available, lowest height is 160612644" +tempo,chain,eth_callMany,fail,jsonrpc error,Mutation method - gas mismatch,200,-32000,call_many error in bundle 0 and transaction 1: intrinsic gas too low +tron,chain,eth_getTransactionCount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getTransactionCount does not exist/is not available +botanix,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +fantom,chain,eth_getTransactionByBlockHashAndIndex,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getTransactionByBlockNumberAndIndex,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getTransactionByHash,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getTransactionCount,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getTransactionByBlockNumberAndIndex,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_getTransactionByHash,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +matic,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +base,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +base,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +opt,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +unichain,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +unichain,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +unichain,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +ink,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +ink,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +ink,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +opt,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +stable,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getRawTransactionByHash does not exist/is not available +celo,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +celo,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +celo,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +berachain,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +berachain,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +berachain,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +pharos,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,METHOD_NOT_FOUND +worldchain,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +worldchain,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32602,"invalid hex in storage key: ""0x283s34c8e2b1456f09832c71e5d6a0b4f8c9e1d3a2b5c7f0e6d4a8b2c1f3e5d7""" +apechain,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +sei,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getRawTransactionByHash does not exist/is not available +sei,chain,eth_getTransactionByBlockHashAndIndex,fail,jsonrpc error,Other JSON-RPC error,200,-32000,could not find block for hash BF137C3A7A1EBDFAC21252765E5D7F40D115C2757E4A4ABEE929BE88C624FDB7 +citrea,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +bitcoin,chain,getmempooldescendants,fail,jsonrpc error,Other JSON-RPC error,200,-5,Transaction not in mempool +plasma,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +arb,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +story,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +gensyn,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +gensyn,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +bitcoincash,chain,getmempooldescendants,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +lens,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +sui,chain,suix_getAllCoins,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,invalid cursor +arc,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +arc,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +arc,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +shape,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32602,"invalid hex in storage key: ""0x283s34c8e2b1456f09832c71e5d6a0b4f8c9e1d3a2b5c7f0e6d4a8b2c1f3e5d7""" +shape,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +monad,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +monad,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +monad,chain,eth_getProof,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +gnosis,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +gnosis,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +blast,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +xlayer,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +linea,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +linea,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +rise,chain,eth_getProof,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getProof on RISE_MAINNET""}}" +tea,chain,eth_newBlockFilter,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_newFilter,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +superseed,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +astar,chain,eth_getTransactionByBlockNumberAndIndex,fail,jsonrpc error,Other JSON-RPC error,200,-32603,2 is out of bounds +moonbeam,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +humanity,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +moonbeam,chain,eth_getTransactionByBlockNumberAndIndex,fail,jsonrpc error,Other JSON-RPC error,200,-32603,2 is out of bounds +bnb,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +bnb,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +robinhood,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +litecoin,chain,getmempooldescendants,fail,jsonrpc error,Other JSON-RPC error,200,-5,Transaction not in mempool +avax,chain,eth_getAssetBalance,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAssetBalance does not exist/is not available +mythos,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +soneium,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +hyperliquid,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +hyperliquid,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +dogecoin,chain,getmempooldescendants,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +tempo,chain,eth_estimateGas,fail,jsonrpc error,Other JSON-RPC error,200,-32603,Revm error: value transfer not allowed +soneium,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +mantle,chain,eth_callMany,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_callMany does not exist/is not available +hyperliquid,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +tempo,chain,eth_fillTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32603,Revm error: value transfer not allowed +tron,chain,eth_sendRawTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_sendRawTransaction does not exist/is not available +tron,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +fantom,chain,eth_getTransactionReceipt,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getUncleByBlockHashAndIndex,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getUncleByBlockNumberAndIndex,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,eth_sendRawTransaction,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_getUncleCountByBlockHash,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +matic,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tea,chain,eth_submitWork,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +matic,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +base,chain,eth_getProof,fail,dns/connect,Host does not resolve,,,[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1016) +anime,chain,eth_getTransactionByHash,fail,dns/connect,Host does not resolve,,,[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1016) +stable,chain,eth_getTransactionReceipt,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +citrea,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +citrea,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +citrea,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +frax,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,"insufficient funds for gas * price + value: balance 0, tx cost 2000031576605720000, overshot 2000031576605720000" +frax,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +katana,chain,eth_getUncleByBlockHashAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockHashAndIndex on KATANA_MAINNET""}}" +katana,chain,eth_getUncleByBlockNumberAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockNumberAndIndex on KATANA_MAINNET""}}" +katana,chain,eth_getUncleCountByBlockHash,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleCountByBlockHash on KATANA_MAINNET""}}" +mode,chain,eth_getUncleCountByBlockHash,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleCountByBlockHash on MODE_MAINNET""}}" +bitcoincash,chain,getrawmempool,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,getrawtransaction,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,gettxoutproof,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +sui,chain,suix_getCoins,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,invalid cursor +sui,chain,suix_getDynamicFieldObject,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Could not find module +monad,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +xmtp,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +xmtp,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tea,chain,eth_uninstallFilter,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,net_version,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +astar,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32603,nonce too low +bnb,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +litecoin,chain,getrawtransaction,fail,jsonrpc error,Other JSON-RPC error,200,-5,Block hash not found +dogecoin,chain,getrawmempool,fail,jsonrpc error,Other JSON-RPC error,200,-1,"getrawmempool ( verbose ) + +Returns all transaction ids in memory pool as a json array of string transaction ids. + +Hint: use getmempoolentry to fetch a specific transaction from the mempool. + +Arguments" +dogecoin,chain,getrawtransaction,fail,jsonrpc error,Other JSON-RPC error,200,-1,"getrawtransaction ""txid"" ( verbose ) + +NOTE: By default this function only works for mempool transactions. If the -txindex option is +enabled, it also works for blockchain transactions. +DEPRECATED: for " +dogecoin,chain,gettxoutproof,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +litecoin,chain,gettxoutproof,fail,jsonrpc error,Stale example - block reference,200,-5,Block not found +sonic,chain,eth_getUncleByBlockHashAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockHashAndIndex on SONIC_MAINNET""}}" +abstract,chain,eth_fillTransaction,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +zetachain,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +bob,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +zetachain,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +fantom,chain,eth_getUncleCountByBlockNumber,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +zksync,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,3,max fee per gas less than block base fee +fantom,chain,eth_maxPriorityFeePerGas,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +zksync,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - stale gas price example,200,3,max fee per gas less than block base fee +fantom,chain,eth_newBlockFilter,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tea,chain,web3_clientVersion,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_newFilter,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +adi,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32603,[0xb40ca2b75e7312bfa842991b14bc7cac495736a4fcf18e70240c9702525c2ade]: sender does not have enough funds (0) to cover transaction fees: 2000000000021000000 +tea,chain,web3_sha3,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +adi,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +matic,chain,eth_getRootHash,fail,jsonrpc error,Example payload type/format invalid,200,-32602,invalid argument 0: json: cannot unmarshal string into Go value of type uint64 +rootstock,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32010,transaction nonce too low +rootstock,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +ink,chain,eth_getUncleByBlockHashAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockHashAndIndex on INK_MAINNET""}}" +celo,chain,eth_getUncleByBlockHashAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockHashAndIndex on CELO_MAINNET""}}" +megaeth,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,EIP-155 protection required +megaeth,chain,eth_simulateV1,fail,jsonrpc error,Other JSON-RPC error,200,-32603,EVM reported invalid transaction (0xc7a1c674cba687e94e77344ee7bcb15fd4f8f7cd8f86d331a9f3d5288de26668): lack of funds (20000000000) for max fee (75000000001) +scroll,chain,eth_getUncleByBlockHashAndIndex,fail,dns/connect,Host does not resolve,,,[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1016) +flow,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_protocolVersion does not exist/is not available +berachain,chain,eth_getUncleByBlockNumberAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockNumberAndIndex on BERACHAIN_MAINNET""}}" +jovay,chain,eth_newBlockFilter,fail,jsonrpc error,Method not supported on chain,200,-32601,METHOD_NOT_FOUND +sei,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32000,: unknown +worldmobilechain,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +worldmobilechain,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +worldmobilechain,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +bitcoin,chain,sendrawtransaction,fail,jsonrpc error,Other JSON-RPC error,200,-25,bad-txns-inputs-missingorspent +bitcoin,chain,submitblock,fail,jsonrpc error,Other JSON-RPC error,200,-22,Block decode failed +bitcoin,chain,gettxoutsetinfo,fail,jsonrpc error,Other JSON-RPC error,200,-3,"Wrong type passed: +{ + ""Position 1 (hash_type)"": ""JSON value of type bool is not of expected type string"" +}" +bitcoin,chain,submitheader,fail,jsonrpc error,Other JSON-RPC error,200,-22,Block header decode failed +katana,chain,eth_getUncleCountByBlockNumber,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleCountByBlockNumber on KATANA_MAINNET""}}" +settlus,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +mode,chain,eth_getUncleCountByBlockNumber,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleCountByBlockNumber on MODE_MAINNET""}}" +bitcoincash,chain,gettxoutsetinfo,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,sendrawtransaction,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,submitblock,fail,HTTP 400,Other JSON-RPC error,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32604,""message"":""this request method is not supported""}}" +bitcoincash,chain,submitheader,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +monad,chain,eth_getUncleByBlockHashAndIndex,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +xmtp,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +xmtp,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 100000000" +crossfi,chain,eth_protocolVersion,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_protocolVersion on CROSSFI_MAINNET""}}" +xlayer,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +crossfi,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +crossfi,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +litecoin,chain,gettxoutsetinfo,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +litecoin,chain,sendrawtransaction,fail,jsonrpc error,Other JSON-RPC error,200,-25,bad-txns-inputs-missingorspent +litecoin,chain,submitblock,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +eth,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 18737, tx nonce 1" +avax,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +sonic,chain,eth_getUncleByBlockNumberAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockNumberAndIndex on SONIC_MAINNET""}}" +ronin,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 1 +avax,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +mantle,chain,eth_fillTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,insufficient funds for transfer +opbnb,chain,eth_newPendingTransactionFilter,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_newPendingTransactionFilter on OPBNB_MAINNET""}}" +opbnb,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +opbnb,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +hyperliquid,chain,eth_getUncleByBlockHashAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockHashAndIndex on HYPERLIQUID_MAINNET""}}" +dogecoin,chain,gettxoutsetinfo,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +dogecoin,chain,sendrawtransaction,fail,jsonrpc error,Other JSON-RPC error,200,-3,"Expected type bool, got number" +dogecoin,chain,submitblock,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +mantle,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +dogecoin,chain,submitheader,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +litecoin,chain,submitheader,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +mantle,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccountInfo does not exist/is not available +avax,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +zora,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +zora,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_protocolVersion does not exist/is not available +zora,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +abstract,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +abstract,chain,eth_getAccountInfo,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +hyperliquid,chain,eth_getUncleByBlockNumberAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockNumberAndIndex on HYPERLIQUID_MAINNET""}}" +bob,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +bob,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +injective,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +fantom,chain,eth_sendRawTransaction,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +botanix,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value +botanix,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +fantom,chain,eth_submitWork,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,eth_syncing,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +zksync,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +fantom,chain,eth_uninstallFilter,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +ink,chain,eth_getUncleByBlockNumberAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockNumberAndIndex on INK_MAINNET""}}" +celo,chain,eth_getUncleByBlockNumberAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockNumberAndIndex on CELO_MAINNET""}}" +anime,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 500000000000" +anime,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +megaeth,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +megaeth,chain,realtime_sendRawTransaction,fail,jsonrpc error,Mutation method - gas mismatch,200,-32000,intrinsic gas too low +flow,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32000,invalid: failed transaction: the minimum accepted gas price for transactions is: 16038000000 +flow,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +pharos,chain,eth_newBlockFilter,fail,jsonrpc error,Method not supported on chain,200,-32601,METHOD_NOT_FOUND +pharos,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,METHOD_NOT_FOUND +pharos,chain,eth_sendRawTransaction,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,SERVER_ERROR: invalid chainId +jovay,chain,eth_sendRawTransaction,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,gas price too low +jovay,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,METHOD_NOT_FOUND +sei,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +apechain,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 101682760000" +citrea,chain,eth_getUncleByBlockHashAndIndex,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleByBlockHashAndIndex on CITREA_MAINNET""}}" +apechain,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_sendRawTransactionSync does not exist/is not available +worldmobilechain,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 195000000000" +worldmobilechain,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +metis,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,invalid transaction: insufficient funds for gas * price + value +metis,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +katana,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value +katana,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +story,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,"insufficient funds for gas * price + value: balance 0, tx cost 2000000000021000000, overshot 2000000000021000000" +story,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +settlus,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +settlus,chain,net_listening,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: net_listening on SETTLUS_MAINNET""}}" +mode,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 5, tx nonce 1" +mode,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +clankermon,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +clankermon,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32000,invalid input: missing chain ID +bitcoincash,chain,submitpackage,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +bitcoincash,chain,testmempoolaccept,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +lens,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,3,max fee per gas less than block base fee +polygonzkevm,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,RPC error response: RPC error response: INTERNAL_ERROR: insufficient funds +polygonzkevm,chain,eth_submitWork,fail,jsonrpc error,Other JSON-RPC error,200,-32000,"not supported, consensus engine is not ethash" +lens,chain,eth_simulateV1,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +sui,chain,suix_getStakesByIds,fail,jsonrpc error,Other JSON-RPC error,200,-32000,"Type error while binding function arguments: Object type is not a StakedSui: Object { id: 0xa6379c19b3aa9aa878fc1deaf69c1dbb1de4224de8b62de04e4962b593e037e9, version: SequenceNumber(895250390), owner:" +monad,chain,eth_getUncleByBlockNumberAndIndex,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +monad,chain,eth_getUncleCountByBlockHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +monad,chain,eth_getUncleCountByBlockNumber,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +crossfi,chain,eth_syncing,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_syncing on CROSSFI_MAINNET""}}" +crossfi,chain,net_listening,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: net_listening on CROSSFI_MAINNET""}}" +rise,chain,eth_protocolVersion,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_protocolVersion on RISE_MAINNET""}}" +rise,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,max fee per gas less than block base fee +superseed,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +moonbeam,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32603,unprotected legacy transactions are not allowed by RPC policy +degen,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_protocolVersion does not exist/is not available +humanity,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 150000000" +degen,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 120000000000" +degen,chain,eth_simulateV1,fail,jsonrpc error,Mutation method needs funded sender,200,-38014,err: insufficient funds for gas * price + value: address 0xC000000000000000000000000000000000000000 have 20000000000 want 16888498602639361 (supplied gas 1125899906842624) +degen,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +humanity,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +robinhood,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 10000000" +robinhood,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +eth,chain,eth_simulateV1,fail,jsonrpc error,Mutation method - gas mismatch,200,-32000,intrinsic gas too high +eth,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +litecoin,chain,submitpackage,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +sonic,chain,eth_newPendingTransactionFilter,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_newPendingTransactionFilter on SONIC_MAINNET""}}" +opbnb,chain,net_peerCount,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: net_peerCount on OPBNB_MAINNET""}}" +hyperliquid,chain,eth_getUncleCountByBlockHash,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleCountByBlockHash on HYPERLIQUID_MAINNET""}}" +hyperliquid,chain,eth_getUncleCountByBlockNumber,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_getUncleCountByBlockNumber on HYPERLIQUID_MAINNET""}}" +dogecoin,chain,submitpackage,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +dogecoin,chain,testmempoolaccept,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +soneium,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,"insufficient funds for gas * price + value: balance 0, tx cost 2000000011702051323, overshot 2000000011702051323" +dogecoin,chain,verifymessage,fail,HTTP 503,Transient or capacity: HTTP 503,503,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32001,""message"":""Unable to complete request at this time.""}}" +sonic,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +litecoin,chain,verifymessage,fail,jsonrpc error,Other JSON-RPC error,200,-3,Invalid address +zora,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +injective,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +injective,chain,eth_syncing,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_syncing on INJECTIVE_MAINNET""}}" +hyperliquid,chain,eth_newBlockFilter,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +injective,chain,net_listening,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: net_listening on INJECTIVE_MAINNET""}}" +tempo,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +fantom,chain,net_version,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +tempo,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +fantom,chain,web3_clientVersion,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +fantom,chain,web3_sha3,fail,dns/connect,Host does not resolve,,,[Errno -2] Name or service not known +zksync,chain,web3_sha3,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +matic,chain,eth_getTransactionReceiptsByBlock,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getTransactionReceiptsByBlock does not exist/is not available +opt,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32000,invalid sender +opt,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Other JSON-RPC error,200,-32000,invalid sender +ink,chain,eth_protocolVersion,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_protocolVersion on INK_MAINNET""}}" +ink,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32603,"HTTP error 400 with body: {""jsonrpc"":""2.0"",""error"":{""code"":-32200,""message"":""pre-EIP-155 transaction not allowed""},""id"":40312} +" +stable,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +celo,chain,eth_newPendingTransactionFilter,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_newPendingTransactionFilter on CELO_MAINNET""}}" +stable,chain,eth_simulateV1,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_simulateV1 on STABLE_MAINNET""}}" +celo,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +stable,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +scroll,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_protocolVersion does not exist/is not available +scroll,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,nonce too low +scroll,chain,eth_simulateV1,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_simulateV1 does not exist/is not available +berachain,chain,eth_protocolVersion,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_protocolVersion on BERACHAIN_MAINNET""}}" +berachain,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 25, tx nonce 1" +pharos,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,METHOD_NOT_FOUND +worldchain,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 2, tx nonce 1" +apechain,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +sei,chain,web3_sha3,fail,jsonrpc error,Method not supported on chain,200,-32601,the method web3_sha3 does not exist/is not available +citrea,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,insufficient funds for gas * price + value: have 0 want 2000000000021000000 +citrea,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +plasma,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 3, tx nonce 1" +plasma,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +arb,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 20006000" +arb,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - stale gas price example,200,-32000,"max fee per gas less than block base fee: address 0x627306090abaB3A6e1400e9345bC60c78a8BEf57, maxFeePerGas: 1000 baseFee: 20022000" +arb,chain,eth_simulateV1,fail,jsonrpc error,Mutation method needs funded sender,200,-38014,err: insufficient funds for gas * price + value: address 0xC000000000000000000000000000000000000000 have 20000000000 want 16888498602639361 (supplied gas 1125899906842624) +arb,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +gensyn,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,"insufficient funds for gas * price + value: balance 0, tx cost 2000000003143695018, overshot 2000000003143695018" +lens,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +sui,chain,unsafe_batchTransaction,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +sui,chain,unsafe_mergeCoins,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +arc,chain,eth_newPendingTransactionFilter,fail,jsonrpc error,Other JSON-RPC error,200,-32001,Pending transaction filters are not allowed +monad,chain,eth_newBlockFilter,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +shape,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,"insufficient funds for gas * price + value: balance 0, tx cost 2000000062368332396, overshot 2000000062368332396" +monad,chain,eth_newPendingTransactionFilter,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +monad,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +gnosis,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32000,"InsufficientFunds, Balance is zero, cannot pay gas" +gnosis,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Method not supported on chain,200,-32601,The method 'eth_sendRawTransactionSync' is not supported. +blast,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_protocolVersion does not exist/is not available +blast,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32000,invalid sender +blast,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Other JSON-RPC error,200,-32000,invalid sender +linea,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_protocolVersion does not exist/is not available +linea,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32000,"transaction gas price below minimum: gas tip cap 1000, minimum needed 1000000" +rise,chain,eth_sendRawTransactionSync,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_sendRawTransactionSync on RISE_MAINNET""}}" +rise,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +degen,chain,net_peerCount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method net_peerCount does not exist/is not available +soneium,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,"insufficient funds for gas * price + value: balance 0, tx cost 2000000011340888988, overshot 2000000011340888988" +sonic,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_sendRawTransactionSync does not exist/is not available +sonic,chain,eth_simulateV1,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_simulateV1 does not exist/is not available +sonic,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +mythos,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method needs funded sender,200,-32000,"insufficient funds for gas * price + value: balance 0, tx cost 2000000000022094481, overshot 2000000000022094481" +mythos,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +hyperliquid,chain,eth_newPendingTransactionFilter,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_newPendingTransactionFilter on HYPERLIQUID_MAINNET""}}" +hyperliquid,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32603,transaction underpriced +soneium,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +mantle,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +abstract,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +abstract,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +tempo,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +zetachain,chain,eth_getAccount,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_getAccount does not exist/is not available +zksync,chain,zks_getAllAccountBalances,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +base,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 22214, tx nonce 1" +base,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 22214, tx nonce 1" +base,chain,eth_simulateV1,fail,jsonrpc error,Mutation method - gas mismatch,200,-32000,intrinsic gas too high +base,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +unichain,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 7, tx nonce 1" +unichain,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 7, tx nonce 1" +opt,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +unichain,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +ink,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +stable,chain,eth_syncing,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_syncing on STABLE_MAINNET""}}" +celo,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +stable,chain,net_listening,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: net_listening on STABLE_MAINNET""}}" +celo,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +scroll,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +scroll,chain,net_listening,fail,dns/connect,Host does not resolve,,,[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1016) +berachain,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +worldchain,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 2, tx nonce 1" +worldchain,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +gensyn,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +lens,chain,web3_sha3,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +polygonzkevm,chain,zkevm_estimateFee,fail,jsonrpc error,Method not supported on chain,200,-32601,the method zkevm_estimateFee does not exist/is not available +sui,chain,unsafe_moveCall,fail,jsonrpc error,Other JSON-RPC error,200,-32000,ObjectID hex string must start with 0x. +polygonzkevm,chain,zkevm_estimateGasPrice,fail,jsonrpc error,Method not supported on chain,200,-32601,the method zkevm_estimateGasPrice does not exist/is not available +arc,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 18, tx nonce 1" +arc,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 18, tx nonce 1" +arc,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +shape,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32603,unimplemented +monad,chain,eth_sendRawTransaction,fail,jsonrpc error,Other JSON-RPC error,200,-32603,Transaction fee too low +monad,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +monad,chain,eth_simulateV1,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +monad,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Other JSON-RPC error,200,-32603,Transaction fee too low +gnosis,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,The method 'eth_submitWork' is not supported. +blast,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +blast,chain,eth_simulateV1,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_simulateV1 does not exist/is not available +xlayer,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +xlayer,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +linea,chain,eth_simulateV1,fail,jsonrpc error,Mutation method needs funded sender,200,-38014,err: insufficient funds for gas * price + value: address 0xC000000000000000000000000000000000000000 have 20000000000 want 30000000001 (supplied gas 2000000000) +linea,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +rise,chain,net_listening,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: net_listening on RISE_MAINNET""}}" +bnb,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Other JSON-RPC error,200,-32000,"transaction gas price below minimum: gas tip cap 1000, minimum needed 50000000" +bnb,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale nonce example,200,-32000,"nonce too low: next nonce 11156, tx nonce 1" +bnb,chain,eth_protocolVersion,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_protocolVersion does not exist/is not available +bundler,product,eth_sendUserOperation,fail,HTTP 400,Invalid params shape (-32602),400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32602,""message"":""invalid 1st argument: userOperation invalid user operation fields""}}" +mantle,chain,eth_getFilterLogs,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +mantle,chain,eth_getProof,fail,jsonrpc error,Example payload type/format invalid,200,-32000,hex string invalid +hyperliquid,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +hyperliquid,chain,eth_syncing,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: eth_syncing on HYPERLIQUID_MAINNET""}}" +ronin,chain,eth_getFilterChanges,fail,HTTP 400,Stateless Try It - filter does not persist,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32000,""message"":""filter not found""}}" +abstract,chain,eth_getRawTransactionByHash,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +matic,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +matic,chain,eth_sendRawTransactionSync,fail,jsonrpc error,Mutation method - pre-EIP-155 example,200,-32000,only replay-protected (EIP-155) transactions allowed over RPC +scroll,chain,web3_clientVersion,fail,dns/connect,Host does not resolve,,,[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1016) +polygonzkevm,chain,zkevm_getBroadcastURI,fail,jsonrpc error,Method not supported on chain,200,-32601,the method zkevm_getBroadcastURI does not exist/is not available +sui,chain,unsafe_publish,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +sui,chain,unsafe_requestAddStake,fail,jsonrpc error,Other JSON-RPC error,200,-32000,unable to fetch object 0x8d776bfe8433e298973f7018e195906664985a80d060a288af6f9848094738bb +sui,chain,unsafe_splitCoin,fail,jsonrpc error,Other JSON-RPC error,200,-32000,unable to fetch object 0x8d776bfe8433e298973f7018e195906664985a80d060a288af6f9848094738bb +monad,chain,net_peerCount,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +xlayer,chain,eth_getProof,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +bnb,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,the method eth_submitWork does not exist/is not available +zksync,chain,zks_getConfirmedTokens,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +matic,chain,eth_submitWork,fail,jsonrpc error,Other JSON-RPC error,200,-32000,"not supported, consensus engine is not ethash" +solana,chain,getPriorityFeeEstimate,fail,HTTP 400,Other failure,400,,"{""jsonrpc"":""2.0"",""id"":""1"",""result"":{""error"":""Invalid Base58 transaction""}}" +solana,chain,getStakeActivation,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +solana,chain,getTokenAccountBalance,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid param: not a Token account +sui,chain,unsafe_splitCoinEqual,fail,jsonrpc error,Other JSON-RPC error,200,-32000,unable to fetch object 0x003f9c0f533b4f72b38e4dfd90f26c29f052eb855ab8fb1912d20ac2e39ac3bc +sui,chain,unsafe_transferSui,fail,jsonrpc error,Other JSON-RPC error,200,-32000,unable to fetch object 0x003f9c0f533b4f72b38e4dfd90f26c29f052eb855ab8fb1912d20ac2e39ac3bc +sui,chain,unsafe_transferObject,fail,jsonrpc error,Other JSON-RPC error,200,-32000,unable to fetch object 0x003f9c0f533b4f72b38e4dfd90f26c29f052eb855ab8fb1912d20ac2e39ac3bc +monad,chain,web3_sha3,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +debug,product,debug_traceBlockByNumber,fail,jsonrpc error,Other JSON-RPC error,200,-32008,Response is too big +zksync,chain,zks_getL2ToL1MsgProof,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +solana,chain,getTokenAccountsByOwner,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,`params` should have at least 2 argument(s) +gas-manager-coverage,product,alchemy_requestFeePayer,fail,HTTP 400,Method not supported on chain,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32600,""message"":""Unsupported method: alchemy_requestFeePayer on eth""}}" +gas-manager-coverage,product,alchemy_requestGasAndPaymasterAndData,fail,HTTP 400,Other JSON-RPC error,400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32500,""message"":""validation reverted: [reason]: AA20 account not deployed"",""data"":{""reason"":""AA20 account not deployed""}}}" +gas-manager-coverage,product,alchemy_requestPaymasterAndData,fail,HTTP 400,Invalid params shape (-32602),400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32602,""message"":""invalid 1st argument: sponsorship_request 'userOperation': object was missing 'paymasterVerificationGasLimit' element""}}" +gas-manager-coverage,product,alchemy_requestPaymasterTokenQuote,fail,HTTP 400,Invalid params shape (-32602),400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32602,""message"":""invalid 1st argument: sponsorship_request object was missing 'erc20Context' element""}}" +abstract,chain,eth_sendRawTransaction,fail,jsonrpc error,Mutation method - stale gas price example,200,3,max fee per gas less than block base fee +abstract,chain,eth_simulateV1,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +solana,chain,requestAirdrop,fail,jsonrpc error,Other JSON-RPC error,200,-32600,Invalid request +gas-manager-coverage,product,pm_getPaymasterData,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,"Policy ID(s) not found. Please ensure you're sending requests with the API key associated with the policies' app, that the policies are active, and the network is allowed.[69d524a7-e932-4214-8673-dcdc" +gas-manager-coverage,product,pm_getPaymasterStubData,fail,HTTP 400,Invalid params shape (-32602),400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32602,""message"":""Policy not found""}}" +bundler,product,eth_estimateUserOperationGas,fail,HTTP 400,Invalid params shape (-32602),400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32602,""message"":""invalid 1st argument: userOperation invalid user operation fields""}}" +abstract,chain,eth_submitWork,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +zksync,chain,zks_sendRawTransactionWithDetailedOutput,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +trace,product,trace_filter,fail,jsonrpc error,Example payload type/format invalid,200,-32602,invalid argument 0: json: cannot unmarshal string into Go struct field TraceFilterRequest.after of type uint64 +abstract,chain,web3_sha3,fail,jsonrpc error,Method not supported on chain,200,-32601,Method not found +trace,product,trace_rawTransaction,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,failed to decode signed transaction +transaction-simulation,product,alchemy_simulateAssetChanges,fail,jsonrpc error,Mutation method - gas mismatch,200,-32000,intrinsic gas too low +transaction-simulation,product,alchemy_simulateExecution,fail,HTTP 400,Invalid params shape (-32602),400,,"{""jsonrpc"":""2.0"",""id"":1,""error"":{""code"":-32602,""message"":""invalid 1st argument: transaction argument was not valid transaction object or transaction hash""}}" +userop-sim,product,alchemy_simulateUserOperationAssetChanges,fail,jsonrpc error,Other JSON-RPC error,200,-32603,"ReferenceError: bigInt is not defined + at result (unknown at :39:20)" +wallet-api,product,wallet_prepareCalls,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Sponsorship failed: failed to get policy: Policy not found +wallet-api,product,wallet_sendPreparedCalls,fail,jsonrpc error,Other JSON-RPC error,200,-32500,An error occurred while executing user operation: validation reverted: [reason]: AA25 invalid account nonce +wallet-api,product,wallet_createSession,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,7702 account must be delegated before calling `wallet_createSession` +wallet-api,product,wallet_getCapabilities,fail,jsonrpc error,Stale example - address reference,200,-32000,Wallet address not found. +wallet-api,product,wallet_getCrossChainStatus_v0,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Chain not supported +wallet-api,product,wallet_requestQuote_v0,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Sponsorship failed: failed to get policy: Policy not found +eth,chain,eth_callBundle,fail,jsonrpc error,Invalid params shape (-32602),200,-32602,Invalid params +eth,chain,eth_callMany,fail,jsonrpc error,Mutation method needs funded sender,200,-32003,call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000 diff --git a/audits/2026-05-29-try-it-audit/report.md b/audits/2026-05-29-try-it-audit/report.md new file mode 100644 index 000000000..1c600a884 --- /dev/null +++ b/audits/2026-05-29-try-it-audit/report.md @@ -0,0 +1,646 @@ +# Docs Try It audit — failing examples catalog + +Generated by docs-agent. Probed every method's canonical example payload from `src/openrpc/` (chain specs + Alchemy product specs) against the documented mainnet endpoint with the `docs-demo` API key, with `Origin: https://www.alchemy.com` and `Referer: https://www.alchemy.com/` headers. This mirrors what the Fern Try It widget posts when a user clicks Try It without editing the form. + +## Headline numbers + +* Total methods probed: **3749** +* OK (HTTP 200 + JSON-RPC `result`): **2604** +* Failed: **842** +* Skipped (no example or websocket-only): **303** +* Failure rate among probed methods: **24.4%** + +HTTP transport noise (rate limits, transient 503s) was retried up to three times. Remaining 429/503 failures listed below are inconclusive and worth ignoring as audit signal. + +## Top quick wins + +Three single-edit changes that would fix the largest number of chain pages at once. + +### 1. `eth_getProof` example has an invalid hex character — affects ~29 EVM chains + +`src/openrpc/chains/_components/custom/methods.yaml`'s `eth_getProof example` includes a 32-byte storage key with a literal `s` character (`0x283s34c8e2b1...`). Every EVM chain spec inherits this shared example, so the live RPC returns `hex string invalid` on every chain whose page uses the shared component. Replacing the offending storage key with a valid 32-byte hex string fixes the example everywhere it is referenced. + +### 2. `eth_submitWork` should be removed from 64 chain specs + +`eth_submitWork` is a Proof-of-Work miner method. Every PoS / PoA / rollup chain returns `the method eth_submitWork does not exist/is not available` for it. It is referenced from ~64 chain specs that have no mining. Removing the `$ref` from each chain spec (or adding a single `x-bot-ignore` entry per chain) eliminates 64 failing example pages. + +### 3. `eth_getAccount` should be removed from ~44 chain specs + +`eth_getAccount` is an Erigon-only convenience method. It is referenced from ~44 chain specs that don't run Erigon. Same fix shape as `eth_submitWork` — remove the `$ref` from each affected chain spec. + +## Failures by category + +| Category | Count | Severity | Notes | +| --- | ---: | --- | --- | +| Method not supported on chain | 276 | HIGH — spec lists method, server actively rejects. Remove from chain spec or add `x-bot-ignore` until upstream Daikon chain-config catches up. | +| Stateless Try It - filter does not persist | 136 | MEDIUM — `eth_getFilterChanges` / `eth_getFilterLogs` / `eth_uninstallFilter` always fail on cold Try It because no filter was created in the same session. UX bug, hard to fix from spec alone. | +| Mutation method needs funded sender | 83 | MEDIUM — `eth_sendRawTransaction` and friends always fail with insufficient funds on docs-demo. Consider documenting in description or using a pre-signed example tx that returns a deterministic well-known error. | +| Other JSON-RPC error | 83 | VARIES — case-by-case review. | +| Host does not resolve | 76 | HIGH — chain endpoint doesn't exist on Alchemy infra (deprecated chain or wrong slug). The spec should be removed or the slug corrected. | +| Invalid params shape (-32602) | 43 | HIGH — example params don't match the server's expected shape. Often a `paramStructure: by-name` vs `by-position` mismatch, or fabricated optional fields. | +| Transient or capacity: HTTP 503 | 43 | LOW — retried 4x; concentrated on UTXO chains (bitcoincash, dogecoin, litecoin). Often `-32001 Unable to complete request at this time`. Re-probe at a different time. | +| Example payload type/format invalid | 32 | HIGH — wrong hex format / wrong value type for a required param. Real spec bug. | +| Mutation method - pre-EIP-155 example | 19 | MEDIUM — `eth_sendRawTransaction` examples use unprotected legacy txs that EVM nodes now reject. | +| Mutation method - stale nonce example | 18 | MEDIUM — example raw transaction nonce is below the sender's current nonce. | +| Mutation method - stale gas price example | 14 | MEDIUM — `maxFeePerGas` in example below current base fee. | +| Stale example - block reference | 9 | HIGH — example block hash/number does not exist on the canonical mainnet (often legacy testnet leftover). | +| Mutation method - gas mismatch | 8 | MEDIUM — example transaction gas exceeds chain limits. | +| Other failure | 1 | VARIES — see details. | +| Stale example - address reference | 1 | MEDIUM — example address is unused on the canonical mainnet. | + +## Per-category details + +### Method not supported on chain (276) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_submitWork` | 64 (abstract, adi, anime, apechain, arb, arc, ...+58) | `the method eth_submitWork does not exist/is not available` | +| `eth_getAccount` | 44 (abstract, adi, anime, apechain, arb, avax, ...+38) | `the method eth_getAccount does not exist/is not available` | +| `eth_getAccountInfo` | 21 (abstract, apechain, avax, blast, botanix, celo, ...+15) | `the method eth_getAccountInfo does not exist/is not available` | +| `eth_getRawTransactionByHash` | 18 (abstract, astar, citrea, crossfi, flow, hyperliquid, ...+12) | `Method not found` | +| `eth_protocolVersion` | 15 (berachain, blast, bnb, crossfi, degen, flow, ...+9) | `the method eth_protocolVersion does not exist/is not available` | +| `eth_simulateV1` | 8 (abstract, avax, blast, lens, monad, scroll, ...+2) | `the method eth_simulateV1 does not exist/is not available` | +| `eth_blobBaseFee` | 8 (apechain, berachain, gnosis, hyperliquid, linea, monad, ...+2) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_blobBaseFee on STABLE_MAINNET"}}` | +| `eth_fillTransaction` | 8 (abstract, citrea, flow, gnosis, lens, moonbeam, ...+2) | `Method not found` | +| `eth_getUncleByBlockHashAndIndex` | 7 (celo, citrea, hyperliquid, ink, katana, monad, ...+1) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_getUncleByBlockHashAndIndex on KATANA_` | +| `eth_getUncleByBlockNumberAndIndex` | 7 (berachain, celo, hyperliquid, ink, katana, monad, ...+1) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_getUncleByBlockNumberAndIndex on KATAN` | +| `net_listening` | 6 (crossfi, hyperliquid, injective, rise, settlus, stable) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: net_listening on HYPERLIQUID_MAINNET"}}` | +| `web3_sha3` | 6 (abstract, hyperliquid, lens, monad, sei, zksync) | `Method not found` | +| `eth_callMany` | 5 (avax, celo, mantle, monad, sonic) | `the method eth_callMany does not exist/is not available` | +| `eth_newPendingTransactionFilter` | 5 (celo, hyperliquid, monad, opbnb, sonic) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_newPendingTransactionFilter on OPBNB_M` | +| `eth_createAccessList` | 4 (citrea, metis, rise, stable) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_createAccessList on STABLE_MAINNET"}}` | +| `eth_getUncleCountByBlockHash` | 4 (hyperliquid, katana, mode, monad) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_getUncleCountByBlockHash on KATANA_MAI` | +| `eth_newBlockFilter` | 4 (hyperliquid, jovay, monad, pharos) | `METHOD_NOT_FOUND` | +| `eth_getUncleCountByBlockNumber` | 4 (hyperliquid, katana, mode, monad) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_getUncleCountByBlockNumber on KATANA_M` | +| `eth_sendRawTransactionSync` | 4 (apechain, gnosis, rise, sonic) | `the method eth_sendRawTransactionSync does not exist/is not available` | +| `eth_syncing` | 4 (crossfi, hyperliquid, injective, stable) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_syncing on CROSSFI_MAINNET"}}` | +| `eth_getProof` | 3 (crossfi, monad, rise) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: eth_getProof on CROSSFI_MAINNET"}}` | +| `net_peerCount` | 3 (degen, monad, opbnb) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"Unsupported method: net_peerCount on OPBNB_MAINNET"}}` | +| `zks_getAllAccountBalances` | 2 (abstract, zksync) | `Method not found` | +| `eth_getBlockReceipts` | 2 (injective, zetachain) | `the method eth_getBlockReceipts does not exist/is not available` | +| `eth_accounts` | 2 (hyperliquid, monad) | `Method not found` | + +Spec breakdown: 70 specs affected. Top 15: + +* `monad`: 18 +* `hyperliquid`: 14 +* `abstract`: 11 +* `stable`: 8 +* `citrea`: 8 +* `rise`: 8 +* `sonic`: 8 +* `zksync`: 8 +* `celo`: 7 +* `katana`: 7 +* `lens`: 7 +* `crossfi`: 7 +* `avax`: 6 +* `injective`: 6 +* `flow`: 6 + +### Invalid params shape (-32602) (43) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_getProof` | 12 (arc, berachain, bnb, bob, botanix, citrea, ...+6) | `Invalid params` | +| `eth_callBundle` | 5 (arc, base, eth, tempo, worldchain) | `Invalid params` | +| `eth_sendRawTransaction` | 2 (jovay, pharos) | `SERVER_ERROR: invalid chainId` | +| `getHealth` | 1 (stellar) | `invalid parameters` | +| `sui_devInspectTransactionBlock` | 1 (sui) | `Deserialization error: invalid value: integer `15043`, expected variant index 0 <= i < 3` | +| `sui_executeTransactionBlock` | 1 (sui) | `Invalid params` | +| `sui_dryRunTransactionBlock` | 1 (sui) | `Deserialization error: ULEB128-encoded integer did not fit in the target size` | +| `suix_getAllCoins` | 1 (sui) | `invalid cursor` | +| `suix_getCoins` | 1 (sui) | `invalid cursor` | +| `suix_getDynamicFieldObject` | 1 (sui) | `Could not find module` | +| `unsafe_batchTransaction` | 1 (sui) | `Invalid params` | +| `unsafe_mergeCoins` | 1 (sui) | `Invalid params` | +| `eth_sendUserOperation` | 1 (bundler) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"invalid 1st argument: userOperation invalid user operation fie` | +| `unsafe_publish` | 1 (sui) | `Invalid params` | +| `getTokenAccountBalance` | 1 (solana) | `Invalid param: not a Token account` | +| `getTokenAccountsByOwner` | 1 (solana) | ``params` should have at least 2 argument(s)` | +| `alchemy_requestPaymasterAndData` | 1 (gas-manager-coverage) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"invalid 1st argument: sponsorship_request 'userOperation': obj` | +| `alchemy_requestPaymasterTokenQuote` | 1 (gas-manager-coverage) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"invalid 1st argument: sponsorship_request object was missing '` | +| `pm_getPaymasterData` | 1 (gas-manager-coverage) | `Policy ID(s) not found. Please ensure you're sending requests with the API key associated with the policies' app, that t` | +| `pm_getPaymasterStubData` | 1 (gas-manager-coverage) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"Policy not found"}}` | +| `eth_estimateUserOperationGas` | 1 (bundler) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"invalid 1st argument: userOperation invalid user operation fie` | +| `trace_rawTransaction` | 1 (trace) | `failed to decode signed transaction` | +| `alchemy_simulateExecution` | 1 (transaction-simulation) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"invalid 1st argument: transaction argument was not valid trans` | +| `wallet_prepareCalls` | 1 (wallet-api) | `Sponsorship failed: failed to get policy: Policy not found` | +| `wallet_createSession` | 1 (wallet-api) | `7702 account must be delegated before calling `wallet_createSession`` | + +Spec breakdown: + +* `sui`: 9 +* `gas-manager-coverage`: 4 +* `wallet-api`: 4 +* `arc`: 2 +* `tempo`: 2 +* `bundler`: 2 +* `solana`: 2 +* `ronin`: 1 +* `stellar`: 1 +* `base`: 1 +* `worldchain`: 1 +* `mode`: 1 +* `botanix`: 1 +* `berachain`: 1 +* `plasma`: 1 +* `gnosis`: 1 +* `citrea`: 1 +* `bnb`: 1 +* `bob`: 1 +* `pharos`: 1 +* `jovay`: 1 +* `xlayer`: 1 +* `trace`: 1 +* `transaction-simulation`: 1 +* `eth`: 1 + +### Example payload type/format invalid (32) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_getProof` | 29 (anime, apechain, arb, avax, blast, celo, ...+23) | `hex string invalid` | +| `bor_getRootHash` | 1 (matic) | `invalid argument 0: json: cannot unmarshal string into Go value of type uint64` | +| `eth_getRootHash` | 1 (matic) | `invalid argument 0: json: cannot unmarshal string into Go value of type uint64` | +| `trace_filter` | 1 (trace) | `invalid argument 0: json: cannot unmarshal string into Go struct field TraceFilterRequest.after of type uint64` | + +Spec breakdown: + +* `matic`: 3 +* `eth`: 1 +* `opbnb`: 1 +* `zora`: 1 +* `anime`: 1 +* `pharos`: 1 +* `settlus`: 1 +* `clankermon`: 1 +* `degen`: 1 +* `unichain`: 1 +* `ink`: 1 +* `opt`: 1 +* `celo`: 1 +* `worldchain`: 1 +* `apechain`: 1 +* `arb`: 1 +* `story`: 1 +* `gensyn`: 1 +* `shape`: 1 +* `blast`: 1 +* `linea`: 1 +* `superseed`: 1 +* `humanity`: 1 +* `robinhood`: 1 +* `mythos`: 1 +* `soneium`: 1 +* `worldmobilechain`: 1 +* `avax`: 1 +* `mantle`: 1 +* `trace`: 1 + +### Stale example - block reference (9) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_getBlockByHash` | 2 (stable, zetachain) | `block not found for hash 0xd5f1812548be429cbdc6376b29611fc49e06f1359758c4ceaaa3b393e2239f9c` | +| `getblock` | 2 (dogecoin, litecoin) | `Block not found` | +| `getblockheader` | 2 (dogecoin, litecoin) | `Block not found` | +| `eth_fillTransaction` | 1 (injective) | `header not found` | +| `getblockstats` | 1 (litecoin) | `Block not found` | +| `gettxoutproof` | 1 (litecoin) | `Block not found` | + +Spec breakdown: + +* `litecoin`: 4 +* `dogecoin`: 2 +* `zetachain`: 1 +* `injective`: 1 +* `stable`: 1 + +### Stale example - address reference (1) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `wallet_getCapabilities` | 1 (wallet-api) | `Wallet address not found.` | + +Spec breakdown: + +* `wallet-api`: 1 + +### Host does not resolve (76) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_getBalance` | 3 (adi, fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getTransactionByHash` | 3 (anime, fantom, tea) | `[Errno -2] Name or service not known` | +| `web3_clientVersion` | 3 (fantom, scroll, tea) | `[Errno -2] Name or service not known` | +| `eth_blockNumber` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_call` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_chainId` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getTransactionCount` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getTransactionReceipt` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_estimateGas` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_gasPrice` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getAccount` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getBlockByHash` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getBlockByNumber` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getBlockTransactionCountByHash` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getBlockTransactionCountByNumber` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getCode` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getFilterChanges` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getFilterLogs` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getLogs` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getProof` | 2 (base, fantom) | `[Errno -2] Name or service not known` | +| `eth_getStorageAt` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getTransactionByBlockHashAndIndex` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_getTransactionByBlockNumberAndIndex` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_newBlockFilter` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | +| `eth_newFilter` | 2 (fantom, tea) | `[Errno -2] Name or service not known` | + +Spec breakdown: + +* `fantom`: 39 +* `tea`: 30 +* `scroll`: 3 +* `adi`: 1 +* `bitcoin`: 1 +* `base`: 1 +* `anime`: 1 + +### Mutation method - pre-EIP-155 example (19) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_sendRawTransaction` | 15 (avax, celo, crossfi, injective, ink, mantle, ...+9) | `only replay-protected (EIP-155) transactions allowed over RPC` | +| `eth_sendRawTransactionSync` | 4 (avax, celo, matic, zora) | `only replay-protected (EIP-155) transactions allowed over RPC` | + +Spec breakdown: + +* `avax`: 2 +* `zora`: 2 +* `celo`: 2 +* `matic`: 2 +* `mantle`: 1 +* `superseed`: 1 +* `zetachain`: 1 +* `megaeth`: 1 +* `settlus`: 1 +* `crossfi`: 1 +* `opbnb`: 1 +* `injective`: 1 +* `sonic`: 1 +* `ink`: 1 +* `stable`: 1 + +### Mutation method - stale nonce example (18) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_sendRawTransaction` | 14 (arc, astar, base, berachain, bnb, eth, ...+8) | `nonce too low: next nonce 7, tx nonce 1` | +| `eth_sendRawTransactionSync` | 4 (arc, base, unichain, worldchain) | `nonce too low: next nonce 22214, tx nonce 1` | + +Spec breakdown: + +* `worldchain`: 2 +* `base`: 2 +* `unichain`: 2 +* `arc`: 2 +* `ronin`: 1 +* `xlayer`: 1 +* `astar`: 1 +* `rootstock`: 1 +* `eth`: 1 +* `mode`: 1 +* `scroll`: 1 +* `berachain`: 1 +* `plasma`: 1 +* `bnb`: 1 + +### Mutation method - stale gas price example (14) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_sendRawTransaction` | 12 (abstract, anime, apechain, arb, degen, humanity, ...+6) | `max fee per gas less than block base fee` | +| `eth_sendRawTransactionSync` | 2 (arb, zksync) | `max fee per gas less than block base fee` | + +Spec breakdown: + +* `zksync`: 2 +* `arb`: 2 +* `xmtp`: 1 +* `anime`: 1 +* `apechain`: 1 +* `worldmobilechain`: 1 +* `lens`: 1 +* `rise`: 1 +* `humanity`: 1 +* `degen`: 1 +* `robinhood`: 1 +* `abstract`: 1 + +### Mutation method - gas mismatch (8) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_createAccessList` | 3 (arc, base, eth) | `intrinsic gas too high` | +| `eth_simulateV1` | 2 (base, eth) | `intrinsic gas too high` | +| `eth_callMany` | 1 (tempo) | `call_many error in bundle 0 and transaction 1: intrinsic gas too low` | +| `realtime_sendRawTransaction` | 1 (megaeth) | `intrinsic gas too low` | +| `alchemy_simulateAssetChanges` | 1 (transaction-simulation) | `intrinsic gas too low` | + +Spec breakdown: + +* `eth`: 2 +* `base`: 2 +* `arc`: 1 +* `tempo`: 1 +* `megaeth`: 1 +* `transaction-simulation`: 1 + +### Mutation method needs funded sender (83) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_fillTransaction` | 28 (apechain, arb, avax, base, berachain, bnb, ...+22) | `insufficient funds for transfer` | +| `eth_estimateGas` | 13 (anime, botanix, citrea, clankermon, flow, gensyn, ...+7) | `failed with 550000000 gas: insufficient funds for gas * price + value: address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA9604` | +| `eth_createAccessList` | 12 (arb, avax, bnb, celo, gensyn, linea, ...+6) | `insufficient funds for transfer` | +| `eth_sendRawTransaction` | 12 (bob, botanix, citrea, frax, gensyn, katana, ...+6) | `insufficient funds for gas * price + value: have 0 want 2000000000021000000` | +| `eth_callMany` | 10 (arc, berachain, bnb, eth, hyperliquid, ink, ...+4) | `call_many error in bundle 0 and transaction 0: insufficient funds for gas * price + value: have 0 want 2023155498000000` | +| `eth_call` | 3 (anime, clankermon, xmtp) | `err: insufficient funds for gas * price + value: address 0x0000000000000000000000000000000000000000 have 0 want 1 (suppl` | +| `eth_simulateV1` | 3 (arb, degen, linea) | `err: insufficient funds for gas * price + value: address 0xC000000000000000000000000000000000000000 have 20000000000 wan` | +| `eth_estimateDiffSize` | 1 (citrea) | `insufficient funds for gas * price + value: have 0 want 10000` | +| `eth_sendRawTransactionSync` | 1 (soneium) | `insufficient funds for gas * price + value: balance 0, tx cost 2000000011340888988, overshot 2000000011340888988` | + +Spec breakdown: 47 specs affected. Top 15: + +* `gensyn`: 4 +* `linea`: 4 +* `soneium`: 4 +* `arb`: 3 +* `bnb`: 3 +* `mythos`: 3 +* `citrea`: 3 +* `xmtp`: 3 +* `opbnb`: 2 +* `opt`: 2 +* `anime`: 2 +* `clankermon`: 2 +* `eth`: 2 +* `sonic`: 2 +* `botanix`: 2 + +### Stateless Try It - filter does not persist (136) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_getFilterLogs` | 68 (abstract, adi, anime, apechain, arb, arc, ...+62) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"filter not found"}}` | +| `eth_getFilterChanges` | 68 (abstract, adi, anime, apechain, arb, arc, ...+62) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"filter not found"}}` | + +Spec breakdown: 68 specs affected. Top 15: + +* `ronin`: 2 +* `zetachain`: 2 +* `opbnb`: 2 +* `eth`: 2 +* `injective`: 2 +* `tron`: 2 +* `zksync`: 2 +* `adi`: 2 +* `rootstock`: 2 +* `jovay`: 2 +* `metis`: 2 +* `frax`: 2 +* `katana`: 2 +* `settlus`: 2 +* `polygonzkevm`: 2 + +### Other JSON-RPC error (83) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `eth_sendRawTransaction` | 12 (adi, blast, clankermon, flow, gnosis, hyperliquid, ...+6) | `invalid sender` | +| `eth_estimateGas` | 8 (adi, crossfi, injective, jovay, pharos, stable, ...+2) | `rpc error: code = Unknown desc = insufficient balance for transfer` | +| `eth_call` | 8 (adi, arc, astar, crossfi, pharos, stable, ...+2) | `rpc error: code = Internal desc = insufficient balance for transfer` | +| `eth_sendRawTransactionSync` | 5 (blast, bnb, monad, opt, tempo) | `invalid sender` | +| `eth_simulateV1` | 3 (mantle, megaeth, tempo) | `value transfer not allowed` | +| `eth_getTransactionByBlockNumberAndIndex` | 3 (astar, injective, moonbeam) | `2 is out of bounds` | +| `sendrawtransaction` | 3 (bitcoin, dogecoin, litecoin) | `bad-txns-inputs-missingorspent` | +| `eth_fillTransaction` | 2 (monad, tempo) | `reserve balance violation` | +| `getmempoolancestors` | 2 (bitcoin, litecoin) | `Transaction not in mempool` | +| `getmempooldescendants` | 2 (bitcoin, litecoin) | `Transaction not in mempool` | +| `getrawtransaction` | 2 (dogecoin, litecoin) | `Block hash not found` | +| `submitblock` | 2 (bitcoin, bitcoincash) | `Block decode failed` | +| `eth_submitWork` | 2 (matic, polygonzkevm) | `not supported, consensus engine is not ethash` | +| `getEvents` | 1 (stellar) | `startLedger must be within the ledger range: 62549698 - 62791617` | +| `eth_accounts` | 1 (polygonzkevm) | `the method has been deprecated: eth_accounts` | +| `createrawtransaction` | 1 (litecoin) | `Invalid Litecoin address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa` | +| `estimatesmartfee` | 1 (dogecoin) | `estimatesmartfee nblocks + +WARNING: This interface is unstable and may disappear or change! + +Estimates the approximate fe` | +| `eth_createAccessList` | 1 (blast) | `method handler crashed` | +| `getTransactions` | 1 (stellar) | `start ledger (62462511) must be between the oldest ledger: 62549861 and the latest ledger: 62791780 for this rpc instanc` | +| `getblockfilter` | 1 (bitcoin) | `Index is not enabled for filtertype basic` | +| `getNftEditions` | 1 (solana-das) | `Database Error: RecordNotFound Error: Master Edition not found` | +| `eth_getBlockByHash` | 1 (sei) | `could not find block for hash D5F1812548BE429CBDC6376B29611FC49E06F1359758C4CEAAA3B393E2239F9C` | +| `eth_getBlockByNumber` | 1 (sei) | `EVM is only supported from block 79123881 onwards` | +| `eth_getBlockTransactionCountByHash` | 1 (sei) | `could not find block for hash B903239F8543D04B5DC1BA6579132B143087C68DB1B2168786408FCBCE568238` | +| `eth_getTransactionByBlockHashAndIndex` | 1 (sei) | `could not find block for hash BF137C3A7A1EBDFAC21252765E5D7F40D115C2757E4A4ABEE929BE88C624FDB7` | + +Spec breakdown: 37 specs affected. Top 15: + +* `bitcoin`: 7 +* `sui`: 7 +* `litecoin`: 6 +* `tempo`: 6 +* `sei`: 5 +* `dogecoin`: 4 +* `adi`: 3 +* `blast`: 3 +* `monad`: 3 +* `injective`: 2 +* `tron`: 2 +* `stable`: 2 +* `pharos`: 2 +* `stellar`: 2 +* `polygonzkevm`: 2 + +### Transient or capacity: HTTP 503 (43) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `getblockfilter` | 3 (bitcoincash, dogecoin, litecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getchaintxstats` | 3 (bitcoincash, dogecoin, litecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `gettxoutsetinfo` | 3 (bitcoincash, dogecoin, litecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `submitheader` | 3 (bitcoincash, dogecoin, litecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `submitpackage` | 3 (bitcoincash, dogecoin, litecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `createrawtransaction` | 2 (bitcoincash, dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `decoderawtransaction` | 2 (bitcoincash, dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getblockstats` | 2 (bitcoincash, dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getmempoolancestors` | 2 (bitcoincash, dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getmempooldescendants` | 2 (bitcoincash, dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `gettxoutproof` | 2 (bitcoincash, dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `submitblock` | 2 (dogecoin, litecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `testmempoolaccept` | 2 (bitcoincash, dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `estimatesmartfee` | 1 (bitcoincash) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getblock` | 1 (bitcoincash) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `eth_callMany` | 1 (matic) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getblockheader` | 1 (bitcoincash) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getblocktemplate` | 1 (litecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getindexinfo` | 1 (dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getmemoryinfo` | 1 (dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `eth_getTransactionReceipt` | 1 (stable) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getrawmempool` | 1 (bitcoincash) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `getrawtransaction` | 1 (bitcoincash) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `sendrawtransaction` | 1 (bitcoincash) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | +| `verifymessage` | 1 (dogecoin) | `{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"Unable to complete request at this time."}}` | + +Spec breakdown: + +* `bitcoincash`: 18 +* `dogecoin`: 16 +* `litecoin`: 7 +* `matic`: 1 +* `stable`: 1 + +### Other failure (1) + +Top patterns: + +| Method | Chains affected | Sample error | +| --- | ---: | --- | +| `getPriorityFeeEstimate` | 1 (solana) | `{"jsonrpc":"2.0","id":"1","result":{"error":"Invalid Base58 transaction"}}` | + +Spec breakdown: + +* `solana`: 1 + +## Per-spec failure rate + +Top specs by failure share among probed methods (excluding skipped). + +| Spec | Failed | Probed | Failure rate | +| --- | ---: | ---: | ---: | +| `fantom` | 39 | 39 | 100% | +| `tea` | 30 | 30 | 100% | +| `gas-manager-coverage` | 6 | 6 | 100% | +| `userop-sim` | 1 | 1 | 100% | +| `dogecoin` | 22 | 36 | 61% | +| `wallet-api` | 6 | 11 | 55% | +| `bitcoincash` | 19 | 36 | 53% | +| `transaction-simulation` | 2 | 4 | 50% | +| `litecoin` | 17 | 36 | 47% | +| `monad` | 23 | 51 | 45% | +| `hyperliquid` | 18 | 46 | 39% | +| `sei` | 14 | 39 | 36% | +| `stable` | 15 | 46 | 33% | +| `crossfi` | 12 | 38 | 32% | +| `sui` | 16 | 51 | 31% | +| `tron` | 9 | 30 | 30% | +| `bundler` | 2 | 7 | 29% | +| `celo` | 14 | 50 | 28% | +| `injective` | 12 | 44 | 27% | +| `rise` | 12 | 44 | 27% | +| `scroll` | 13 | 48 | 27% | +| `solana` | 5 | 19 | 26% | +| `sonic` | 13 | 50 | 26% | +| `avax` | 13 | 51 | 25% | +| `flow` | 10 | 40 | 25% | +| `katana` | 10 | 40 | 25% | +| `linea` | 13 | 52 | 25% | +| `stellar` | 3 | 12 | 25% | +| `trace` | 2 | 8 | 25% | +| `citrea` | 14 | 58 | 24% | + +## Methods that fail on 5+ chains + +These are the highest-leverage fixes. If you fix the canonical example for one of these in the shared component, the fix propagates to every chain. + +| Method | # chains failing | Chains | +| --- | ---: | --- | +| `eth_sendRawTransaction` | 70 | abstract, adi, anime, apechain, arb, arc, astar, avax, ...+62 | +| `eth_getFilterLogs` | 70 | abstract, adi, anime, apechain, arb, arc, astar, avax, ...+62 | +| `eth_getFilterChanges` | 70 | abstract, adi, anime, apechain, arb, arc, astar, avax, ...+62 | +| `eth_submitWork` | 68 | abstract, adi, anime, apechain, arb, arc, avax, base, ...+60 | +| `eth_getProof` | 46 | anime, apechain, arb, arc, avax, base, berachain, blast, ...+38 | +| `eth_getAccount` | 46 | abstract, adi, anime, apechain, arb, avax, blast, bnb, ...+38 | +| `eth_fillTransaction` | 39 | abstract, apechain, arb, avax, base, berachain, bnb, celo, ...+31 | +| `eth_estimateGas` | 23 | adi, anime, botanix, citrea, clankermon, crossfi, fantom, flow, ...+15 | +| `eth_getAccountInfo` | 21 | abstract, apechain, avax, blast, botanix, celo, citrea, flow, ...+13 | +| `eth_sendRawTransactionSync` | 20 | apechain, arb, arc, avax, base, blast, bnb, celo, ...+12 | +| `eth_createAccessList` | 20 | arb, arc, avax, base, blast, bnb, celo, citrea, ...+12 | +| `eth_getRawTransactionByHash` | 19 | abstract, astar, citrea, crossfi, flow, hyperliquid, injective, jovay, ...+11 | +| `eth_callMany` | 18 | arc, avax, berachain, bnb, celo, eth, fantom, hyperliquid, ...+10 | +| `eth_simulateV1` | 16 | abstract, arb, avax, base, blast, degen, eth, lens, ...+8 | +| `eth_protocolVersion` | 15 | berachain, blast, bnb, crossfi, degen, flow, ink, linea, ...+7 | +| `eth_call` | 13 | adi, anime, arc, astar, clankermon, crossfi, fantom, pharos, ...+5 | +| `eth_getUncleByBlockHashAndIndex` | 9 | celo, citrea, fantom, hyperliquid, ink, katana, monad, scroll, ...+1 | +| `eth_blobBaseFee` | 8 | apechain, berachain, gnosis, hyperliquid, linea, monad, rise, stable | +| `web3_sha3` | 8 | abstract, fantom, hyperliquid, lens, monad, sei, tea, zksync | +| `eth_getUncleByBlockNumberAndIndex` | 8 | berachain, celo, fantom, hyperliquid, ink, katana, monad, sonic | +| `net_listening` | 7 | crossfi, hyperliquid, injective, rise, scroll, settlus, stable | +| `eth_newBlockFilter` | 6 | fantom, hyperliquid, jovay, monad, pharos, tea | +| `eth_newPendingTransactionFilter` | 6 | arc, celo, hyperliquid, monad, opbnb, sonic | +| `eth_getBlockByHash` | 5 | fantom, sei, stable, tea, zetachain | +| `eth_callBundle` | 5 | arc, base, eth, tempo, worldchain | +| `eth_getTransactionByBlockNumberAndIndex` | 5 | astar, fantom, injective, moonbeam, tea | +| `eth_getUncleCountByBlockHash` | 5 | fantom, hyperliquid, katana, mode, monad | +| `eth_getUncleCountByBlockNumber` | 5 | fantom, hyperliquid, katana, mode, monad | +| `eth_syncing` | 5 | crossfi, fantom, hyperliquid, injective, stable | + +## Recommended follow-ups + +Suggested cluster tickets, ordered by impact: + +1. **Remove or `x-bot-ignore` chain-method pairs that the server rejects** (`Method not supported on chain`). This is the biggest cluster and the easiest fix per case — every entry is a chain spec listing a method the upstream node doesn't implement. Most look like Daikon/chain-config drift. +2. **Refresh stale example values** (`Stale example - block reference`, `Stale example - transaction reference`, `Stale example - hash reference`). Each fix usually unblocks one chain × one method pair. +3. **Fix the `trace_*` and `debug_*` write-method UX** (`Mutation method needs funded sender`, `Mutation method - pre-EIP-155 example`). The original Slack ask was about this cluster — the most user-visible quick-win. +4. **Decide on the filter-method UX** (`eth_getFilterChanges`, `eth_getFilterLogs`, `eth_uninstallFilter`). Since these depend on filter state created in the same session, the cold Try It can never succeed. Either drop them from the spec or warn in the description. +5. **Audit deprecated hostnames** (`fantom-mainnet.g.alchemy.com`, `tea-sepolia.g.alchemy.com`). If the chain is fully deprecated, the spec should be removed; if the slug changed, update servers. + +## Reproducing this audit + +Scripts: `run_audit.py` (initial pass) and `retry_429.py` (retry-with-backoff for transient HTTP 429). Run against the dereferenced JSON output produced by `pnpm run generate:rpc` under `content/api-specs/`. The `docs-demo` API key is rate-limited; per-host concurrency of 1 and an inter-call delay of 2 seconds is the practical sweet spot. + +## Out of scope + +* REST OpenAPI specs (`src/openapi/`) were not exercised in this pass — those endpoints have varied auth requirements, query/body schemas, and a few mutate-only operations, so they need a per-spec adapter rather than a single live-POST loop. +* Pulling production logs of customer-hit errors was the second half of the original Slack ask; that requires data-team / observability access docs-agent does not have. +* Verifying Fern Try It auto-fill behavior on optional fields not in the example payload (per LEARNINGS: enum-without-default auto-fills with the first enum value; array auto-fills with `[]`). The probes in this audit only send the literal example payload, so the failures here are a strict subset of what Try It produces in the wild. + +## Caveats / known limitations + +* **The audit POSTs the literal example payload.** Fern's Try It widget renders a form built from the OpenRPC schema and can also include auto-fill values for optional fields that aren't in the example. Per the docs-agent LEARNINGS, optional inline scalars / enums / arrays without `default` are auto-filled by Fern with type-based placeholders (`"string"`, first enum value, `[]`, etc.), which can break otherwise-valid examples. The **real Try It failure rate is at least as high as the audit's number**. +* **One canonical server per spec.** Chain specs probe the chain's primary mainnet endpoint; Alchemy product specs (debug, trace, bundler, etc.) probe `eth-mainnet`. Methods that are only enabled on specific networks within a product spec will appear failing here even if they work elsewhere. The `wallet-api` spec specifically targets `api.g.alchemy.com/v2`, not chain RPC. +* **`docs-demo` is rate-limited.** Persistent `HTTP 429` failures after three retry rounds are inconclusive and listed under "Transient" categories. +* **Mutation / signing methods always fail on a stateless probe** (no funded sender, no real signature, no live filter ID). They are listed as their own categories so they can be evaluated on UX grounds rather than as spec bugs. + diff --git a/audits/2026-05-29-try-it-audit/scripts/build_report.py b/audits/2026-05-29-try-it-audit/scripts/build_report.py new file mode 100644 index 000000000..a0fdab18d --- /dev/null +++ b/audits/2026-05-29-try-it-audit/scripts/build_report.py @@ -0,0 +1,417 @@ +#!/usr/bin/env python3 +"""Build the categorized audit report from /root/audit/results.json.""" + +import json +import re +from collections import Counter, defaultdict +from pathlib import Path + +OUT = Path("/root/audit") +REPO = Path("/root/docs-repo") + +# Failure category classifier. Returns (category, sub_pattern) tuple. +# Categories drive the report sections. +def classify(r): + if r["status"] != "fail": + return None + reason = r.get("reason", "") + err = r.get("rpc_error") + msg = "" + code = None + if isinstance(err, dict): + msg = (err.get("message") or "").strip() + code = err.get("code") + elif isinstance(err, str): + # Embedded JSON error string + try: + j = json.loads(err) + if isinstance(j, dict) and "error" in j: + inner = j["error"] + msg = (inner.get("message") or "").strip() + code = inner.get("code") + except Exception: + msg = err + + # Inherent transports + if reason.startswith("dns/connect"): + host = r["url"].split("/")[2] if "/" in r["url"] else "" + return ("Host does not resolve", host) + if reason.startswith("timeout"): + return ("Timeout", "") + if reason.startswith("HTTP 429"): + return ("Transient: HTTP 429 rate-limited", "") + if reason.startswith("HTTP 503"): + return ("Transient or capacity: HTTP 503", "") + if reason.startswith("non-JSON"): + return ("Server returned non-JSON", "") + if reason.startswith("transport"): + return ("Transport error", "") + + # JSON-RPC errors (from either jsonrpc error or HTTP 400 surfacing one) + if msg: + lmsg = msg.lower() + if "does not exist" in lmsg or lmsg == "method not found" or lmsg == "method_not_found": + return ("Method not supported on chain", "Method not implemented upstream") + if "unsupported method" in lmsg or "unimplemented" in lmsg: + return ("Method not supported on chain", "Server-side unsupported") + if "filter not found" in lmsg: + return ("Stateless Try It - filter does not persist", "") + if "insufficient funds" in lmsg: + return ("Mutation method needs funded sender", "") + if "intrinsic gas too high" in lmsg or "intrinsic gas too low" in lmsg: + return ("Mutation method - gas mismatch", "") + if "max fee per gas less than block base fee" in lmsg: + return ("Mutation method - stale gas price example", "") + if "nonce too low" in lmsg or "nonce too high" in lmsg: + return ("Mutation method - stale nonce example", "") + if "only replay-protected" in lmsg or "eip-155" in lmsg or "eip 155" in lmsg: + return ("Mutation method - pre-EIP-155 example", "") + if "transaction with the same hash was already imported" in lmsg or "already known" in lmsg: + return ("Mutation method - example already broadcast", "") + if "hex string invalid" in lmsg or "invalid argument" in lmsg or "invalid hex" in lmsg: + return ("Example payload type/format invalid", msg[:120]) + if "block not found" in lmsg or "header not found" in lmsg: + return ("Stale example - block reference", "") + if "transaction not found" in lmsg or "txid not found" in lmsg: + return ("Stale example - transaction reference", "") + if "address not found" in lmsg or "no such account" in lmsg or "account not found" in lmsg: + return ("Stale example - address reference", "") + if "leaf nodes not found" in lmsg or "record not found" in lmsg: + return ("Stale example - hash reference", "") + if "invalid params" in lmsg and code == -32602: + return ("Invalid params shape (-32602)", msg[:120]) + if code == -32602: + return ("Invalid params shape (-32602)", msg[:120]) + if code == -32601: + return ("Method not supported on chain", "Method not implemented upstream") + if "unable to complete request" in lmsg: + return ("Transient or capacity: -32001", "") + if "rate limit" in lmsg or "throttled" in lmsg: + return ("Transient: rate-limited", "") + # Default catch-all + return ("Other JSON-RPC error", msg[:120]) + + # No message + return ("Other failure", reason or "?") + + +def main(): + with (OUT / "results.json").open() as f: + R = json.load(f) + + total = len(R) + statuses = Counter(r["status"] for r in R) + + # Classify failures + cat_to_records = defaultdict(list) + for r in R: + c = classify(r) + if c is None: + continue + cat_to_records[c[0]].append(r) + + # Counts per spec + per_spec_fail = Counter() + per_spec_total = Counter() + per_spec_skip = Counter() + for r in R: + per_spec_total[r["spec"]] += 1 + if r["status"] == "fail": + per_spec_fail[r["spec"]] += 1 + if r["status"] == "skipped": + per_spec_skip[r["spec"]] += 1 + + # Method-level recurring patterns: methods that fail on N+ chains + method_fail_chains = defaultdict(set) + for r in R: + if r["status"] == "fail" and r["category"] == "chain": + method_fail_chains[r["method"]].add(r["spec"]) + repeat_methods = sorted( + [(m, sorted(s)) for m, s in method_fail_chains.items() if len(s) >= 5], + key=lambda kv: -len(kv[1]), + ) + + lines = [] + lines.append("# Docs Try It audit — failing examples catalog") + lines.append("") + lines.append("Generated by docs-agent. Probed every method's canonical example payload from `src/openrpc/` (chain specs + Alchemy product specs) against the documented mainnet endpoint with the `docs-demo` API key, with `Origin: https://www.alchemy.com` and `Referer: https://www.alchemy.com/` headers. This mirrors what the Fern Try It widget posts when a user clicks Try It without editing the form.") + lines.append("") + lines.append("## Headline numbers") + lines.append("") + lines.append(f"* Total methods probed: **{total}**") + lines.append(f"* OK (HTTP 200 + JSON-RPC `result`): **{statuses.get('ok', 0)}**") + lines.append(f"* Failed: **{statuses.get('fail', 0)}**") + lines.append(f"* Skipped (no example or websocket-only): **{statuses.get('skipped', 0)}**") + if statuses.get('ok', 0) + statuses.get('fail', 0): + denom = statuses.get('ok', 0) + statuses.get('fail', 0) + pct = 100.0 * statuses.get('fail', 0) / denom + lines.append(f"* Failure rate among probed methods: **{pct:.1f}%**") + lines.append("") + lines.append("HTTP transport noise (rate limits, transient 503s) was retried up to three times. Remaining 429/503 failures listed below are inconclusive and worth ignoring as audit signal.") + lines.append("") + lines.append("## Top quick wins") + lines.append("") + lines.append("Three single-edit changes that would fix the largest number of chain pages at once.") + lines.append("") + lines.append("### 1. `eth_getProof` example has an invalid hex character — affects ~29 EVM chains") + lines.append("") + lines.append("`src/openrpc/chains/_components/custom/methods.yaml`'s `eth_getProof example` includes a 32-byte storage key with a literal `s` character (`0x283s34c8e2b1...`). Every EVM chain spec inherits this shared example, so the live RPC returns `hex string invalid` on every chain whose page uses the shared component. Replacing the offending storage key with a valid 32-byte hex string fixes the example everywhere it is referenced.") + lines.append("") + lines.append("### 2. `eth_submitWork` should be removed from 64 chain specs") + lines.append("") + lines.append("`eth_submitWork` is a Proof-of-Work miner method. Every PoS / PoA / rollup chain returns `the method eth_submitWork does not exist/is not available` for it. It is referenced from ~64 chain specs that have no mining. Removing the `$ref` from each chain spec (or adding a single `x-bot-ignore` entry per chain) eliminates 64 failing example pages.") + lines.append("") + lines.append("### 3. `eth_getAccount` should be removed from ~44 chain specs") + lines.append("") + lines.append("`eth_getAccount` is an Erigon-only convenience method. It is referenced from ~44 chain specs that don't run Erigon. Same fix shape as `eth_submitWork` — remove the `$ref` from each affected chain spec.") + lines.append("") + lines.append("## Failures by category") + lines.append("") + lines.append("| Category | Count | Severity | Notes |") + lines.append("| --- | ---: | --- | --- |") + severity = { + "Method not supported on chain": "HIGH — spec lists method, server actively rejects. Remove from chain spec or add `x-bot-ignore` until upstream Daikon chain-config catches up.", + "Stateless Try It - filter does not persist": "MEDIUM — `eth_getFilterChanges` / `eth_getFilterLogs` / `eth_uninstallFilter` always fail on cold Try It because no filter was created in the same session. UX bug, hard to fix from spec alone.", + "Mutation method needs funded sender": "MEDIUM — `eth_sendRawTransaction` and friends always fail with insufficient funds on docs-demo. Consider documenting in description or using a pre-signed example tx that returns a deterministic well-known error.", + "Mutation method - gas mismatch": "MEDIUM — example transaction gas exceeds chain limits.", + "Mutation method - stale gas price example": "MEDIUM — `maxFeePerGas` in example below current base fee.", + "Mutation method - stale nonce example": "MEDIUM — example raw transaction nonce is below the sender's current nonce.", + "Mutation method - pre-EIP-155 example": "MEDIUM — `eth_sendRawTransaction` examples use unprotected legacy txs that EVM nodes now reject.", + "Mutation method - example already broadcast": "LOW — `eth_sendRawTransaction` example hash is already in mempool/mined.", + "Example payload type/format invalid": "HIGH — wrong hex format / wrong value type for a required param. Real spec bug.", + "Stale example - block reference": "HIGH — example block hash/number does not exist on the canonical mainnet (often legacy testnet leftover).", + "Stale example - transaction reference": "HIGH — example tx hash does not exist on the canonical mainnet.", + "Stale example - address reference": "MEDIUM — example address is unused on the canonical mainnet.", + "Stale example - hash reference": "MEDIUM — Solana/Photon-style stale leaf or hash.", + "Invalid params shape (-32602)": "HIGH — example params don't match the server's expected shape. Often a `paramStructure: by-name` vs `by-position` mismatch, or fabricated optional fields.", + "Other JSON-RPC error": "VARIES — case-by-case review.", + "Host does not resolve": "HIGH — chain endpoint doesn't exist on Alchemy infra (deprecated chain or wrong slug). The spec should be removed or the slug corrected.", + "Transient or capacity: HTTP 503": "LOW — retried 4x; concentrated on UTXO chains (bitcoincash, dogecoin, litecoin). Often `-32001 Unable to complete request at this time`. Re-probe at a different time.", + "Transient or capacity: -32001": "LOW — same as HTTP 503 pattern.", + "Transient: HTTP 429 rate-limited": "LOW — docs-demo key rate limit. Inconclusive after retries.", + "Transient: rate-limited": "LOW — same as above.", + "Timeout": "LOW — single 20s POST timeout, retried.", + "Server returned non-JSON": "MEDIUM — server returned an HTML/text body instead of JSON. Likely an infra issue at probe time.", + "Transport error": "LOW — TCP/TLS-level failure.", + "Other failure": "VARIES — see details.", + } + cat_sorted = sorted(cat_to_records.items(), key=lambda kv: (-len(kv[1]), kv[0])) + for cat, recs in cat_sorted: + lines.append(f"| {cat} | {len(recs)} | {severity.get(cat, 'VARIES')} |") + lines.append("") + + # Detailed sections per category + lines.append("## Per-category details") + lines.append("") + + # First section: actionable / high-severity + high_first = [ + "Method not supported on chain", + "Invalid params shape (-32602)", + "Example payload type/format invalid", + "Stale example - block reference", + "Stale example - transaction reference", + "Stale example - address reference", + "Stale example - hash reference", + "Host does not resolve", + ] + middle = [ + "Mutation method - pre-EIP-155 example", + "Mutation method - stale nonce example", + "Mutation method - stale gas price example", + "Mutation method - gas mismatch", + "Mutation method - example already broadcast", + "Mutation method needs funded sender", + "Stateless Try It - filter does not persist", + "Other JSON-RPC error", + ] + low = [ + "Transient or capacity: HTTP 503", + "Transient or capacity: -32001", + "Transient: HTTP 429 rate-limited", + "Transient: rate-limited", + "Timeout", + "Server returned non-JSON", + "Transport error", + "Other failure", + ] + order = high_first + middle + low + seen_cats = set() + + for cat in order: + if cat not in cat_to_records: + continue + recs = cat_to_records[cat] + seen_cats.add(cat) + lines.append(f"### {cat} ({len(recs)})") + lines.append("") + # Sub-bucket by (spec, method, normalized-error-message) + sub = Counter() + examples = {} + for r in recs: + err = r.get("rpc_error") + if isinstance(err, dict): + msg = err.get("message") or "" + elif isinstance(err, str): + msg = err + else: + msg = r.get("reason", "") + # Normalize numeric / hex + norm = re.sub(r"0x[0-9a-fA-F]{6,}", "", msg) + norm = re.sub(r"\d{6,}", "", norm) + norm = norm[:120] + sub[(r["method"], norm)] += 1 + examples.setdefault((r["method"], norm), r) + # Show top 20 sub-patterns + if not sub: + lines.append("(no records)") + lines.append("") + continue + lines.append("Top patterns:") + lines.append("") + lines.append("| Method | Chains affected | Sample error |") + lines.append("| --- | ---: | --- |") + # Aggregate by method across all sub-patterns first + method_chains = defaultdict(set) + method_msgs = defaultdict(list) + for r in recs: + method_chains[r["method"]].add(r["spec"]) + err = r.get("rpc_error") + if isinstance(err, dict): + msg = err.get("message") or "" + elif isinstance(err, str): + msg = err + else: + msg = r.get("reason", "") + method_msgs[r["method"]].append(msg) + items = sorted(method_chains.items(), key=lambda kv: -len(kv[1])) + for method, chains in items[:25]: + cnt = len(chains) + # Pick the most common error msg for this method + msg_counter = Counter(method_msgs[method]) + top_msg = msg_counter.most_common(1)[0][0] if msg_counter else "" + top_msg = top_msg[:120].replace("|", "\\|") + chains_disp = ", ".join(sorted(chains)[:6]) + if len(chains) > 6: + chains_disp += f", ...+{len(chains)-6}" + lines.append(f"| `{method}` | {cnt} ({chains_disp}) | `{top_msg}` |") + lines.append("") + # Per-spec summary for this category + spec_counts = Counter(r["spec"] for r in recs) + if len(spec_counts) <= 30: + lines.append("Spec breakdown:") + lines.append("") + for s, c in spec_counts.most_common(): + lines.append(f"* `{s}`: {c}") + lines.append("") + else: + lines.append(f"Spec breakdown: {len(spec_counts)} specs affected. Top 15:") + lines.append("") + for s, c in spec_counts.most_common(15): + lines.append(f"* `{s}`: {c}") + lines.append("") + + # Catch any categories we forgot + for cat, recs in cat_to_records.items(): + if cat in seen_cats: + continue + lines.append(f"### {cat} ({len(recs)})") + lines.append("") + for r in recs[:5]: + lines.append(f"* `{r['spec']}` `{r['method']}`: {r.get('reason','?')}") + lines.append("") + + # Per-spec failure rate ranking + lines.append("## Per-spec failure rate") + lines.append("") + lines.append("Top specs by failure share among probed methods (excluding skipped).") + lines.append("") + lines.append("| Spec | Failed | Probed | Failure rate |") + lines.append("| --- | ---: | ---: | ---: |") + rates = [] + for spec, tot in per_spec_total.items(): + probed = tot - per_spec_skip.get(spec, 0) + if probed == 0: + continue + fails = per_spec_fail[spec] + rate = 100.0 * fails / probed + rates.append((spec, fails, probed, rate)) + for s, f, t, rate in sorted(rates, key=lambda x: -x[3])[:30]: + lines.append(f"| `{s}` | {f} | {t} | {rate:.0f}% |") + lines.append("") + + # Methods that fail on many chains (likely the biggest fix wins) + lines.append("## Methods that fail on 5+ chains") + lines.append("") + lines.append("These are the highest-leverage fixes. If you fix the canonical example for one of these in the shared component, the fix propagates to every chain.") + lines.append("") + lines.append("| Method | # chains failing | Chains |") + lines.append("| --- | ---: | --- |") + for m, chains in repeat_methods[:50]: + chains_disp = ", ".join(chains[:8]) + if len(chains) > 8: + chains_disp += f", ...+{len(chains)-8}" + lines.append(f"| `{m}` | {len(chains)} | {chains_disp} |") + lines.append("") + + # Recommended follow-ups + lines.append("## Recommended follow-ups") + lines.append("") + lines.append("Suggested cluster tickets, ordered by impact:") + lines.append("") + lines.append("1. **Remove or `x-bot-ignore` chain-method pairs that the server rejects** (`Method not supported on chain`). This is the biggest cluster and the easiest fix per case — every entry is a chain spec listing a method the upstream node doesn't implement. Most look like Daikon/chain-config drift.") + lines.append("2. **Refresh stale example values** (`Stale example - block reference`, `Stale example - transaction reference`, `Stale example - hash reference`). Each fix usually unblocks one chain × one method pair.") + lines.append("3. **Fix the `trace_*` and `debug_*` write-method UX** (`Mutation method needs funded sender`, `Mutation method - pre-EIP-155 example`). The original Slack ask was about this cluster — the most user-visible quick-win.") + lines.append("4. **Decide on the filter-method UX** (`eth_getFilterChanges`, `eth_getFilterLogs`, `eth_uninstallFilter`). Since these depend on filter state created in the same session, the cold Try It can never succeed. Either drop them from the spec or warn in the description.") + lines.append("5. **Audit deprecated hostnames** (`fantom-mainnet.g.alchemy.com`, `tea-sepolia.g.alchemy.com`). If the chain is fully deprecated, the spec should be removed; if the slug changed, update servers.") + lines.append("") + + lines.append("## Reproducing this audit") + lines.append("") + lines.append("Scripts: `run_audit.py` (initial pass) and `retry_429.py` (retry-with-backoff for transient HTTP 429). Run against the dereferenced JSON output produced by `pnpm run generate:rpc` under `content/api-specs/`. The `docs-demo` API key is rate-limited; per-host concurrency of 1 and an inter-call delay of 2 seconds is the practical sweet spot.") + lines.append("") + lines.append("## Out of scope") + lines.append("") + lines.append("* REST OpenAPI specs (`src/openapi/`) were not exercised in this pass — those endpoints have varied auth requirements, query/body schemas, and a few mutate-only operations, so they need a per-spec adapter rather than a single live-POST loop.") + lines.append("* Pulling production logs of customer-hit errors was the second half of the original Slack ask; that requires data-team / observability access docs-agent does not have.") + lines.append("* Verifying Fern Try It auto-fill behavior on optional fields not in the example payload (per LEARNINGS: enum-without-default auto-fills with the first enum value; array auto-fills with `[]`). The probes in this audit only send the literal example payload, so the failures here are a strict subset of what Try It produces in the wild.") + lines.append("") + lines.append("## Caveats / known limitations") + lines.append("") + lines.append("* **The audit POSTs the literal example payload.** Fern's Try It widget renders a form built from the OpenRPC schema and can also include auto-fill values for optional fields that aren't in the example. Per the docs-agent LEARNINGS, optional inline scalars / enums / arrays without `default` are auto-filled by Fern with type-based placeholders (`\"string\"`, first enum value, `[]`, etc.), which can break otherwise-valid examples. The **real Try It failure rate is at least as high as the audit's number**.") + lines.append("* **One canonical server per spec.** Chain specs probe the chain's primary mainnet endpoint; Alchemy product specs (debug, trace, bundler, etc.) probe `eth-mainnet`. Methods that are only enabled on specific networks within a product spec will appear failing here even if they work elsewhere. The `wallet-api` spec specifically targets `api.g.alchemy.com/v2`, not chain RPC.") + lines.append("* **`docs-demo` is rate-limited.** Persistent `HTTP 429` failures after three retry rounds are inconclusive and listed under \"Transient\" categories.") + lines.append("* **Mutation / signing methods always fail on a stateless probe** (no funded sender, no real signature, no live filter ID). They are listed as their own categories so they can be evaluated on UX grounds rather than as spec bugs.") + lines.append("") + + report = "\n".join(lines) + "\n" + (OUT / "report.md").write_text(report) + print(f"Wrote {OUT/'report.md'}: {len(report)} bytes") + + # Also write a CSV for spreadsheet diving + import csv + with (OUT / "failures.csv").open("w", newline="") as f: + w = csv.writer(f) + w.writerow(["spec", "category_chain_or_product", "method", "status", "reason", "category", "http_status", "rpc_code", "rpc_message"]) + for r in R: + if r["status"] != "fail": + continue + c = classify(r) + err = r.get("rpc_error") + code = "" + msg = "" + if isinstance(err, dict): + code = err.get("code", "") + msg = err.get("message", "") + elif isinstance(err, str): + msg = err + w.writerow([ + r["spec"], r.get("category", ""), r["method"], r["status"], + r.get("reason", ""), c[0] if c else "", + r.get("http_status", ""), code, (msg or "")[:200], + ]) + print(f"Wrote {OUT/'failures.csv'}") + + +if __name__ == "__main__": + main() diff --git a/audits/2026-05-29-try-it-audit/scripts/reprobe_overrides.py b/audits/2026-05-29-try-it-audit/scripts/reprobe_overrides.py new file mode 100644 index 000000000..1b2450c52 --- /dev/null +++ b/audits/2026-05-29-try-it-audit/scripts/reprobe_overrides.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python3 +"""Re-probe specific specs with a corrected server override and merge back into results.json.""" +import asyncio +import json +import sys +import time +from pathlib import Path +from urllib.parse import urlparse +import httpx + +REPO = Path("/root/docs-repo") +OUT = Path("/root/audit") +SPECS_DIR = REPO / "content/api-specs" + +OVERRIDES = { + "wallet-api": "https://api.g.alchemy.com/v2", +} + + +def build_params(method): + examples = method.get("examples") or [] + if not examples: + return None, "no example" + ex = examples[0] + if not isinstance(ex, dict): + return None, "example not object" + ex_params = ex.get("params") + if ex_params is None: + return None, "example missing params" + ps = method.get("paramStructure", "by-position") + if ps == "by-name": + out = {} + for p in ex_params: + if isinstance(p, dict) and "value" in p and p.get("name") is not None: + out[p["name"]] = p["value"] + return out, None + else: + out = [p["value"] if (isinstance(p, dict) and "value" in p) else p for p in ex_params] + return out, None + + +async def main(): + with (OUT / "results.json").open() as f: + R = json.load(f) + + # Build re-probe list from spec + new_probes = [] + for spec_name, server_url in OVERRIDES.items(): + # Try both alchemy/json-rpc and chains paths + candidates = [ + SPECS_DIR / f"alchemy/json-rpc/{spec_name}.json", + SPECS_DIR / f"chains/{spec_name}.json", + ] + spec_path = next((p for p in candidates if p.exists()), None) + if not spec_path: + print(f"spec not found: {spec_name}", file=sys.stderr) + continue + with spec_path.open() as f: + d = json.load(f) + url = server_url.rstrip("/") + "/docs-demo" + for method in d.get("methods", []): + name = method.get("name") + if not name: + continue + params, err = build_params(method) + new_probes.append({ + "spec": spec_name, + "method": name, + "params": params, + "paramStructure": method.get("paramStructure", "by-position"), + "url": url, + "skipped_reason": err, + }) + + print(f"Re-probing {len(new_probes)} methods on overridden endpoints", file=sys.stderr) + + async def one(client, p): + if p["skipped_reason"]: + return None # leave existing entry alone + body = {"jsonrpc": "2.0", "id": 1, "method": p["method"], "params": p["params"]} + headers = { + "Content-Type": "application/json", + "Origin": "https://www.alchemy.com", + "Referer": "https://www.alchemy.com/", + } + backoff = 3.0 + for attempt in range(4): + try: + r = await client.post(p["url"], json=body, headers=headers, timeout=30.0) + except Exception as e: + return {"status": "fail", "reason": f"transport {type(e).__name__}", "rpc_error": str(e)[:200], "http_status": None} + if r.status_code == 429 and attempt < 3: + await asyncio.sleep(backoff) + backoff *= 1.8 + continue + if r.status_code != 200: + return {"status": "fail", "reason": f"HTTP {r.status_code}", "http_status": r.status_code, "rpc_error": (r.text or "")[:300]} + try: + j = r.json() + except Exception: + return {"status": "fail", "reason": "non-JSON response", "http_status": 200, "rpc_error": (r.text or "")[:300]} + if "error" in j and j["error"] is not None: + e = j["error"] + return {"status": "fail", "reason": "jsonrpc error", "http_status": 200, "rpc_error": { + "code": e.get("code") if isinstance(e, dict) else None, + "message": (e.get("message") if isinstance(e, dict) else str(e))[:300], + "data": (str(e.get("data"))[:300] if isinstance(e, dict) and e.get("data") is not None else None), + }} + if "result" in j: + return {"status": "ok", "http_status": 200} + return {"status": "fail", "reason": "no result, no error", "http_status": 200, "rpc_error": (r.text or "")[:300]} + return {"status": "fail", "reason": "HTTP 429 after retry", "http_status": 429, "rpc_error": ""} + + async with httpx.AsyncClient() as client: + sem = asyncio.Semaphore(2) + async def worker(p): + async with sem: + await asyncio.sleep(0.6) # gentle pacing + return await one(client, p) + outcomes = await asyncio.gather(*(worker(p) for p in new_probes)) + + # Merge: update entries in R matching (spec, method) + by_key = {(r["spec"], r["method"]): i for i, r in enumerate(R)} + updates = 0 + for p, outcome in zip(new_probes, outcomes): + if outcome is None: + continue + key = (p["spec"], p["method"]) + idx = by_key.get(key) + if idx is None: + continue + existing = R[idx] + # Update URL too, since we changed the target + existing.update({k: outcome[k] for k in outcome}) + existing["url"] = p["url"] + existing["params"] = p["params"] + existing["paramStructure"] = p["paramStructure"] + # Clear conflicting old fields + if outcome.get("status") == "ok": + existing.pop("reason", None) + existing.pop("rpc_error", None) + updates += 1 + + with (OUT / "results.json").open("w") as f: + json.dump(R, f, indent=2) + print(f"Updated {updates} entries", file=sys.stderr) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/audits/2026-05-29-try-it-audit/scripts/retry_429.py b/audits/2026-05-29-try-it-audit/scripts/retry_429.py new file mode 100644 index 000000000..0da4f5134 --- /dev/null +++ b/audits/2026-05-29-try-it-audit/scripts/retry_429.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python3 +"""Retry pass for probes that returned HTTP 429 (rate-limited). + +Slower per-host rate (1 RPS each) with exponential backoff on repeated 429s. +Replaces matching entries in results.json with the retry outcome. +""" + +import asyncio +import json +import sys +import time +from pathlib import Path +from urllib.parse import urlparse + +import httpx + +OUT = Path("/root/audit") + + +class HostLimiter: + def __init__(self, min_interval=1.0): + self._sems = {} + self._last = {} + self._lock = asyncio.Lock() + self.min_interval = min_interval + + def sem(self, host): + if host not in self._sems: + self._sems[host] = asyncio.Semaphore(1) # serial per host + return self._sems[host] + + async def wait(self, host): + async with self._lock: + last = self._last.get(host, 0) + now = time.monotonic() + delta = now - last + if delta < self.min_interval: + await asyncio.sleep(self.min_interval - delta) + self._last[host] = time.monotonic() + + +async def one(client, limiter, probe, max_retries=4): + if "skipped" in probe: + return {**probe, "status": "skipped"} + host = urlparse(probe["url"]).hostname + sem = limiter.sem(host) + body = { + "jsonrpc": "2.0", "id": 1, + "method": probe["method"], "params": probe["params"], + } + headers = { + "Content-Type": "application/json", + "Origin": "https://www.alchemy.com", + "Referer": "https://www.alchemy.com/", + } + backoff = 4.0 + for attempt in range(max_retries): + async with sem: + await limiter.wait(host) + try: + r = await client.post(probe["url"], json=body, headers=headers, timeout=30.0) + except httpx.TimeoutException: + return {**probe, "status": "fail", "reason": "timeout", "http_status": None, "rpc_error": None} + except httpx.ConnectError as e: + return {**probe, "status": "fail", "reason": "dns/connect", "http_status": None, "rpc_error": str(e)[:200]} + except Exception as e: + return {**probe, "status": "fail", "reason": f"transport {type(e).__name__}", "http_status": None, "rpc_error": str(e)[:200]} + if r.status_code == 429: + if attempt < max_retries - 1: + await asyncio.sleep(backoff) + backoff *= 1.8 + continue + return {**probe, "status": "fail", "reason": "HTTP 429 after retry", "http_status": 429, "rpc_error": (r.text or "")[:200]} + if r.status_code != 200: + return {**probe, "status": "fail", "reason": f"HTTP {r.status_code}", "http_status": r.status_code, "rpc_error": (r.text or "")[:300]} + try: + j = r.json() + except Exception: + return {**probe, "status": "fail", "reason": "non-JSON response", "http_status": 200, "rpc_error": (r.text or "")[:300]} + if "error" in j and j["error"] is not None: + err = j["error"] + return {**probe, "status": "fail", "reason": "jsonrpc error", "http_status": 200, "rpc_error": { + "code": err.get("code") if isinstance(err, dict) else None, + "message": (err.get("message") if isinstance(err, dict) else str(err))[:300], + "data": (str(err.get("data"))[:300] if isinstance(err, dict) and err.get("data") is not None else None), + }} + if "result" in j: + return {**probe, "status": "ok", "http_status": 200} + return {**probe, "status": "fail", "reason": "no result, no error", "http_status": 200, "rpc_error": (r.text or "")[:300]} + + +def select_targets(results, modes): + """Filter the indices of the results entries that match modes (list of reasons).""" + idxs = [] + for i, r in enumerate(results): + if r.get("status") == "fail" and r.get("reason") in modes: + idxs.append(i) + return idxs + + +async def main(modes): + with (OUT / "results.json").open() as f: + results = json.load(f) + target_idxs = select_targets(results, modes) + print(f"Retry targets: {len(target_idxs)} of {len(results)}", file=sys.stderr) + + limiter = HostLimiter(min_interval=2.0) + limits = httpx.Limits(max_connections=120, max_keepalive_connections=60) + + async with httpx.AsyncClient(limits=limits) as client: + # Build fresh probes for these (need to reconstruct the original dict + # since the run_audit results carry the relevant fields already). + sem_global = asyncio.Semaphore(60) + async def worker(idx): + async with sem_global: + probe = { + "spec": results[idx]["spec"], + "category": results[idx]["category"], + "method": results[idx]["method"], + "params": results[idx]["params"], + "paramStructure": results[idx].get("paramStructure"), + "url": results[idx]["url"], + } + outcome = await one(client, limiter, probe) + results[idx] = outcome + return idx + + tasks = [asyncio.create_task(worker(i)) for i in target_idxs] + done = 0 + total = len(tasks) + for fut in asyncio.as_completed(tasks): + await fut + done += 1 + if done % 200 == 0 or done == total: + print(f" {done}/{total}", file=sys.stderr) + + with (OUT / "results.json").open("w") as f: + json.dump(results, f, indent=2) + print(f"Updated {OUT/'results.json'}", file=sys.stderr) + + +if __name__ == "__main__": + modes = sys.argv[1:] or ["HTTP 429"] + asyncio.run(main(modes)) diff --git a/audits/2026-05-29-try-it-audit/scripts/run_audit.py b/audits/2026-05-29-try-it-audit/scripts/run_audit.py new file mode 100644 index 000000000..a2d74c3c7 --- /dev/null +++ b/audits/2026-05-29-try-it-audit/scripts/run_audit.py @@ -0,0 +1,358 @@ +#!/usr/bin/env python3 +""" +Full Try It audit: probe every method's canonical example payload against +the docs-demo endpoint and catalog failures. + +For each generated OpenRPC spec under content/api-specs/{chains,alchemy/json-rpc}/: + 1. Pick the primary mainnet server URL (substituting {apiKey} -> docs-demo). + 2. For each method with an example, build the JSON-RPC body (paramStructure-aware). + 3. POST live with Origin / Referer headers. + 4. Classify response. + +Output: + /root/audit/results.json - raw probe results + /root/audit/report.md - categorized markdown report +""" + +import asyncio +import json +import re +import sys +import time +from collections import defaultdict +from pathlib import Path +from urllib.parse import urlparse + +import httpx + +REPO = Path("/root/docs-repo") +SPECS_DIR = REPO / "content/api-specs" +OUT_DIR = Path("/root/audit") +OUT_DIR.mkdir(parents=True, exist_ok=True) + +# Endpoint selection. +# For Alchemy product specs (debug, trace, etc.) the server list contains 40+ +# networks. We probe each method on the FIRST eth-mainnet-like server, which +# is the canonical target for those products. For solana-das / solana-photon +# we probe on solana-mainnet. +PRODUCT_SERVERS = { + "debug": "https://eth-mainnet.g.alchemy.com/v2", + "trace": "https://eth-mainnet.g.alchemy.com/v2", + "transfers": "https://eth-mainnet.g.alchemy.com/v2", + "transactions-receipt": "https://eth-mainnet.g.alchemy.com/v2", + "transaction-simulation": "https://eth-mainnet.g.alchemy.com/v2", + "bundler": "https://eth-mainnet.g.alchemy.com/v2", + "userop-sim": "https://eth-mainnet.g.alchemy.com/v2", + "gas-manager-coverage": "https://eth-mainnet.g.alchemy.com/v2", + "token": "https://eth-mainnet.g.alchemy.com/v2", + "wallet-api": "https://api.g.alchemy.com/v2", + "solana-das": "https://solana-mainnet.g.alchemy.com/v2", + "solana-photon": "https://solana-mainnet.g.alchemy.com/v2", +} + +# Patterns to skip when picking the "primary mainnet" server for chain specs. +TESTNET_HINTS = ( + "beacon", "sepolia", "hoodi", "fuji", "testnet", "bepolia", "curtis", + "amoy", "holesky", "devnet", "tatara", "blaze", "katla", "linea-sepolia", + "alfajores", "chapel", "shibuya", "shasta", "nile", "sonic-blaze", + "rapture", "babylon", "muster", +) + +# We do not test these methods over HTTP. They are subscription/WebSocket only +# or otherwise inherently non-testable from a stateless POST. +NON_HTTP_METHODS = { + "eth_subscribe", "eth_unsubscribe", + "accountSubscribe", "accountUnsubscribe", + "logsSubscribe", "logsUnsubscribe", + "programSubscribe", "programUnsubscribe", + "rootSubscribe", "rootUnsubscribe", + "signatureSubscribe", "signatureUnsubscribe", + "slotSubscribe", "slotUnsubscribe", + "slotsUpdatesSubscribe", "slotsUpdatesUnsubscribe", + "voteSubscribe", "voteUnsubscribe", + "blockSubscribe", "blockUnsubscribe", +} + +# Hardware send / signing methods that would mutate state. We probe them, but +# expect them to fail with a logical error (insufficient funds, bad sig) which +# is OK — flag separately. +WRITE_METHODS_PATTERN = re.compile( + r"^(eth_sendRawTransaction|eth_sendTransaction|eth_sendBundle|" + r"sendTransaction|sendRawTransaction|eth_signTransaction|" + r"personal_sign|eth_sign|eth_signTypedData.*|" + r"alchemy_simulateExecution|alchemy_sendUserOperation|" + r"eth_sendUserOperation|wallet_sendCalls|wallet_sendPreparedCalls)$" +) + + +def pick_mainnet_server(servers, spec_name): + """Pick the canonical mainnet endpoint for this spec.""" + # Override for product specs + if spec_name in PRODUCT_SERVERS: + return PRODUCT_SERVERS[spec_name] + # For chain specs: first server whose URL has 'mainnet' in it + # and isn't a beacon/testnet variant. + candidates = [] + for s in servers: + url = s.get("url", "") + if not url: + continue + low = url.lower() + if any(h in low for h in TESTNET_HINTS): + continue + candidates.append(s) + if candidates: + # prefer ones containing 'mainnet' + mn = [s for s in candidates if "mainnet" in s.get("url", "").lower()] + if mn: + return mn[0]["url"] + return candidates[0]["url"] + # fall back to first server + if servers: + return servers[0].get("url", "") + return None + + +def build_params(method): + """Convert OpenRPC example['params'] to JSON-RPC request params.""" + examples = method.get("examples") or [] + if not examples: + return None, "no example" + + # Pick first example. Some are wrapped under {"$ref": ...} but the + # generator should have dereferenced. + ex = examples[0] + if not isinstance(ex, dict): + return None, "example not object" + + ex_params = ex.get("params") + if ex_params is None: + return None, "example missing params" + + # by-name -> object {name: value}; by-position -> list of values + ps = method.get("paramStructure", "by-position") + + if ps == "by-name": + out = {} + for p in ex_params: + if not isinstance(p, dict): + continue + name = p.get("name") + if name is None: + continue + if "value" in p: + out[name] = p["value"] + return out, None + else: + # by-position: each entry has 'value' + out = [] + for p in ex_params: + if isinstance(p, dict) and "value" in p: + out.append(p["value"]) + else: + # malformed + out.append(p) + return out, None + + +def collect_probes(): + """Walk all spec JSON files, build list of probe definitions.""" + probes = [] + for spec_path in sorted(SPECS_DIR.glob("**/*.json")): + rel = spec_path.relative_to(SPECS_DIR) + spec_name = spec_path.stem + # Determine spec category + if str(rel).startswith("chains/"): + category = "chain" + elif str(rel).startswith("alchemy/"): + category = "product" + else: + category = "other" + + with spec_path.open() as f: + d = json.load(f) + + servers = d.get("servers", []) + server_url = pick_mainnet_server(servers, spec_name) + if not server_url: + continue + # Substitute apiKey + if "{apiKey}" in server_url: + url = server_url.replace("{apiKey}", "docs-demo") + elif server_url.endswith("/v2"): + url = server_url + "/docs-demo" + else: + url = server_url.rstrip("/") + "/docs-demo" + + for method in d.get("methods", []): + name = method.get("name") + if not name: + continue + if name in NON_HTTP_METHODS: + probes.append({ + "spec": spec_name, + "category": category, + "method": name, + "skipped": "websocket only", + "url": url, + }) + continue + + params, err = build_params(method) + if err: + probes.append({ + "spec": spec_name, + "category": category, + "method": name, + "skipped": err, + "url": url, + }) + continue + + probes.append({ + "spec": spec_name, + "category": category, + "method": name, + "params": params, + "paramStructure": method.get("paramStructure", "by-position"), + "url": url, + }) + return probes + + +# Per-host rate limiting via async semaphores keyed off host +class HostLimiter: + def __init__(self, per_host_concurrency=4, min_interval=0.10): + self._semaphores = {} + self._last_call = {} + self._lock = asyncio.Lock() + self.per_host_concurrency = per_host_concurrency + self.min_interval = min_interval + + def get_sem(self, host): + if host not in self._semaphores: + self._semaphores[host] = asyncio.Semaphore(self.per_host_concurrency) + return self._semaphores[host] + + async def wait_throttle(self, host): + async with self._lock: + last = self._last_call.get(host, 0) + now = time.monotonic() + delta = now - last + if delta < self.min_interval: + await asyncio.sleep(self.min_interval - delta) + self._last_call[host] = time.monotonic() + + +async def probe_one(client, limiter, probe): + """Send a single JSON-RPC request and classify the response.""" + if "skipped" in probe: + return {**probe, "status": "skipped"} + + host = urlparse(probe["url"]).hostname + sem = limiter.get_sem(host) + + body = { + "jsonrpc": "2.0", + "id": 1, + "method": probe["method"], + "params": probe["params"], + } + + headers = { + "Content-Type": "application/json", + "Origin": "https://www.alchemy.com", + "Referer": "https://www.alchemy.com/", + } + + async with sem: + await limiter.wait_throttle(host) + try: + r = await client.post(probe["url"], json=body, headers=headers, timeout=20.0) + except httpx.TimeoutException: + return {**probe, "status": "fail", "reason": "timeout", "http_status": None, "rpc_error": None} + except httpx.ConnectError as e: + return {**probe, "status": "fail", "reason": "dns/connect", "http_status": None, "rpc_error": str(e)[:200]} + except Exception as e: + return {**probe, "status": "fail", "reason": f"transport {type(e).__name__}", "http_status": None, "rpc_error": str(e)[:200]} + + http_status = r.status_code + text = r.text or "" + # Try parse JSON + try: + j = r.json() + except Exception: + j = None + + if http_status != 200: + return { + **probe, + "status": "fail", + "reason": f"HTTP {http_status}", + "http_status": http_status, + "rpc_error": text[:300], + } + + if j is None: + return { + **probe, + "status": "fail", + "reason": "non-JSON response", + "http_status": http_status, + "rpc_error": text[:300], + } + + if "error" in j and j["error"] is not None: + err = j["error"] + return { + **probe, + "status": "fail", + "reason": "jsonrpc error", + "http_status": http_status, + "rpc_error": { + "code": err.get("code") if isinstance(err, dict) else None, + "message": (err.get("message") if isinstance(err, dict) else str(err))[:300], + "data": (str(err.get("data"))[:300] if isinstance(err, dict) and err.get("data") is not None else None), + }, + } + + if "result" in j: + return {**probe, "status": "ok", "http_status": http_status} + + return { + **probe, + "status": "fail", + "reason": "no result, no error", + "http_status": http_status, + "rpc_error": text[:300], + } + + +async def main(): + print(f"Collecting probes from {SPECS_DIR} ...", file=sys.stderr) + probes = collect_probes() + print(f"Collected {len(probes)} probes", file=sys.stderr) + + limiter = HostLimiter(per_host_concurrency=4, min_interval=0.12) + + limits = httpx.Limits(max_connections=200, max_keepalive_connections=80) + async with httpx.AsyncClient(limits=limits, http2=False) as client: + tasks = [probe_one(client, limiter, p) for p in probes] + results = [] + for i, coro in enumerate(asyncio.as_completed(tasks), 1): + r = await coro + results.append(r) + if i % 200 == 0: + print(f" {i}/{len(probes)} done", file=sys.stderr) + print(f" {len(results)}/{len(probes)} done", file=sys.stderr) + + # Persist raw results + with (OUT_DIR / "results.json").open("w") as f: + json.dump(results, f, indent=2) + print(f"Wrote {OUT_DIR/'results.json'}", file=sys.stderr) + + return results + + +if __name__ == "__main__": + asyncio.run(main())