Skip to content
Zroarus
Documentation menu

JSON-RPC

Enabled namespaces, measured limits, subscriptions and error codes.

TestnetVerified Sep 27, 2026
On this page

Standard Ethereum JSON-RPC over https://rpc.testnet.zroarus.com and wss://rpc.testnet.zroarus.com/ws.

Namespaces#

RPC namespaces
NamespaceEnabledNotes
eth_*YesStandard methods, filters, eth_getProof, eth_getBlockReceipts, eth_blobBaseFee
net_*YesIncludes net_version
web3_*Yes
txpool_*Yestxpool_status
debug_*NoReturns -32604 Method not enabled
trace_*NoDisabled; internal transactions cannot be traced
admin_*No
qbft_*No

The node holds no keys: eth_accounts returns an empty list and eth_sendTransaction / eth_sign are unavailable. Sign locally and use eth_sendRawTransaction.

Capabilities#

RPC capabilities
CapabilitySupported
JSON-RPC batch requestsYes
WebSocket eth_subscribe (newHeads, logs)Yes
Filters (eth_newBlockFilter, eth_newFilter…)Yes
CORS from any originYes

Limits#

Measured on the Testnet on 2026-09-27.

RPC limits
LimitValueError when exceeded
eth_getLogstoBlock − fromBlock ≤ 5,000-32005 Requested range exceeds maximum RPC range limit
Batch size1,024 requests per batch-32005 Number of requests exceeds max batch size
toBlockMust not be beyond the head block-32602 Invalid params
Rate limits for the public RPC have not been published. Be considerate: page log queries, cache what you can, and back off on errors.

Paging eth_getLogs#

viem
import type { PublicClient } from "viem";

const WINDOW = 5_000n;

export async function getLogsPaged(client: PublicClient, filter: { address: `0x${string}` }, from: bigint) {
  const head = await client.getBlockNumber();
  const logs = [];
  for (let start = from; start <= head; start += WINDOW + 1n) {
    const end = start + WINDOW > head ? head : start + WINDOW;
    logs.push(...(await client.getLogs({ ...filter, fromBlock: start, toBlock: end })));
  }
  return logs;
}

Blocks are final, so an indexer never has to handle reorganisations. It does have to handle resets.

Errors#

Reverts and failed simulations in eth_call / eth_estimateGas come back as {"code":-32000,"message":"Transaction processing could not be completed due to an exception (…)"}. Without trace APIs, replay the call with eth_call to get a revert reason.

Something wrong or missing on this page? Send developer feedback.