ship: Polkadot page + Parity product to prod - #1187
Merged
Merged
Conversation
* add bench 086 polkadot-rpc: first Substrate chain in the RPC cluster
Extends rpc-capabilities to Polkadot, the first non-EVM, non-Solana
chain in the cluster. Substrate JSON-RPC via chain_getHeader (returns
hex-encoded block number matching EVM's eth_getBlockByNumber shape),
staleness by relay-block gap (40 blocks, ~4 min at Polkadot's ~6 s
cadence).
Harness changes:
- Chain.Kind gains "polkadot" alongside "solana" and default (EVM).
- New callSubstrateHeader: chain_getHeader POST, parses hex block
number, returns parentHash as the observed hash. Same latency
measurement + result classification as the EVM path.
- probeOne switches on Kind (was if solana / else). polkadot uses
polkadotStaleBlockGap = 40. Consensus observation is skipped
because chain_getHeader returns parentHash (N-1), not the current
block hash (deriving current hash needs Blake2 over the SCALE-
encoded header, out of scope).
- Archive loop is skipped for polkadot the same way as solana:
Polkadot state accesses via state_getStorage keyed by Blake2 storage
keys, no chain-agnostic depth analog for eth_getBalance-by-depth.
Providers at launch (3, live-verified on 2026-07-15 with four
consecutive chain_getHeader probes each):
- polkadot-official (Parity, rpc.polkadot.io)
- onfinality (public gateway, Web3 Foundation grantee)
- publicnode (Allnodes, extends its multi-chain footprint to
Substrate keyless)
Audited and excluded from the launch cohort:
- 1RPC: filters chain_getHeader as "Not Allowed" on the privacy
relay. Revisit if they expose a Substrate-friendly method set.
- Dwellir: 503 Service Unavailable during the audit sweep, revisit
once the gateway stabilises.
- Ankr: paid Polkadot tier only.
- Chainstack: key-gated on Substrate.
- RadiumBlock: rejects without referral header.
- Grove / Thirdweb: invalid-chain response.
Spec (benchmarks/polkadot-rpc.yml, bench № 086):
- Same schema as moonbeam-rpc / avalanche-rpc etc. so the parent
rpc-capabilities benchmark, chain cluster page and hub card
render it identically.
- Methodology documents the Substrate specifics: probe method
choice, staleness scaling, why no archive-depth or hash-quorum
columns.
- SEO/finding tokens use the standard {{best_name}} / {{best_p50}}
/ {{p50:slug}} template surface, consistent with other -rpc
benches.
- Provider tag copy explains OnFinality and Dwellir's Web3
Foundation grantee status so the leaderboard reads correctly
for someone who knows the Polkadot infra landscape.
Local checks:
- go build ./... clean.
- go test ./... clean.
- bun test src/ - 95/95 pass across 10 files, including the
citation reliability floor and consistency tests added in #1175.
* polkadot page + parity/onfinality/dwellir products
Wires the /chains/polkadot hub page, provider profiles, and logo
assets that surface once bench 086 polkadot-rpc starts feeding Prom.
- chains.ts: add Polkadot to CHAINS registry (L1, nativeSymbol DOT).
Auto-populates /chains/polkadot once benches referencing chain="polkadot"
land. Adaptive KPI strip fills in DefiLlama TVL, DEX volume and stables
when the chain-kpis harness starts sourcing Polkadot alongside the
other L1s.
- provider-registry.ts: three new entries for the Polkadot cohort.
* parity: brand entry for Parity Technologies (Polkadot / Substrate
implementation shop, operator of rpc.polkadot.io).
* polkadot-official: endpoint-level entry describing the reference
rpc.polkadot.io keyless endpoint; providers.ts aliases the slug
to parity so the /products page collapses under the operator's
brand.
* dwellir: brand entry for Dwellir (Web3 Foundation grantee, keyless
Substrate infra) — excluded from the 086 launch cohort due to a
503 during the audit sweep but kept in the registry for the
revisit and for other places their brand might appear.
- providers.ts: add polkadot-official → parity alias and canonical
brand casings for polkadot / parity / onfinality / dwellir so the
/products hub, badges, and OG images render the correct name
without the title-case fallback butchering them.
- logo-manifest.ts: polkadot.png (chain hero), parity.png (product page
logo), plus polkadot-official → parity slug alias so the endpoint
chip on the bench page picks up Parity's mark automatically.
95/95 pass on bun test src/. Local build clean.
---------
Co-authored-by: Florent Tapponnier <contact@mobula.io>
…#1186) Co-authored-by: Florent Tapponnier <contact@mobula.io>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cherry-picked from dev:
Verified on staging: /chains/polkadot, /benchmarks/polkadot-rpc, /products/parity all 200.