$ reverseRPC_

Fast, self-hosted multi-chain RPC proxy with endpoint racing, automatic failover, and intelligent caching

// Quick Start
# Set your RPC provider export RPC_URL="https://2-29-1-165.sslip.io" # Make a request (Ethereum) curl $RPC_URL/1 \ -X POST \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
95
Networks
—
Healthy
—
Avg Latency
—
Uptime

Features

⚡
Endpoint Racing
Simultaneously queries multiple RPC endpoints and returns the fastest response, reducing latency by 30-50%
🔄
Auto Failover
Circuit breaker pattern with health monitoring. Failed endpoints are temporarily excluded with exponential backoff
💾
Smart Caching
Block-aware cache invalidation. Static data cached indefinitely, block-dependent data invalidated on chain progress
🔌
WebSocket Support
Full eth_subscribe support with automatic upstream connection management and client multiplexing
📊
Request Coalescing
Identical in-flight requests are deduplicated, reducing load on upstream providers and improving efficiency
🎯
95 Networks
Ethereum, BSC, Polygon, Arbitrum, Optimism, Base, and 89 more chains with 251 HTTP and 61 WSS endpoints

All Networks

Loading network status...

Performance Benchmarks

Network reverseRPC Official RPC Difference
Ethereum 181ms 298ms -117ms (39% faster)
BSC 146ms 285ms -139ms (49% faster)
Polygon 184ms 312ms -128ms (41% faster)
Arbitrum 174ms 298ms -124ms (42% faster)
Optimism 188ms 247ms -59ms (24% faster)
Robinhood Chain 195ms 203ms -8ms (4% faster)
Base 192ms 178ms +14ms (8% slower)

README

What is reverseRPC?

reverseRPC — это самохостящийся multi-chain EVM JSON-RPC прокси, который агрегирует бесплатные RPC эндпоинты из кошельков (OKX, Bitget, Rabby) и публичных источников (Chainlist). Прокси автоматически выбирает самые быстрые ноды, балансирует нагрузку и обеспечивает failover.

🚀 Зачем это нужно?

📦 Как использовать?

1. HTTP запросы (curl):

curl https://2-29-1-165.sslip.io/1 \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

2. ethers.js / viem:

// ethers v6
const provider = new ethers.JsonRpcProvider("https://2-29-1-165.sslip.io/1");
const block = await provider.getBlockNumber();

// viem
import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';

const client = createPublicClient({
  chain: mainnet,
  transport: http('https://2-29-1-165.sslip.io/1')
});

3. WebSocket (eth_subscribe):

const provider = new ethers.WebSocketProvider("wss://2-29-1-165.sslip.io/ws/1");

provider.on("block", (blockNumber) => {
  console.log("New block:", blockNumber);
});

🤖 Для AI агентов

Health Check API для автоматического discovery сетей:

GET https://2-29-1-165.sslip.io/health

Response:
{
  "status": "ok",
  "chains": {
    "1": {
      "name": "Ethereum",
      "healthy": true,
      "healthyEndpoints": 7,
      "totalEndpoints": 7,
      "avgLatency": 170
    }
  }
}

Агент может опросить /health чтобы узнать список доступных сетей, их статус и среднюю latency перед тем как делать RPC вызовы.

⚙️ Поддерживаемые методы

Все стандартные JSON-RPC методы:

🔧 Архитектура

Documentation

For Developers

HTTP Endpoint:

https://2-29-1-165.sslip.io/{chainId}

WebSocket Endpoint:

wss://2-29-1-165.sslip.io/ws/{chainId}

Example (ethers.js):

const provider = new ethers.JsonRpcProvider(
  "https://2-29-1-165.sslip.io/1"
);

const blockNumber = await provider.getBlockNumber();
console.log(blockNumber);

Supported Methods: All standard JSON-RPC methods including eth_call, eth_getBalance, eth_getTransactionReceipt, eth_subscribe (WebSocket)

For AI Agents

Health Check API:

GET https://2-29-1-165.sslip.io/health

Response Format:

{
  "status": "ok",
  "chains": {
    "1": {
      "name": "Ethereum",
      "healthy": true,
      "healthyEndpoints": 7,
      "totalEndpoints": 7,
      "wsEndpoints": 2,
      "healthyWsEndpoints": 2,
      "avgLatency": 170
    }
  }
}

Usage: Query /health to discover available networks, check endpoint status, and measure latency before making RPC calls

Architecture

Stack: TypeScript, Express, WebSocket, node-cache, prom-client

Hosting: Hetzner CX33 ($12/mo) at 2.29.1.165, systemd service

Endpoint Sources: Aggregated from OKX Wallet, Bitget, Chainlist, and Rabby

Load Balancing: Smooth weighted round-robin biased by measured latency

Reliability: Circuit breaker (exponential backoff 1m→2m→4m→30m cap), token-bucket rate limiting, LRU cache

Monitoring: Prometheus metrics at /metrics endpoint