{"slug":"gas-estimation","title":"Most accurate gas oracle, live gap vs realized priority fee","subtitle":"Absolute gap in gwei between each oracle's predicted priority-fee tier and the realized percentile in the next mined block, measured per chain. Ranked on the p99 gap, the worst 1% of blocks, because that is where gas spikes hurt integrations.","category":"RPCs","metric":"Gap vs realized (gwei)","unit":"count","status":"live","higherIsBetter":false,"value":0.249969,"leader":{"name":"Owlracle","slug":"owlracle","value":0.249969},"rankings":[{"name":"Owlracle","slug":"owlracle","ms":{"p50":0.249969,"p90":0.0538038,"p99":0.000134528,"mean":0.0228343},"successRate":99.7685,"sampleSize":4320.75},{"name":"Blocknative","slug":"blocknative","ms":{"p50":0.25,"p90":0.0509397,"p99":1e-9,"mean":0.0275257},"successRate":99.9907,"sampleSize":21600.8},{"name":"Etherscan","slug":"etherscan","ms":{"p50":1.77108,"p90":0.638941,"p99":0.0289085,"mean":0.181852},"successRate":99.2186,"sampleSize":11520},{"name":"PublicNode","slug":"publicnode-feehistory","ms":{"p50":2.07477,"p90":0.213453,"p99":0.000999999,"mean":0.102433},"successRate":99.8796,"sampleSize":21600.8}],"sparkline":[13.9622,7.15339,8.18912,13.4678,5.48383,10.4103,11.7726,1.14067,12.5498,4.81915,4.09899,1.18096,4.6819,4.04788,5.7536,16.0775,8.94133,2.92973,5.48826,19.1238,12.0824,6.0303,4.7898,20.9068,7.51617,27.2536,3.97818,10.4633,8.51281,5.37724,6.57387,13.1683,7.50985,7.98033,9.69259,6.59327,0.265191,7.68458,5.24012,0.404202,73.4443,24.5569,2.27336,4.32367,7.91397,3.97025,8.85854,28.4415,15.6523,2.3695,7.27547,2.1711,1.61841,4.96141,4.94452,8.65171,0.776057,2.12258,1.02413,5.17932,5.01415,0.515193,1.27467,9.25112,2.7209,2.23947,4.28605,2.99203,1.64339,7.62279,7.00429,2.65808,0.954617],"sampleSize":59042.35,"asOf":"2026-06-17T13:35:20.535Z","headline":"Owlracle leads gap vs realized (gwei) at 0.250 (24h) on Most accurate gas oracle, live gap vs realized priority fee.","quote":"Owlracle leads gap vs realized (gwei) at 0.250 (24h) on Most accurate gas oracle, live gap vs realized priority fee. Source: OpenChainBench (https://openchainbench.com/benchmarks/gas-estimation).","pageUrl":"https://openchainbench.com/benchmarks/gas-estimation","ogImage":"https://openchainbench.com/api/og/gas-estimation","source":"https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/gas-estimation","methodology":["Chains: Ethereum mainnet (chainid=1), Polygon PoS (chainid=137). Both are EIP-1559 with proper dynamic base fee, so priority-fee prediction is apples-to-apples comparable. BNB Chain excluded (not EIP-1559). Avalanche C-Chain excluded (auto-tuning drives priority fee to ~0, prediction-error collapses to ~0).","Oracles per chain. Ethereum + Polygon: Blocknative, PublicNode feeHistory, Owlracle, Etherscan v2 (free tier).","Per-oracle endpoints. Blocknative `?chainid=<N>` (no-key); PublicNode `eth_feeHistory` on each chain's RPC; Owlracle `/v4/{eth|poly}/gas` (slug per chain); Etherscan v2 `?chainid=<N>&module=gastracker&action=gasoracle`.","Cadences. Blocknative & PublicNode feeHistory every 12s per chain; Owlracle every 60s per chain (free quota ceiling); Etherscan every 15s per chain with a global rate-gate enforcing ≥6s between any two Etherscan requests across chains (no-key limit is 1 req/5s per IP, shared).","Tier normalization. Each oracle's named tiers (fast / standard / slow / safe / propose) are mapped onto a unified p25 / p50 / p75 / p90 / p99 scheme. The leaderboard ranks the p50 tier (the standard speed wallets use by default).","Realized priority fee. For each pending block, the harness pulls the full block via `eth_getBlockByNumber(.., true)` on the chain's PublicNode RPC and computes the percentile from actual `maxPriorityFeePerGas` values across every included transaction. Empty or low-tx blocks (`gas_realized_tx_count` near zero) are surfaced separately because the realized percentile is noisy when tx count is low.","Realized base fee. Recorded for completeness as `gas_realized_base_gwei{chain}` and per-oracle baseFee error as `gas_error_base_gwei{oracle, chain}`. Not the ranking signal since every EIP-1559 oracle inherits this from `eth_feeHistory` and converges.","Pending buffer. Per (oracle, chain) in-memory map of predictions waiting on a realized block. TTL is ~25 blocks (~5 minutes on Ethereum, ~50 seconds on Polygon due to faster blocks). Beyond that, predictions are dropped as no-longer-informative. Buffer growth surfaces via `gas_pending_buffer_size{oracle, chain}`.","Polling result classification. `ok`, `http_err`, `parse_err`, `throttled` (HTTP 429 or oracle-specific quota message), `timeout`. Counter `gas_oracle_call_total{oracle, result, chain}` powers the reliability column.","Ranking metric. The table ranks on the p99 of the absolute gap over 24h, not the p50. At current fee levels the typical-minute gaps are fractions of a micro-gwei apart across oracles (ranking noise); the p99 captures behaviour during the volatile minutes where a wrong prediction either overpays or misses the block. The typical p50 and p90 gaps stay visible as secondary columns.","Covered rate. Share of time (24h) each oracle's posted p50-tier prediction was at or above the realized p50 priority fee, recorded as `ocb:gas_p50_covered:pct_24h` via a recording rule. Same-instant gauge comparison (current prediction vs latest realized block), a proxy pending a harness-side matched counter. High = errs on the side of inclusion; low = under-bids vs the block's realized median.","Excluded by design. (a) BNB Chain (not EIP-1559). (b) L2 OP Stack chains (Optimism, Base, Arbitrum), priority fee ≈ 0 there because sequencer is centralised, the relevant cost is L1 data fee which is a different metric and belongs in a separate bench. (c) Rough median oracles that publish only a single number (no tier breakdown). (d) Solana, different fee model entirely (lamports per CU, MEV via Jito), separate bench needed."],"license":"CC-BY-4.0"}