Skip to content

Proxy and load-balancer Supernode for all EVM chain listed on Chainlist.org

License

Notifications You must be signed in to change notification settings

valamidev/evm-supernode

Repository files navigation

EVM-Supernode

Single Supernode for all EVM chains. Supernode allows access to all EVM chains with a single node. It acts as a proxy between the client and EVM chain nodes. Written in Node.js and Typescript, it requires Node v16 or higher.

Access every EVM chain with a single service:

https://localhost/chain/CHAIN_ID

Example:
const provider = new ethers.JsonRpcProvider("https://localhost/chain/56");

Docker image available:

docker run --name supernode -p 443:443 --restart always -d --memory 512m valamidev/evm-supernode:latest

Features:

  • Resilient RPC proxy compatible with Web3.js and EtherJS or any other JSON-RPC client
  • Optimized for speed and low memory/CPU usage
  • Use https://github.com/DefiLlama/chainlist to explore available EVM chains and public nodes
  • Store metadata about public nodes, such as latency, errors, and rate limits

How to start:

# Rename config.default.json to config.json
# yarn install / npm install
# yarn start

# To improve security please add your own SSL cert under assets/ folder

Config:

    "loggingEnabled": false, // Verbose logging
    "nodeStorage": true, // Allow to store RPC Node metadata, improve restart speed and stability

Service end-points:

# List of all nodes and metadata
https://localhost/nodes
/*
  [{
    "id": 29,
    "chainName": "ethereum",
    "chainId": 1,
    "rpcAddress": "https://eth-mainnet.nodereal.io/v1/1659dfb40aa24bbb8153a677b98064d7",
    "latency": 342,
    "errorCount": 2,
    "rateLimit": 2
  },
  ...]
*/

# Health status
https://localhost/health

Use Proxy mode:

import { ethers } from "ethers";

// Avoid TLS error in case you are using self-signed certificate
process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = "0";

const provider = new ethers.JsonRpcProvider("https://localhost/chain/56"); // Binance Smart Chain
// const provider = new ethers.JsonRpcProvider("https://localhost/chain/1"); // Ethereum Mainnet
...

const number = await provider.getBlockNumber();

About

Proxy and load-balancer Supernode for all EVM chain listed on Chainlist.org

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published