diff --git a/public/logos/aapl.svg b/public/logos/aapl.svg
new file mode 100644
index 00000000..915e8909
--- /dev/null
+++ b/public/logos/aapl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logos/amd.svg b/public/logos/amd.svg
new file mode 100644
index 00000000..ae3de073
--- /dev/null
+++ b/public/logos/amd.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logos/amzn.png b/public/logos/amzn.png
new file mode 100644
index 00000000..d466c792
Binary files /dev/null and b/public/logos/amzn.png differ
diff --git a/public/logos/googl.svg b/public/logos/googl.svg
new file mode 100644
index 00000000..088288fa
--- /dev/null
+++ b/public/logos/googl.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logos/meta.svg b/public/logos/meta.svg
new file mode 100644
index 00000000..385fb0a1
--- /dev/null
+++ b/public/logos/meta.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logos/msft.svg b/public/logos/msft.svg
new file mode 100644
index 00000000..5334aa7c
--- /dev/null
+++ b/public/logos/msft.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logos/mu.png b/public/logos/mu.png
new file mode 100644
index 00000000..f8f9a294
Binary files /dev/null and b/public/logos/mu.png differ
diff --git a/public/logos/nvda.svg b/public/logos/nvda.svg
new file mode 100644
index 00000000..e427e2ce
--- /dev/null
+++ b/public/logos/nvda.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logos/orca.png b/public/logos/orca.png
new file mode 100644
index 00000000..35bf2a7d
Binary files /dev/null and b/public/logos/orca.png differ
diff --git a/public/logos/pltr.svg b/public/logos/pltr.svg
new file mode 100644
index 00000000..6bb694d7
--- /dev/null
+++ b/public/logos/pltr.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logos/pyth.jpg b/public/logos/pyth.jpg
new file mode 100644
index 00000000..4bbb1cac
Binary files /dev/null and b/public/logos/pyth.jpg differ
diff --git a/public/logos/qqq.png b/public/logos/qqq.png
new file mode 100644
index 00000000..dab7e300
Binary files /dev/null and b/public/logos/qqq.png differ
diff --git a/public/logos/spy.svg b/public/logos/spy.svg
new file mode 100644
index 00000000..d3d540a1
--- /dev/null
+++ b/public/logos/spy.svg
@@ -0,0 +1,35 @@
+
+
+
diff --git a/public/logos/tsla.svg b/public/logos/tsla.svg
new file mode 100644
index 00000000..e990fab5
--- /dev/null
+++ b/public/logos/tsla.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/provider-logo.tsx b/src/components/provider-logo.tsx
index 62d4b0f4..8f52e362 100644
--- a/src/components/provider-logo.tsx
+++ b/src/components/provider-logo.tsx
@@ -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",
diff --git a/src/data/provider-registry.ts b/src/data/provider-registry.ts
index 8b89ddbc..9e23d722 100644
--- a/src/data/provider-registry.ts
+++ b/src/data/provider-registry.ts
@@ -214,6 +214,97 @@ export const PROVIDER_REGISTRY: Record = {
"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:
diff --git a/src/lib/categories.ts b/src/lib/categories.ts
index d432767f..091bde4e 100644
--- a/src/lib/categories.ts
+++ b/src/lib/categories.ts
@@ -30,7 +30,8 @@ export type Category =
| "Wallets"
| "RPCs"
| "NFT APIs"
- | "Explorers";
+ | "Explorers"
+ | "RWA";
export type CategoryEntry = {
/** URL slug. Lowercase, kebab-case, ASCII. */
@@ -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",
diff --git a/src/lib/category-colors.ts b/src/lib/category-colors.ts
index e06035d5..6cf03306 100644
--- a/src/lib/category-colors.ts
+++ b/src/lib/category-colors.ts
@@ -18,4 +18,6 @@ export const CATEGORY_COLOR: Record = {
// 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",
};
diff --git a/src/lib/logo-manifest.ts b/src/lib/logo-manifest.ts
index 3df2764e..a8b30069 100644
--- a/src/lib/logo-manifest.ts
+++ b/src/lib/logo-manifest.ts
@@ -164,6 +164,21 @@ const RAW: Record = {
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",
@@ -365,6 +380,8 @@ const ALIASES: Record = {
// 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",
diff --git a/src/lib/spec-schema.ts b/src/lib/spec-schema.ts
index 47fc2eeb..75535ac0 100644
--- a/src/lib/spec-schema.ts
+++ b/src/lib/spec-schema.ts
@@ -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
diff --git a/src/lib/spec.ts b/src/lib/spec.ts
index 74d0d18c..eced326f 100644
--- a/src/lib/spec.ts
+++ b/src/lib/spec.ts
@@ -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"] },
);
@@ -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);
@@ -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"] }
);
diff --git a/src/types/benchmark.ts b/src/types/benchmark.ts
index c213c3ef..47d29a00 100644
--- a/src/types/benchmark.ts
+++ b/src/types/benchmark.ts
@@ -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