Complete reference of Stable JSON-RPC methods supported on Chainstack, with per-method availability for the eth, debug, txpool, net, and web3 namespaces. Live-tested against Chainstack Stable nodes. The trace namespace is not served.
Our pricing is simple: 1 RU per full request, 2 RUs per archive. For which EVM methods are full vs archive, see Request units — EVM methods affected by block age.Stable is an EVM-compatible layer 1. Chain ID is 988. Chainstack nodes run the stabled client, which is built on the Cosmos SDK and serves an Ethereum-compatible JSON-RPC surface on top of it. The availability below is verified against Chainstack Stable nodes.
Stable serves debug_* but not trace_*. All nine Parity-style trace methods return -32601: trace_block, trace_transaction, trace_call, trace_callMany, trace_filter, trace_get, trace_rawTransaction, trace_replayBlockTransactions, and trace_replayTransaction.If you are porting code from Ethereum, Arc, or World Chain, swap the calls before you deploy:
Instead of
Use
trace_block
debug_traceBlockByNumber with {"tracer": "callTracer"}
trace_transaction
debug_traceTransaction with {"tracer": "callTracer"}
trace_call
debug_traceCall with {"tracer": "callTracer"}
rpc_modules is available on Stable and reports the served namespaces accurately: debug, eth, net, rpc, txpool, and web3.The available tracing methods are debug_traceTransaction, debug_traceBlockByNumber, debug_traceBlockByHash, and debug_traceCall, all of which need a paid plan — see Debug and trace APIs. The native tracers callTracer, prestateTracer, 4byteTracer, and noopTracer are enabled; flatCallTracer and muxTracer are not — see Available native tracers.
Pending transactions are accepted but never delivered
The txpool_* methods respond on Stable, so txpool_status, txpool_content, txpool_contentFrom, and txpool_inspect all return successfully. They always report an empty pool. Across 30 samples taken every 4 seconds over two minutes, txpool_status returned pending: 0x0, queued: 0x0 every time, while 52 transactions confirmed in new blocks over the same window. The pool is not exposed through the EVM JSON-RPC layer.eth_newPendingTransactionFilter and eth_subscribe("newPendingTransactions") both hand back an ID and then deliver nothing. Do not build a pending-transaction feed on Stable. See What gives you mempool access.
A Global Node endpoint is load balanced across backends, and a filter created by eth_newFilter or eth_newBlockFilter lives on the single backend that created it. A follow-up eth_getFilterChanges that lands on a different backend returns -32000 filter not found. Poll with eth_getLogs over an explicit block range instead, or use a WSS subscription, which holds one connection to one backend for its lifetime.
The Cosmos SDK foundation shows through in three places:
eth_getProof returns a Cosmos IAVL proof, not an Ethereum Merkle-Patricia proof, so it is not a drop-in for Ethereum state-proof verification. It also needs an explicit block number — passing latest returns -32000 proof queries at height <= 2 are not supported.
debug_printBlock and debug_intermediateRoots return -32000 profiling disabled in the debug namespace.
eth_createAccessList returns -32603 method handler crashed for every request shape tested. Since Stable charges a flat base fee, an access list buys you nothing here anyway.
eth_simulateV1 is not implemented. eth_blobBaseFee is not either — Stable takes no blob transactions.
Stable produces a block roughly every 0.7 seconds. The standard EVM rule — 127 or more blocks behind the tip bills as archive — therefore covers only about 90 seconds of history, against roughly 25 minutes on Ethereum. On Stable, expect most historical queries to bill as archive.
pass an explicit block number — latest returns -32000 proof queries at height <= 2 are not supported. The proof is a Cosmos IAVL proof, not an Ethereum Merkle-Patricia proof