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
1 change: 1 addition & 0 deletions public/logos/aapl.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/logos/amd.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/logos/amzn.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/logos/googl.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/logos/meta.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/logos/msft.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/logos/mu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/logos/nvda.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/logos/orca.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/logos/pltr.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/logos/pyth.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/logos/qqq.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 35 additions & 0 deletions public/logos/spy.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions public/logos/tsla.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/components/provider-logo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ export function ProviderLogo({
// hairline shadow so they pop on both light and dark page backgrounds.
const NEEDS_LIGHT_CHIP = new Set([
"aptos",
"aapl",
"pltr",
"leorpc",
"blinklabs",
"mobula",
"lighter",
Expand Down
91 changes: 91 additions & 0 deletions src/data/provider-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,97 @@ export const PROVIDER_REGISTRY: Record<string, ProviderRegistryEntry> = {
"Solana transaction landing service by Temporal Labs. Direct-to-leader submission from 9 colocated regions, tip paid only on successful landing.",
twitter: "@temporal_xyz",
},
"solana-official": {
url: "https://solana.com",
description:
"api.mainnet-beta.solana.com is the chain-official public RPC operated by Solana Labs, the endpoint every tutorial and SDK defaults to, documented at roughly 100 requests per 10 seconds per IP.",
twitter: "@solana",
},
leorpc: {
url: "https://leorpc.com",
description:
"LeoRPC is a community Solana RPC operation exposing a publicly documented FREE tier through a query key, one of the few remaining keyless ways to read Solana mainnet.",
},
aapl: {
url: "https://www.apple.com",
description:
"Apple tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
nvda: {
url: "https://www.nvidia.com",
description:
"Nvidia tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
googl: {
url: "https://abc.xyz",
description:
"Alphabet tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
tsla: {
url: "https://www.tesla.com",
description:
"Tesla tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
pltr: {
url: "https://www.palantir.com",
description:
"Palantir tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
meta: {
url: "https://www.meta.com",
description:
"Meta Platforms tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
amd: {
url: "https://www.amd.com",
description:
"AMD tokenized equity issued by Robinhood on Robinhood Chain (contract 0x86923f96303D656E4aa86D9d42D1e57ad2023fdC), trading against USDG on Uniswap v4 around the clock. OpenChainBench measures its live price deviation from the real market on the tokenized stock peg benchmark.",
},
msft: {
url: "https://www.microsoft.com",
description:
"Microsoft tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
amzn: {
url: "https://www.amazon.com",
description:
"Amazon tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
spy: {
url: "https://www.ssga.com",
description:
"SPDR S&P 500 ETF (State Street) tokenized equity measured across issuers on the RWA benchmarks: Robinhood's token on Robinhood Chain (Uniswap v4 vs USDG) and Backed's xStock on Solana (Jupiter executable mid vs USDC), each tracked live against the real market price.",
},
mu: {
url: "https://www.micron.com",
description:
"Micron Technology tokenized equity issued by Robinhood on Robinhood Chain (contract 0xfF080c8ce2E5feadaCa0Da81314Ae59D232d4afD), trading against USDG on Uniswap v4 around the clock. OpenChainBench measures its live price deviation from the real market on the tokenized stock peg benchmark.",
},
hood: {
url: "https://robinhood.com",
description:
"Robinhood Markets tokenized equity, issued by Backed as HOODx on Solana. Notably absent from Robinhood's own chain: the only onchain HOOD is third party. Tracked live against the Nasdaq price on the xStocks peg benchmark.",
},
qqq: {
url: "https://www.invesco.com",
description:
"Invesco QQQ Nasdaq 100 ETF, tokenized by Backed as QQQx on Solana. Tracked live against the real ETF price on the xStocks peg benchmark.",
},
coin: {
url: "https://www.coinbase.com",
description:
"Coinbase tokenized equity, issued by Backed as COINx on Solana, a crypto exchange's stock trading on a blockchain. Tracked live against the Nasdaq price on the xStocks peg benchmark.",
},
"orca-solana": {
url: "https://www.orca.so",
description:
"Orca is Solana's concentrated liquidity DEX. Its USDY/USDC whirlpool is the deepest genuine venue for Ondo's tokenized treasury and the market leg of the USDY NAV basis benchmark.",
},
"pyth-market": {
url: "https://pyth.network",
description:
"Pyth Network's USDY/USD market composite aggregates USDY trading into one feed. Measured against Pyth's own USDY redemption rate feed on the NAV basis benchmark.",
},
bloxroute: {
url: "https://bloxroute.com",
description:
Expand Down
10 changes: 9 additions & 1 deletion src/lib/categories.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ export type Category =
| "Wallets"
| "RPCs"
| "NFT APIs"
| "Explorers";
| "Explorers"
| "RWA";

export type CategoryEntry = {
/** URL slug. Lowercase, kebab-case, ASCII. */
Expand Down Expand Up @@ -93,6 +94,13 @@ export const CATEGORIES: readonly CategoryEntry[] = [
description:
"Live measurements for block explorer APIs. Compare how many chains each family actually serves with a working indexer, probe-verified daily against the vendors' own registries.",
},
{
slug: "rwa",
label: "RWA",
heading: "RWA benchmarks",
description:
"Live measurements for tokenized real world assets. How closely tokenized stocks and treasuries track their underlying market price, measured onchain around the clock, including nights and weekends when the real markets are closed.",
},
{
slug: "nft-apis",
label: "NFT APIs",
Expand Down
2 changes: 2 additions & 0 deletions src/lib/category-colors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ export const CATEGORY_COLOR: Record<string, string> = {
// in use. Picks up OpenSea/Alchemy/Moralis brand palettes which all
// cluster around blues/purples.
"NFT APIs": "#6366f1",
// RWA: teal, the tradfi-meets-onchain lane gets its own hue.
RWA: "#0d9488",
};
17 changes: 17 additions & 0 deletions src/lib/logo-manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,21 @@ const RAW: Record<string, string> = {
nextblock: "/logos/nextblock.png",
astralane: "/logos/astralane.svg",
solanavibestation: "/logos/solanavibestation.png",
leorpc: "/logos/leorpc.png",
aapl: "/logos/aapl.svg",
nvda: "/logos/nvda.svg",
googl: "/logos/googl.svg",
tsla: "/logos/tsla.svg",
pltr: "/logos/pltr.svg",
meta: "/logos/meta.svg",
amd: "/logos/amd.svg",
msft: "/logos/msft.svg",
amzn: "/logos/amzn.png",
spy: "/logos/spy.svg",
mu: "/logos/mu.png",
qqq: "/logos/qqq.png",
"orca-solana": "/logos/orca.png",
"pyth-market": "/logos/pyth.jpg",

// ─── Buyback audit (bench 018) ───
sky: "/logos/sky.svg",
Expand Down Expand Up @@ -365,6 +380,8 @@ const ALIASES: Record<string, string> = {
// Long-tail RPC cluster (055-066).
"sonic-official": "sonic",
"monad-official": "monad",
hood: "robinhood",
coin: "coinbase",
"megaeth-official": "megaeth",
"celo-official": "celo",
"blast-official": "blast",
Expand Down
1 change: 1 addition & 0 deletions src/lib/spec-schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ export const Category = z.enum([
"RPCs",
"NFT APIs",
"Explorers",
"RWA",
]);

// Em-dash (—) and en-dash (–) are the classic "AI tells" that hurt our brand
Expand Down
6 changes: 3 additions & 3 deletions src/lib/spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ const loadBenchmarkUnfilteredCached = unstable_cache(
// buckets (gap rendering fix). Cached v26 entries hold the old
// hole-compressed arrays whose indices no longer map onto the nominal
// step grid the chart back-computes timestamps from.
["bench-unfiltered-v29", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
["bench-unfiltered-v30", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
{ revalidate: 300, tags: ["benchmarks"] },
);

Expand Down Expand Up @@ -428,7 +428,7 @@ const loadAllBenchmarksCached = unstable_cache(
// gated catalog to /products for 30+ min after the deploy).
// v29: bumped with bench-unfiltered-v26 (monad-rpc + megaeth-rpc ship).
// v30: bumped with bench-unfiltered-v27 (dense series with nulls).
["all-benchmarks-v32", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
["all-benchmarks-v33", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
{ revalidate: 300, tags: ["benchmarks"] },
);
export const loadAllBenchmarks = cache(loadAllBenchmarksCached);
Expand Down Expand Up @@ -507,7 +507,7 @@ const loadBenchmarkFiltered = unstable_cache(
// v16: bumped with the bench 074 ship (lockstep rule, see all-benchmarks-v28).
// v17: bumped with the monad-rpc + megaeth-rpc ship (lockstep rule).
// v18: bumped with bench-unfiltered-v27 (dense series with nulls).
["bench-filters-v20", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
["bench-filters-v21", process.env.VERCEL_ENV === "production" ? "prod" : "all"],
{ revalidate: 300, tags: ["benchmarks"] }
);

Expand Down
2 changes: 1 addition & 1 deletion src/types/benchmark.ts
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ export type Benchmark = {
kind?: { value: string; label: string }[];
venue?: { value: string; label: string }[];
};
category: "Aggregators" | "Bridges" | "Blockchains" | "Trading" | "Wallets" | "RPCs" | "NFT APIs" | "Explorers";
category: "Aggregators" | "Bridges" | "Blockchains" | "Trading" | "Wallets" | "RPCs" | "NFT APIs" | "Explorers" | "RWA";
results: ProviderResult[];
/** Per-chain leader, computed only on the unfiltered ("All chains") view
* when the spec declares `dimensions.chain`. Key = chain slug from the
Expand Down
Loading