Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 30 additions & 7 deletions benchmarks/tezos-rpc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ slug: tezos-rpc
number: "222"
title: Fastest free Tezos RPC, live no-key endpoint latency
seo_title: "Fastest free Tezos RPC 2026"
seo_description: "{{best_name}} leads free Tezos RPC at {{best_p50}} (block level REST p50, 24h). 3 providers measured every 60s from 3 regions."
seo_description: "{{best_name}} leads free Tezos RPC at {{best_p50}} (block level REST p50, 24h). 4 providers measured every 60s from 3 regions."
subtitle: HTTP round-trip latency for GET /chains/main/blocks/head/header against every available public Tezos node, audited every 60 seconds from 3 regions.

category: RPCs
Expand All @@ -14,13 +14,13 @@ unit: ms
higher_is_better: false

seo_intro: |
Tezos is a self-amending proof-of-stake blockchain using Liquid Proof of Stake (LPoS) and an on-chain governance mechanism that allows protocol upgrades without hard forks. It targets roughly one block every 30 seconds on mainnet. Public REST endpoints are available without an API key from SmartPy, TezBeta and TzKT (Baking Bad). Every provider was live-verified with consecutive block header probes at launch.
Tezos is a self-amending proof-of-stake blockchain using Liquid Proof of Stake (LPoS) and an on-chain governance mechanism that allows protocol upgrades without hard forks. It targets roughly one block every 30 seconds on mainnet. Public REST endpoints are available without an API key from SmartPy, TezBeta, TzKT (Baking Bad) and TCInfra. Every provider was live-verified with consecutive block header probes at launch.

abstract: |
Per-chain member of the RPC latency cluster, extended to Tezos.
We measure the round-trip latency of a single REST call (GET
/chains/main/blocks/head/header) against every available public
Tezos node that sustains continuous probing: 3 providers at launch,
Tezos node that sustains continuous probing: 4 providers at launch,
every 60 seconds, from us-east, eu-west and Singapore. The harness
classifies every response (ok / http_err / jsonrpc_err / stale /
timeout) with a Tezos-scaled staleness gap (10 blocks, around
Expand All @@ -34,16 +34,16 @@ methodology:
- "Latency: client-side round-trip delta in milliseconds, exposed as both a gauge and a histogram (buckets 50 ms to 10 s), so percentiles are computed via Prometheus quantile_over_time over the last 24 hours."
- "Call-result classification: ok (HTTP 200 + parsable level integer), http_err, jsonrpc_err, stale (block more than 10 behind the cross-provider tip), timeout. Latency without reliability is a misleading ranking signal."
- "This page is part of the per-chain RPC cluster derived from the cross-chain rpc-capabilities benchmark; the identical harness, cadence and exclusion rules apply on every chain."
- "Chain scope: every query on this page is pinned to chain=tezos. Provider coverage at launch: 3 endpoints (SmartPy, TezBeta, TzKT)."
- "Chain scope: every query on this page is pinned to chain=tezos. Provider coverage at launch: 4 endpoints (SmartPy, TezBeta, TzKT, TCInfra)."

findings:
- "{{best_name}} currently leads Tezos RPC at {{best_p50}} (block level REST p50, 24h) across 3 measured providers."
- "{{best_name}} currently leads Tezos RPC at {{best_p50}} (block level REST p50, 24h) across 4 measured providers."

faq:
- q: "What is the fastest free Tezos RPC right now?"
a: "{{best_name}} currently leads at {{best_p50}} (Tezos block level p50 over the last 24h), measured against 3 providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples."
a: "{{best_name}} currently leads at {{best_p50}} (Tezos block level p50 over the last 24h), measured against 4 providers probed every 60 seconds from us-east, eu-west and Singapore. The leaderboard re-sorts continuously against fresh Prometheus samples."
- q: "Which Tezos RPC endpoints work without an API key?"
a: "3 endpoints sustain continuous keyless probing at launch: SmartPy (mainnet.smartpy.io), TezBeta (rpc.tzbeta.net) and TzKT by Baking Bad (rpc.tzkt.io/mainnet). Every listed endpoint was live-verified with a block header call returning a parsable level before inclusion."
a: "4 endpoints sustain continuous keyless probing at launch: SmartPy (mainnet.smartpy.io), TezBeta (rpc.tzbeta.net), TzKT by Baking Bad (rpc.tzkt.io/mainnet) and TCInfra (prod.tcinfra.net/rpc/mainnet). Every listed endpoint was live-verified with a block header call returning a parsable level before inclusion."
- q: "Does the fastest Tezos RPC change by region?"
a: "Often. Public infra concentrates in specific regions; a gateway that wins from Amsterdam can lose from Singapore by multiples. The region tabs at the top of the page re-scope every number to a single origin."
- q: "How is Tezos RPC latency measured here, technically?"
Expand Down Expand Up @@ -133,3 +133,26 @@ providers:
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tzkt", chain="tezos", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="tzkt", chain="tezos", region="sgp"}[1h])

- slug: tcinfra
name: TCInfra
tag: TCInfra public Tezos mainnet RPC, keyless
formula: "50th percentile over 24h of client-side round-trip latency (ms) for a GET /chains/main/blocks/head/header sent every 60s from 3 regions to prod.tcinfra.net/rpc/mainnet."
queries:
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tcinfra", chain="tezos"})
p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="tcinfra", chain="tezos"})
p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="tcinfra", chain="tezos"})
mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="tcinfra", chain="tezos"})
success: sum(ocb:rpc_call:ok_rate_24h{provider="tcinfra", chain="tezos"}) / sum(ocb:rpc_call:rate_24h{provider="tcinfra", chain="tezos"})
sample_size: sum(ocb:rpc_call:increase_24h{provider="tcinfra", chain="tezos"})
series: avg(avg_over_time(rpc_latency_milliseconds{provider="tcinfra", chain="tezos"}[1h]))
regions:
- region: us-east
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tcinfra", chain="tezos", region="us-east"})
series: avg_over_time(rpc_latency_milliseconds{provider="tcinfra", chain="tezos", region="us-east"}[1h])
- region: eu-west
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tcinfra", chain="tezos", region="eu-west"})
series: avg_over_time(rpc_latency_milliseconds{provider="tcinfra", chain="tezos", region="eu-west"}[1h])
- region: ap-southeast
p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="tcinfra", chain="tezos", region="sgp"})
series: avg_over_time(rpc_latency_milliseconds{provider="tcinfra", chain="tezos", region="sgp"}[1h])
3 changes: 2 additions & 1 deletion harnesses/rpc-capabilities/cmd/script/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -1616,7 +1616,7 @@ func chains() []Chain {
{Slug: "ngd2", Name: "NGD (2)", URL: envDefault("RPC_URL_NEO_NGD2", "https://n3seed2.ngd.network:10332")},
},
},
// 2026-08-18 wave-8. Tezos L1 — REST GET /chains/main/blocks/head/header, ~30 s/block. 3 keyless providers.
// 2026-08-18 wave-8. Tezos L1 — REST GET /chains/main/blocks/head/header, ~30 s/block. 4 keyless providers.
{
Slug: "tezos",
Name: "Tezos",
Expand All @@ -1625,6 +1625,7 @@ func chains() []Chain {
{Slug: "smartpy", Name: "SmartPy", URL: envDefault("RPC_URL_TEZOS_SMARTPY", "https://mainnet.smartpy.io")},
{Slug: "tzbeta", Name: "TezBeta", URL: envDefault("RPC_URL_TEZOS_TZBETA", "https://rpc.tzbeta.net")},
{Slug: "tzkt", Name: "TzKT (Baking Bad)", URL: envDefault("RPC_URL_TEZOS_TZKT", "https://rpc.tzkt.io/mainnet")},
{Slug: "tcinfra", Name: "TCInfra", URL: envDefault("RPC_URL_TEZOS_TCINFRA", "https://prod.tcinfra.net/rpc/mainnet")},
},
},
// 2026-08-18 wave-8. EOS (Antelope) L1 — REST GET /v1/chain/get_info, ~0.5 s/block. 3 keyless providers.
Expand Down
5 changes: 5 additions & 0 deletions src/data/provider-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2520,6 +2520,11 @@ export const PROVIDER_REGISTRY: Record<string, ProviderRegistryEntry> = {
"SmartPy public Tezos mainnet RPC node (mainnet.smartpy.io). Open-source Tezos development toolkit; the public node is operated alongside their IDE and testing tools.",
twitter: "@SmartPy_io",
},
tcinfra: {
url: "https://tcinfra.net",
description:
"TCInfra RPC node provider for Tezos and Etherlink (prod.tcinfra.net/rpc/mainnet). Provides public keyless Tezos mainnet REST access with no API key required.",
},

// ─── OKTC providers (bench 231) ───────────────────────────────
"oktc-official": {
Expand Down
1 change: 1 addition & 0 deletions src/lib/brand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ const BRANDS: Record<string, Brand> = {
"thundercore-official": { color: "#002868", dark: true }, // thundercore dark
thundertoken: { color: "#002868", dark: true }, // thundercore dark (thundertoken node)
smartpy: { color: "#2C7DF7" }, // smartpy blue (tezos ecosystem)
tcinfra: { color: "#2C7DF7" }, // tcinfra tezos blue
"oktc-official": { color: "#101010", dark: true }, // okx dark

// ─── Stellar ecosystem providers (bench № 210) ───
Expand Down
1 change: 1 addition & 0 deletions src/lib/logo-manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -731,6 +731,7 @@ const ALIASES: Record<string, string> = {
"eosusa": "wax",
"waxsweden": "wax",
"neon-p2p": "neon",
tcinfra: "tezos",
"merlin-official": "merlin",
"viction-official": "viction",
"viction-rpc2": "viction",
Expand Down
Loading