Method support
Everything below was verified against the live Crouton upstreams, not copied from a vendor sheet.
| Capability | Ethereum Mainnet | Solana Mainnet |
|---|---|---|
| Client | Pool of Geth, reth and Erigon behind one endpoint | Solana 4.2.1 |
| Documented methods | 50 | 12 |
| JSON-RPC over HTTPS | Supported | Supported |
| Batch requests | Supported | Supported |
| WebSocket subscriptions | Not exposed — eth_subscribe returns -32601 on the HTTP endpoint | Endpoint required |
| Account state history | Varies 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 pruned | Provider dependent |
| Transaction / receipt lookup by hash | Varies by node; archive members answer far older lookups than pruned ones | Provider dependent |
| Block headers and bodies | Full history | Provider dependent |
| Transaction submission | eth_sendRawTransaction | sendTransaction |
Tracing (debug_*) | Documented — 9 methods, but only part of the pool implements them: a call landing elsewhere answers -32601 | Not applicable |
| Mempool | txpool_status only, and not every pool member implements it | Not applicable |
Wallet methods (eth_accounts, eth_sign, eth_sendTransaction) | Not exposed | Not applicable |
Privileged namespaces (admin, personal, engine) | Not available | Not available |
| Request body limit | 256 KB | 256 KB |
| Upstream timeout | 15 s | 15 s |
Ethereum namespaces
| Namespace | Exposed methods |
|---|---|
eth | 35 |
debug | 9 — tracing and RLP export, availability depends on the node that answers |
net | 3 — net_version, net_listening, net_peerCount |
web3 | 2 — web3_clientVersion, web3_sha3 |
txpool | 1 — txpool_status |
Known limits
- Mixed client pool.
https://rpc-ethereum.crouton.digitalload 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_estimateGasandeth_createAccessListread account state. Against thelatesttag they always work; for older blocks the answer depends on the node that receives the request. - Log queries.
eth_getLogsrejects queries matching more than 10 000 logs. Page through block ranges, or filter by contract address and topic. - Filters.
eth_newFilterand friends keep state on the single node that created them. Behind this pool a later poll almost always lands on a different node and returnsfilter not found, so they are documented for completeness only — use repeatedeth_getLogscalls 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 answerhistorical 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 returns0x0after 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.