Globally distributed RPC accelerator routing requests across geographically diverse nodes for low p99 latency, with per-chain endpoint URLs and free public RPC.
- 01low p99 latency RPC
- 02free public RPC for prototyping
- 03EVM-heavy multi-chain coverage
- 04burst-friendly distributed routing
- 05ZetaChain, Linea, Scroll early support
- pnpm add viem
| Variable | Scope | Description |
|---|---|---|
| BLOCKPI_API_KEY | Server | BlockPI API key (the path segment appended to the chain endpoint). Server-side only. |
| BLOCKPI_RPC_URL | Server | Full BlockPI RPC URL with key, e.g. `https://ethereum.blockpi.network/v1/rpc/<BLOCKPI_API_KEY>`. Server-side only. |
Use BlockPI's distributed RPC network as the JSON-RPC transport. Endpoint pattern: `https://<chain>.blockpi.network/v1/rpc/<BLOCKPI_API_KEY>` (e.g. `ethereum`, `bsc`, `polygon`, `arbitrum`, `optimism`, `base`, `avalanche`, `zksync`, `linea`, `scroll`). Wire into `viem` via `createPublicClient({ chain: mainnet, transport: http(process.env.BLOCKPI_RPC_URL) })`. WebSocket: `wss://<chain>.blockpi.network/v1/ws/<KEY>`. BlockPI also exposes free public RPC at `https://public.blockpi.io/` with no key required (heavily rate-limited). The 'accelerator' value prop is geo-distributed routing: requests land on the nearest healthy node, which keeps p99 lower than single-region providers under burst.
- ⚑The API key is in the URL path — leaking the URL leaks the credential. Never expose `<chain>.blockpi.network/v1/rpc/<KEY>` in a client bundle; proxy via a server route.
- ⚑Public RPC at `public.blockpi.io` has no SLA, IP-based rate limits, and rotating internal keys — never use it in production; it WILL 429 under any real traffic.
- ⚑Free tier has a daily request cap; archive-mode and `eth_getLogs` over wide ranges count the same as `eth_blockNumber` and exhaust the quota faster than expected.
- ⚑Archive-state access is a paid-tier feature on most chains — historical balance queries at old blocks return method-not-supported on free endpoints.
- ⚑Geo-distributed routing means consecutive requests can land on different upstream nodes — short-lived state inconsistencies during reorgs are possible; verify critical reads at the app layer.
- ⚑Eviction policy: WebSocket subscriptions can be dropped without warning under provider rotation; reconnect with backoff and resubscribe.
- ⚑Long-tail/new chains (e.g. Monad, Berachain) get added to BlockPI later than to Alchemy/QuickNode — verify chain support before pinning.