Methods & subscriptions
Which JSON-RPC methods and WebSocket subscriptions work on the Supanode Robinhood Chain node, how far back history and state go, and the Arbitrum L2 details that change client code.
// updated 2026-09-24
Everything on this page was called against the node on 24 September 2026. If a method is not listed as working, assume it is not available.
JSON-RPC methods
| Group | Methods |
|---|---|
| Chain and network | eth_chainId, eth_blockNumber, net_version, web3_clientVersion, eth_syncing, eth_accounts (always []) |
| Gas and fees | eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory, eth_blobBaseFee, eth_estimateGas, eth_createAccessList |
| Blocks | eth_getBlockByNumber (latest, pending, safe, finalized or a number), eth_getBlockByHash, eth_getBlockReceipts, eth_getBlockTransactionCountByNumber, eth_getBlockTransactionCountByHash, eth_getUncleCountByBlockNumber |
| Transactions | eth_getTransactionByHash, eth_getTransactionReceipt, eth_getTransactionByBlockNumberAndIndex, eth_getTransactionByBlockHashAndIndex, eth_getTransactionCount (latest and pending) |
| State | eth_getBalance, eth_getCode, eth_getStorageAt, eth_getProof, eth_call, eth_simulateV1 |
| Logs and filters | eth_getLogs (block range or blockHash), eth_newFilter, eth_newBlockFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter |
| Sending | eth_sendRawTransaction |
| Tracing | debug_traceTransaction, debug_traceBlockByNumber, debug_traceBlockByHash, debug_traceCall (callTracer and prestateTracer tested), debug_getRawTransaction, debug_getRawReceipts, debug_getRawBlock |
Batch requests (a JSON array of calls) work up to 1,000 calls per batch. See Limits.
Not available
| Methods | Response |
|---|---|
trace_*, arbtrace_*, txpool_*, admin_*, personal_*, miner_*, net_listening, net_peerCount, eth_protocolVersion, eth_coinbase, eth_mining, eth_hashrate | -32601 method does not exist / is not available |
eth_sendTransaction, eth_sign | -32000 unknown account: the node holds no keys. Sign on your side and send with eth_sendRawTransaction. |
eth_subscribe over HTTPS | -32601 notifications not supported: subscriptions need the WebSocket endpoint. |
For call-level traces use debug_traceTransaction with callTracer. On Arbitrum its output carries two extra fields, beforeEVMTransfers and afterEVMTransfers.
WebSocket subscriptions
eth_subscribe | Status |
|---|---|
newHeads | Works. About 10 notifications per second, one per L2 block. |
logs | Works, with or without an address / topics filter. Unfiltered it is around 300 events per second. |
newPendingTransactions | Returns a subscription id and then stays silent. Arbitrum has no public mempool: the sequencer orders transactions directly. Don't build on it. |
syncing | Not available. |
Regular JSON-RPC calls (eth_call, eth_getLogs, eth_getBlockByNumber) work on the same WebSocket connection. eth_unsubscribe closes a subscription.
A newHeads notification looks like this (trimmed):
{"jsonrpc":"2.0","method":"eth_subscription","params":{"subscription":"0x8b9e63df4cf5b0919e691cbf5e3e1ddf","result":{"parentHash":"0xa4b0...ab8d","miner":"0xa4b000000000000000000073657175656e636572","number":"0x43f5f3f","timestamp":"0x6ab4ecf2","baseFeePerGas":"0x2a84c40","gasUsed":"0x2ac5f8","difficulty":"0x1","hash":"0x..."}}}
History depth
| Data | How far back |
|---|---|
| Blocks, transactions, receipts, logs | Since the first block, 30 April 2026 |
State at a past block: eth_call, eth_getBalance, eth_getStorageAt, eth_getCode with a block number, and debug_trace* of past transactions | About the last 5 days (around 4.6 million blocks) |
This is a full node, not an archive node. Asking for state older than the window returns -32000 missing trie node ..., and tracing an older transaction returns -32000 required historical state unavailable. That is the pruning window, not a fault.
Need decoded history rather than raw state? The Robinhood Indexer holds every Uniswap v3/v4 swap, pool and launchpad event in SQL. For state at arbitrary old blocks, an archive dedicated node is the way.
Arbitrum specifics
| Topic | What to expect |
|---|---|
| Block time | About 0.1 s, roughly 10 blocks per second. The latest block is 0-1 s old. |
safe tag | About 4,200-4,900 blocks (7-8 minutes) behind latest. |
finalized tag | About 15-20 minutes behind latest. |
| How the tags move | Both advance in steps as batches settle on the parent chain, not block by block. |
| Extra block fields | l1BlockNumber, sendCount, sendRoot. miner is 0xa4b0...73657175656e636572, "sequencer" in hex. difficulty is 1. |
l1BlockNumber | Present in eth_getBlockByNumber results, absent from newHeads notifications. Fetch the block if you need it. |
block.number in Solidity | Returns a parent-chain block number on Arbitrum. For the L2 block number call ArbSys(0x64).arbBlockNumber() through eth_call. |
| Gas | Paid in ETH. eth_maxPriorityFeePerGas is 0: tips are not needed. A plain transfer estimates at 21,000 gas. |
| Pending transactions | Not exposed: no txpool_*, and pending filters and subscriptions stay empty. |
| Sending | eth_sendRawTransaction validates the transaction and returns clear errors, for example insufficient funds for gas * price + value. |