Skip to content

ship: Polkadot page + Parity product to prod - #1187

Merged
Flotapponnier merged 2 commits into
mainfrom
ship/polkadot-prod
Jul 15, 2026
Merged

ship: Polkadot page + Parity product to prod#1187
Flotapponnier merged 2 commits into
mainfrom
ship/polkadot-prod

Conversation

@Flotapponnier

Copy link
Copy Markdown
Collaborator

Cherry-picked from dev:

Verified on staging: /chains/polkadot, /benchmarks/polkadot-rpc, /products/parity all 200.

Flotapponnier and others added 2 commits July 15, 2026 21:47
* 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>
@Flotapponnier
Flotapponnier merged commit 1b8ca78 into main Jul 15, 2026
@Flotapponnier
Flotapponnier deleted the ship/polkadot-prod branch July 15, 2026 19:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant