{"slug":"rpc-reliability","title":"Most reliable free public RPC, correctness incidents across 7 EVM chains","subtitle":"Correctness incidents per 24 hours for free no-key RPC endpoints: block hashes disagreeing with the cross-provider quorum, eth_getLogs counts deviating from the majority, divergent eth_getBalance state and blocked or gated methods, measured continuously alongside consensus head lag.","category":"RPCs","metric":"Reliability incidents","unit":"count","status":"live","higherIsBetter":false,"filters":null,"value":1.00011,"leader":{"name":"Base","slug":"base-official","value":1.00011},"rankings":[{"name":"Base","slug":"base-official","ms":{"p50":1.00011,"p90":0,"p99":0,"mean":0},"successRate":98.7503,"sampleSize":80.025,"sampleHealth":2.0006250000000003,"dataConfidence":"healthy"},{"name":"PublicNode","slug":"publicnode","ms":{"p50":115.036,"p90":66167.8,"p99":66268.5,"mean":65607.3},"successRate":80.03479999999999,"sampleSize":576.181,"sampleHealth":14.404525000000001,"dataConfidence":"healthy"},{"name":"dRPC","slug":"drpc","ms":{"p50":124.038,"p90":0.046875,"p99":0.235625,"mean":0.148961},"successRate":78.47229999999999,"sampleSize":576.181,"sampleHealth":14.404525000000001,"dataConfidence":"healthy"},{"name":"Nodies","slug":"nodies","ms":{"p50":168.053,"p90":0,"p99":0,"mean":0.0370177},"successRate":65.9919,"sampleSize":494.156,"sampleHealth":12.3539,"dataConfidence":"healthy"}],"sparkline":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1.00269,1.00269,1.00269,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"sampleSize":2880.9063,"expectedN":40,"dataConfidence":"healthy","asOf":"2026-08-31T07:09:58.689Z","headline":"Base posts the lowest reliability incidents at 1 (24h) on Most reliable free public RPC, correctness incidents across 7 EVM chains.","quote":"Base posts the lowest reliability incidents at 1 (24h) on Most reliable free public RPC, correctness incidents across 7 EVM chains. Source: OpenChainBench (https://openchainbench.com/benchmarks/rpc-reliability).","cite":{"plain":"OpenChainBench. \"Most reliable free public RPC, correctness incidents across 7 EVM chains\". Retrieved 2026-08-31. https://openchainbench.com/benchmarks/rpc-reliability","bibtex":"@misc{ocb_rpc_reliability,\n  author = {OpenChainBench},\n  title  = {Most reliable free public RPC, correctness incidents across 7 EVM chains},\n  year   = {2026},\n  url    = {https://openchainbench.com/benchmarks/rpc-reliability},\n  note   = {Retrieved 2026-08-31}\n}","apa":"OpenChainBench. (2026). Most reliable free public RPC, correctness incidents across 7 EVM chains. Retrieved August 31, 2026, from https://openchainbench.com/benchmarks/rpc-reliability","ris":"TY  - GEN\r\nAU  - OpenChainBench\r\nTI  - Most reliable free public RPC, correctness incidents across 7 EVM chains\r\nPY  - 2026\r\nUR  - https://openchainbench.com/benchmarks/rpc-reliability\r\nY2  - 2026-08-31\r\nER  - \r\n"},"pageUrl":"https://openchainbench.com/benchmarks/rpc-reliability","ogImage":"https://openchainbench.com/api/og/rpc-reliability","source":"https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/rpc-capabilities","methodology":["Consensus lag: the bench-010 latency probe fetches the full latest header every 60 seconds per (provider, chain); its height and hash, previously discarded, feed this bench. rpc_consensus_lag_blocks is the gap between the provider's reported head and the highest head any probed provider reported for that chain (rolling max). Valid-but-stale responses still count as observations; failed probes delete the series so dead endpoints age out.","Hash quorum: per chain, a height-to-hash vote map. When one hash at height H is backed by at least 2 providers AND strictly more than any competing hash, it is canonical; a provider that reported a different hash at H is counted in rpc_hash_mismatch_total, at most once per (provider, height). A 2-2 split, the signature of a live reorg, resolves to no quorum and counts nobody.","Fixed-vector integrity, cadence: every 5 minutes ONE chain is checked, rotating through the 7 chains with a canonical high-traffic USDC deployment (Ethereum, Arbitrum, Optimism, Base, Polygon, BNB, Avalanche). Each provider on that chain gets 2 checks per round, so a single-chain provider accrues ~82 checks per day and a 7-chain provider ~575.","Logs completeness vector: eth_getLogs for the chain's canonical USDC contract (Circle native deployments; Binance-peg on BNB) over a 10-block window ending at tip minus N. Returned log counts are compared across providers; deviation from the strict majority count increments rpc_logs_disagreement_total and books a disagree incident. Live calibration on Ethereum returned 1371 logs consistently on drpc, tenderly and blastapi over the same fixed range.","Anti-gaming rotation: N rotates daily over {20, 30, 40, 50, 60} blocks, so a provider cannot special-case a published fixed range, and request ids rotate on every call (the same edge-cache defeat as the latency probe). All depths stay far inside non-archive territory, so a pruned-but-honest node is never penalized.","State consistency vector: eth_getBalance of a fixed well-known address (the same Vitalik address the archive-depth probe uses) at the tip-minus-N block. The hex answer must be byte-identical across providers; divergence from the strict majority increments rpc_state_disagreement_total. Live calibration showed byte-identical balances across all responding providers at a fixed block.","Errors are signal: rpc_integrity_check_total{result} is ok, error or disagree. error covers blocked methods (1RPC answers eth_getLogs with -32000), depth gating (PublicNode keyless regressed to under 150 blocks of archive depth in July 2026, returning -32602 asking for a personal token), and transport failures. The headline counts error and disagree alike: a method you cannot call is unreliable regardless of why.","Headline: incidents per 24h = increase of integrity checks with result error or disagree, plus increase of hash mismatches, from the eu-west vantage. Raw counts, no weighting; the p90/p99 columns are consensus-lag quantiles in blocks, published as raw companion dimensions.","Single-region disclosure: incidents are counted from the eu-west probe only. Correctness, unlike latency, is location-independent in principle, but every provider fronts with anycast, so what we audit is the serving cluster eu-west traffic lands on; a diverged cache in another region is invisible to this bench. The us-east and sgp replicas emit the same metrics for cross-checking on the time-series chart.","Quorum honesty: strict plurality everywhere. Two agreeing providers outvote one dissenter; two against two resolves to no quorum and books nothing; a lone answer with no second opinion is unverifiable, not wrong, and books ok. Disagreement requires being outvoted by an established majority.","Cohort: 12 keyless providers from the bench-010 audited matrix. Excluded: LlamaRPC (fully down, HTTP 521, already delisted from the harness), 1RPC (delisted 2026-07-09 at under 13 percent success; when probed live it also blocked eth_getLogs with -32000, exactly the incident class this bench counts), Ankr / NodeReal / GetBlock / Chainstack (key-gated). Avalanche's foundation endpoint is probed by the harness and visible on bench 010; it is left out here only to keep the cohort at 12.","Provider matrix and vector addresses are documented in harnesses/rpc-capabilities/cmd/script/config.go and integrity.go; the harness is shared with bench 010, so both benches see the identical provider set and probe budget."],"license":"CC-BY-4.0"}