Skip to main content

Method support

Everything below was verified against the live Crouton upstreams, not copied from a vendor sheet.

CapabilityEthereum MainnetSolana Mainnet
ClientPool of Geth, reth and Erigon behind one endpointSolana 4.2.1
Documented methods5012
JSON-RPC over HTTPSSupportedSupported
Batch requestsSupportedSupported
WebSocket subscriptionsNot exposed — eth_subscribe returns -32601 on the HTTP endpointEndpoint required
Account state historyVaries by node — the pool mixes archive and pruned members, so the same historical query may succeed or return historical state is not available / state at block #N is prunedProvider dependent
Transaction / receipt lookup by hashVaries by node; archive members answer far older lookups than pruned onesProvider dependent
Block headers and bodiesFull historyProvider dependent
Transaction submissioneth_sendRawTransactionsendTransaction
Tracing (debug_*)Documented — 9 methods, but only part of the pool implements them: a call landing elsewhere answers -32601Not applicable
Mempooltxpool_status only, and not every pool member implements itNot applicable
Wallet methods (eth_accounts, eth_sign, eth_sendTransaction)Not exposedNot applicable
Privileged namespaces (admin, personal, engine)Not availableNot available
Request body limit256 KB256 KB
Upstream timeout15 s15 s

Ethereum namespaces

NamespaceExposed methods
eth35
debug9 — tracing and RLP export, availability depends on the node that answers
net3 — net_version, net_listening, net_peerCount
web32 — web3_clientVersion, web3_sha3
txpool1 — txpool_status

Known limits

  • Mixed client pool. https://rpc-ethereum.crouton.digital load balances across several execution clients. Consequences: historical state queries are non-deterministic (archive members answer, pruned members return an error for the same block), a few methods exist on some clients only, and error messages differ in wording between clients. Match on the numeric error code, and retry a failed historical query — a different node may answer it.
  • Historical state. eth_getBalance, eth_getCode, eth_getStorageAt, eth_getProof, eth_call, eth_estimateGas and eth_createAccessList read account state. Against the latest tag they always work; for older blocks the answer depends on the node that receives the request.
  • Log queries. eth_getLogs rejects queries matching more than 10 000 logs. Page through block ranges, or filter by contract address and topic.
  • Filters. eth_newFilter and friends keep state on the single node that created them. Behind this pool a later poll almost always lands on a different node and returns filter not found, so they are documented for completeness only — use repeated eth_getLogs calls over explicit block ranges instead.
  • Debug namespace. Only some members of the pool expose debug_*. The same request can succeed and then answer -32601 the method … does not exist; retry rather than treating the first failure as final. Tracing also needs the state of the parent block, so old blocks may answer historical state is not available, and tracing a whole block with the default tracer can exceed the response limit (-32008 Response is too big) — pass {"tracer": "callTracer"} or trace single transactions.
  • Uncles. eth_getUncleCountByBlock* always returns 0x0 after the Merge; the methods exist for compatibility only.

Production policy

The published support matrix should be regenerated from automated conformance tests against Crouton gateways. Public documentation must not advertise a method until it passes its network-specific test.

Privileged methods such as Ethereum admin_*, personal_*, engine_*, and unsafe client management methods must remain disabled on public endpoints. The documentation gateway enforces this with an explicit allowlist; the node itself must additionally be firewalled so that only the gateway can reach it.