diff --git a/benchmarks/bnb-rpc.yml b/benchmarks/bnb-rpc.yml index 95ca204e9..94bf6875c 100644 --- a/benchmarks/bnb-rpc.yml +++ b/benchmarks/bnb-rpc.yml @@ -86,6 +86,29 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="bnb", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="bnb", region="sgp"}[1h]) + - slug: nownodes + name: NOWNodes + tag: Public node, 110+ chains, 5 RPS free tier + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to NOWNodes public no-key BNB Chain endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nownodes", chain="bnb"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nownodes", chain="bnb"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="nownodes", chain="bnb"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="nownodes", chain="bnb"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="nownodes", chain="bnb"}) / sum(ocb:rpc_call:rate_24h{provider="nownodes", chain="bnb"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="nownodes", chain="bnb"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="nownodes", chain="bnb"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nownodes", chain="bnb", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="nownodes", chain="bnb", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nownodes", chain="bnb", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="nownodes", chain="bnb", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nownodes", chain="bnb", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="nownodes", chain="bnb", region="sgp"}[1h]) + - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked diff --git a/benchmarks/ethereum-rpc.yml b/benchmarks/ethereum-rpc.yml index ce4e21741..98627c04d 100644 --- a/benchmarks/ethereum-rpc.yml +++ b/benchmarks/ethereum-rpc.yml @@ -87,6 +87,29 @@ providers: p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="publicnode", chain="ethereum", region="sgp"}) series: avg_over_time(rpc_latency_milliseconds{provider="publicnode", chain="ethereum", region="sgp"}[1h]) + - slug: nownodes + name: NOWNodes + tag: Public node, 110+ chains, 5 RPS free tier + formula: "50th percentile over 24h of client-side round-trip latency (ms) for a single `eth_getBlockByNumber` POST sent every 60s from 3 regions (us-east + eu-west + sgp) to NOWNodes public no-key Ethereum endpoint." + queries: + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nownodes", chain="ethereum"}) + p90: avg(ocb:rpc_latency_milliseconds:p90_24h{provider="nownodes", chain="ethereum"}) + p99: avg(ocb:rpc_latency_milliseconds:p99_24h{provider="nownodes", chain="ethereum"}) + mean: avg(ocb:rpc_latency_milliseconds:mean_24h{provider="nownodes", chain="ethereum"}) + success: sum(ocb:rpc_call:ok_rate_24h{provider="nownodes", chain="ethereum"}) / sum(ocb:rpc_call:rate_24h{provider="nownodes", chain="ethereum"}) + sample_size: sum(ocb:rpc_call:increase_24h{provider="nownodes", chain="ethereum"}) + series: avg(avg_over_time(rpc_latency_milliseconds{provider="nownodes", chain="ethereum"}[1h])) + regions: + - region: us-east + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nownodes", chain="ethereum", region="us-east"}) + series: avg_over_time(rpc_latency_milliseconds{provider="nownodes", chain="ethereum", region="us-east"}[1h]) + - region: eu-west + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nownodes", chain="ethereum", region="eu-west"}) + series: avg_over_time(rpc_latency_milliseconds{provider="nownodes", chain="ethereum", region="eu-west"}[1h]) + - region: ap-southeast + p50: avg(ocb:rpc_latency_milliseconds:p50_24h{provider="nownodes", chain="ethereum", region="sgp"}) + series: avg_over_time(rpc_latency_milliseconds{provider="nownodes", chain="ethereum", region="sgp"}[1h]) + - slug: drpc name: dRPC tag: Decentralized RPC mesh, consensus-checked diff --git a/harnesses/rpc-capabilities/cmd/script/config.go b/harnesses/rpc-capabilities/cmd/script/config.go index b61dc0d04..2907544b1 100644 --- a/harnesses/rpc-capabilities/cmd/script/config.go +++ b/harnesses/rpc-capabilities/cmd/script/config.go @@ -237,7 +237,7 @@ func chains() []Chain { {Slug: "tenderly", Name: "Tenderly Gateway", URL: envDefault("RPC_URL_MEGAETH_TENDERLY", "https://megaeth.gateway.tenderly.co")}, }, }, - // ─── Ethereum mainnet (8 providers) ──────────────────────── + // ─── Ethereum mainnet (9 providers) ──────────────────────── { Slug: "ethereum", Name: "Ethereum", @@ -250,6 +250,7 @@ func chains() []Chain { {Slug: "nodies", Name: "Nodies (POKT)", URL: envDefault("RPC_URL_ETHEREUM_NODIES", "https://eth-pokt.nodies.app")}, {Slug: "lava", Name: "Lava Network", URL: envDefault("RPC_URL_ETHEREUM_LAVA", "https://eth1.lava.build")}, {Slug: "bloxroute", Name: "bloXroute", URL: envDefault("RPC_URL_ETHEREUM_BLOXROUTE", "https://eth.rpc.blxrbdn.com")}, + {Slug: "nownodes", Name: "NOWNodes", URL: envDefault("RPC_URL_ETHEREUM_NOWNODES", "https://public-eth.nownodes.io")}, }, }, // ─── Polygon PoS (5 providers) ────────────────────────────── @@ -304,7 +305,7 @@ func chains() []Chain { {Slug: "bloxroute", Name: "bloXroute", URL: envDefault("RPC_URL_BASE_BLOXROUTE", "https://base.rpc.blxrbdn.com")}, }, }, - // ─── BNB Chain (5 providers) ──────────────────────────────── + // ─── BNB Chain (7 providers) ──────────────────────────────── { Slug: "bnb", Name: "BNB Chain", @@ -315,6 +316,7 @@ func chains() []Chain { {Slug: "binance", Name: "Binance Official", URL: envDefault("RPC_URL_BNB_OFFICIAL", "https://bsc-dataseed1.binance.org")}, {Slug: "blastapi", Name: "Blast API", URL: envDefault("RPC_URL_BNB_BLASTAPI", "https://bsc-mainnet.public.blastapi.io")}, {Slug: "bloxroute", Name: "bloXroute", URL: envDefault("RPC_URL_BNB_BLOXROUTE", "https://bsc.rpc.blxrbdn.com")}, + {Slug: "nownodes", Name: "NOWNodes", URL: envDefault("RPC_URL_BNB_NOWNODES", "https://public-bsc.nownodes.io")}, }, }, // ─── Avalanche C-Chain (6 providers) ──────────────────────── diff --git a/src/data/provider-registry.ts b/src/data/provider-registry.ts index c9782f304..8ec3e6919 100644 --- a/src/data/provider-registry.ts +++ b/src/data/provider-registry.ts @@ -2311,8 +2311,19 @@ export const PROVIDER_REGISTRY: Record = { nownodes: { url: "https://nownodes.io", description: - "NOWNodes is a multi-chain node provider covering Gram (TON), Bitcoin, Ethereum and 50+ other chains. Offers API-key-based access with a free trial tier.", + "Multi-chain node provider covering 110+ blockchains. Key-based REST and WebSocket RPC plus block explorers, with keyless public endpoints on a handful of chains (Ethereum, BNB, Bitcoin) rate-limited to 5 requests per second.", twitter: "@NOWNodes_io", + docs: "https://docs.nownodes.io", + chains: ["ethereum", "bnb", "bitcoin", "litecoin", "dogecoin", "gram", "xrp", "tron"], + features: [ + "110+ chains via a single API key", + "REST and WebSocket JSON-RPC endpoints", + "Block explorers for major UTXO chains", + "Keyless public endpoints on Ethereum, BNB and Bitcoin (5 RPS)", + "Free trial tier, then usage-based paid plans", + ], + pricing: + "Free trial key, then paid plans by request volume. Public no-key endpoints exist on select chains at 5 requests per second.", }, tatum: { url: "https://tatum.io",