Skip to content

RPC node providers

RPC providers speed has a direct link to how fast you can index data, providers who try to return data as fast as possible are the best providers to have. With RPC providers the fastest providers are ones which return you the to and from block ranges even if you supply an out of range block request. This means you can extract that data from the error message and use it to get the the biggest depth of logs out of a single request. The slower providers give you a max block range and this means you have to crawl through the blocks to get the logs even if no data is in the blocks, this is a lot slower.

Tenderly

Tenderly has some very fast nodes and in internal testing with free nodes they blew everyone out the water for returning the most event logs in the fastest time.

check out their free nodes here - https://docs.tenderly.co/supported-networks-and-languages

Alchemy

Alchemy is another great provider with a free tier that is generous.

Other top providers

Infura and thirdweb are also good providers.

All other networks

You can use chainlist to find all the providers which support your network.

Local nodes

rindexer should work with any local nodes you run including Anvil and Hardhat

RPC Proxy and Caching

eRPC is a fault-tolerant EVM RPC proxy and re-org aware permanent caching solution. It is built with read-heavy use-cases in mind such as data indexing and high-load frontend usage.

Setup

  1. Create your erpc.yaml configuration file:
logLevel: debug
projects:
  - id: main
    upstreams:
      # You don't need to define architecture (e.g. evm) or chain id (e.g. 137)
      # as they will be detected automatically by eRPC.
      - endpoint: https://eth-mainnet.blastapi.io/xxxx
      - endpoint: https://polygon-mainnet.blastapi.io/xxxx
      - endpoint: evm+alchemy://xxxx-my-alchemy-api-key-xxxx

See a complete config example for inspiration.

  1. Use the Docker image:
docker run -v $(pwd)/erpc.yaml:/root/erpc.yaml -p 4000:4000 -p 4001:4001 ghcr.io/erpc/erpc:latest

or add the below configs to the rindexer's docker-compose.yaml as a service and run docker-compose up -d:

rindexer.yaml
  services:
    ...
 
    erpc: 
      image: ghcr.io/erpc/erpc:latest
      platform: linux/amd64
      volumes: 
        - ${PROJECT_PATH}/erpc.yaml:/root/erpc.yaml
      ports: 
        - 4000:4000
        - 4001:4001
      restart: always
  1. Set erpc url in rindexer network config:
rindexer.yaml
name: rETHIndexer
description: My first rindexer project
repository: https://github.com/joshstevens19/rindexer
project_type: no-code
networks:
- name: ethereum
  chain_id: 1
  rpc: http://erpc:4000/main/evm/1

and you are set to go. the rpc requests now will be redirected toward erpc and it will handle caching, failover, auto-batching, rate-limiting, auto-discovery of node providers, etc. behind the scenes.