The Ethereum RPC Proxy System provides a robust solution for managing and monitoring Ethereum RPC providers. It consists of two main components:
- RPC Health Checker: Monitors and validates RPC provider health
- nginx-proxy: Acts as a reverse proxy with provider failover capabilities
Run the complete system:
-
Generate provider configuration files and store them in the secrets folder:
# Create secrets directory if it doesn't exist mkdir -p secrets # Generate default_providers.json python3 rpc-health-checker/generate_providers.py \ --providers infura:YOUR_INFURA_TOKEN \ --networks mainnet sepolia \ --chains ethereum optimism arbitrum base \ --output secrets/default_providers.json # Generate reference_providers.json python3 rpc-health-checker/generate_providers.py \ --single-provider \ --providers infura:YOUR_INFURA_TOKEN_REFERENCE \ --networks mainnet sepolia \ --chains ethereum optimism arbitrum base \ --output secrets/reference_providers.json
Please replace
YOUR_INFURA_TOKEN
andYOUR_INFURA_TOKEN_REFERENCE
with your Infura API tokens. You can also add more providers (infura or grove), see--providers
flag help. -
Create .htpasswd file for nginx proxy authentication:
htpasswd -c secrets/.htpasswd dev
-
Execute the following commands to start the system:
docker-compose up --build
-
Run test requests:
curl -u dev:<password> -X POST http://localhost:8080/ethereum/mainnet \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
The services will be accessible under:
- RPC Health Checker: http://localhost:8080
- Check the list of validated providers at http://localhost:8081/providers
- nginx-proxy: http://localhost:8081
- The new RPC endpoint is now available http://localhost:8080/ethereum/mainnet (path is
/chain/network
).
- The new RPC endpoint is now available http://localhost:8080/ethereum/mainnet (path is