Every block verified against the proposer's signature. Every receipt verified against the committed receipts root. Served from process memory at the chain tip — live: ~100µs tip serving. The numbers on this page are our production metrics, not claims.
Unlimited requests. No compute-unit math. Flat subscription; fair use is an RPS cap, not a meter. And your Ponder or indexer points at it with zero code change.
One product promise: when anything on our hot path degrades, you get higher latency — never wrong data, never downtime.
Every block is hash-verified against the proposer's signature; every receipt is verified against the committed receipts root — nothing is trusted from a single peer. On any degradation we fall back to proxied truth from the upstream data lake: latency degrades, correctness never. By design, and proven in production.
Our own p2p networking ingests blocks at consensus-gossip speed; receipts are fetched and root-verified over devp2p within ~200ms of the block. Hot answers serve in microseconds from process memory — the live strip above is measuring it right now, on the box you'd be querying.
A prefetching cache tier built for indexer access patterns: range-scan detection per API key, log-filter fingerprints, optimistic prefetch ahead of your backfill. Bulk-cheap storage behind it, point-fast reads in front. Currently historical queries proxy to the data lake (~150–250ms); the cache tier is in active development.
Latencies are measured on the live production gateway (journaled, 2026-06-11), not benchmarked in a lab. Hot serving covers the freshest ~2,000 blocks; anything older falls through to the historical tier with the same answer.
| Method | Tier | Measured latency | Notes |
|---|---|---|---|
eth_blockNumber | HOT | ~100µs | hot head, gossip-fed; staleness-guarded |
eth_getBlockByNumber / ByHash | HOT | ~0.5ms | full blocks incl. transactions, at the tip |
eth_getTransactionByHash | HOT | ~120µs | tx-hash index over the hot window |
eth_getTransactionReceipt | HOT | 135–300µs | receipts-root-verified via devp2p, merged ~200ms after the block |
eth_getLogs (tip ranges) | HOT | ~0.2–1.4ms | bloom-proven negatives ~0.2ms; verified positive matches ~1ms |
eth_chainId | HOT | local | constant |
eth_getBlockByNumber / eth_getLogs (historical) | PROXIED | ~150–250ms | data-lake proxy today; prefetch cache rolling out |
eth_getBlockReceipts | PROXIED | ~150–250ms | |
eth_getTransactionByBlockNumberAndIndex | PROXIED | ~150–250ms | |
trace_block, debug_traceBlockBy* | PROXIED | ~150–250ms | |
eth_call, eth_estimateGas, eth_getBalance, eth_getCode, eth_getStorageAt, eth_getTransactionCount | STUB | n/a | Awaiting state backend. During beta these return deterministic synthetic responses (recognizable, never real chain state). Do not use them yet — the real state tier swaps in behind the same interface. |
eth_subscribe / filter methods (WebSocket subscriptions) | NOT YET | — | returns -32601 |
eth_sendRawTransaction | NOT YET | — | read-focused service; tx submission on the roadmap |
eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory | NOT YET | — | returns -32601 |
Why we publish this table: indexer and backend developers churn instantly on dishonest coverage
claims. If a method is stubbed or missing, we say so here before you find out in production.
Methods not listed return -32601.
Point your indexer at us — zero code change. Standard JSON-RPC means your existing
getLogs backfill and live-tail loop just work, and the live tail gets consistent
latest semantics with clean reorg behavior from the hot tier. The prefetch cache tier
is being designed around exactly this access pattern: stride detection on your range scans, log-filter
fingerprints, prefetch ahead of your backfill.
USDC Transfer logs over 1M+ historical blocks through this public endpoint —
p50/p99 per request, total scan throughput, cache hit rate, vs a direct data-lake baseline.
Baseline measurement in progress; the before/after numbers will be published here, live
from the same metrics pipeline as the strip above.
Flat subscription, unlimited usage, no compute-unit accounting. Fair use is enforced the only honest way — RPS and concurrency caps. Networks are the axis, not request meters. Closed beta: keys are issued manually while we onboard, and no billing is collected during beta.
QuickNode's flat tier: $799/mo for 75 RPS.
Request accessEndpoint: https://34.34.113.189.sslip.io/v1/evm/1 — Ethereum mainnet, Bearer auth. Replace <YOUR_KEY> with your beta key.
Latest block (hot, served from memory):
curl -s https://34.34.113.189.sslip.io/v1/evm/1 \ -H 'Authorization: Bearer <YOUR_KEY>' \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"eth_getBlockByNumber","params":["latest",false]}'
Transaction receipt (root-verified at the tip):
curl -s https://34.34.113.189.sslip.io/v1/evm/1 \ -H 'Authorization: Bearer <YOUR_KEY>' \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":2,"method":"eth_getTransactionReceipt","params":["0x<TX_HASH>"]}'
Logs (USDT Transfer events in a recent range):
curl -s https://34.34.113.189.sslip.io/v1/evm/1 \ -H 'Authorization: Bearer <YOUR_KEY>' \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":3,"method":"eth_getLogs","params":[{"fromBlock":"latest","address":"0xdAC17F958D2ee523a2206206994597C13D831ec7","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}]}'
viem — custom transport URL with the auth header:
import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http('https://34.34.113.189.sslip.io/v1/evm/1', { fetchOptions: { headers: { Authorization: 'Bearer <YOUR_KEY>' } }, }), }) const block = await client.getBlockNumber() // served hot, microseconds in-box