# Author: Simon-Pierre Boucher # Mail: contact@spboucher.ai # Free public RPC endpoints — no API keys anywhere. All endpoints below were # live-verified 2026-08-05 (EVM: eth_chainId; others: family-native health # calls). The RpcPool rotates to the next endpoint on 429s/transport errors # and on semantic getLogs refusals at minimum range. # # family: picks the ingestion adapter (evm today; others land in D4) # confirmations: blocks to trail behind head — cheap reorg protection # max_range: initial eth_getLogs block span; auto-halves when a node # answers "too many results / range too large" # start_offset: how far behind the safe head to start on a fresh DB # (full historical backfill on free RPCs is impractical — # start recent, grow forward) # # Notes from endpoint survey (2026-08-05): # - 1rpc.io free tier is effectively dead ("usage limit" errors) — removed # - rpc.ankr.com requires keys on most chains now — avoided # - dRPC public: ~120k CU/min per IP, no Solana on free plan # - PublicNode: keyless fair-use, but no ZKsync/Kaia/WorldChain/HyperEVM chains: # ======================= EVM ======================= ethereum: native: {symbol: ETH, min: 50, decimals: 18} # whale-only native transfers family: evm chain_id: 1 block_time: 12 confirmations: 6 max_range: 40 start_offset: 300 # ~1 hour rpcs: - https://ethereum-rpc.publicnode.com - https://eth.drpc.org # eth.llamarpc.com dropped 2026-08-05: origin down (HTTP 521) base: family: evm chain_id: 8453 block_time: 2 confirmations: 10 max_range: 150 start_offset: 1800 # ~1 hour rpcs: - https://mainnet.base.org - https://base-rpc.publicnode.com - https://base.drpc.org arbitrum: family: evm chain_id: 42161 block_time: 0.25 confirmations: 40 max_range: 400 start_offset: 8000 # ~30 min (fast blocks) rpcs: - https://arb1.arbitrum.io/rpc - https://arbitrum-one-rpc.publicnode.com - https://arbitrum.drpc.org optimism: family: evm chain_id: 10 block_time: 2 confirmations: 10 max_range: 150 start_offset: 1800 rpcs: - https://mainnet.optimism.io - https://optimism-rpc.publicnode.com - https://optimism.drpc.org polygon: native: {symbol: POL, min: 300000, decimals: 18} family: evm chain_id: 137 block_time: 2 confirmations: 30 # Polygon PoS reorgs more than most max_range: 100 start_offset: 1800 rpcs: - https://polygon-bor-rpc.publicnode.com - https://polygon.drpc.org # polygon-rpc.com dropped 2026-08-05: now answers "API key disabled" bsc: native: {symbol: BNB, min: 500, decimals: 18} family: evm chain_id: 56 block_time: 0.75 confirmations: 15 max_range: 100 start_offset: 2400 # ~30 min rpcs: - https://bsc-rpc.publicnode.com # first: dataseed refuses getLogs - https://bsc-dataseed.bnbchain.org - https://bsc.drpc.org avalanche: native: {symbol: AVAX, min: 5000, decimals: 18} family: evm chain_id: 43114 block_time: 2 confirmations: 5 # Snowman consensus finalizes fast max_range: 200 start_offset: 1800 rpcs: - https://api.avax.network/ext/bc/C/rpc - https://avalanche-c-chain-rpc.publicnode.com - https://avalanche.drpc.org celo: family: evm chain_id: 42220 block_time: 1 # Celo is an OP-stack L2 now confirmations: 10 max_range: 200 start_offset: 3600 rpcs: - https://forno.celo.org - https://celo-rpc.publicnode.com - https://celo.drpc.org kaia: family: evm chain_id: 8217 block_time: 1 confirmations: 10 max_range: 200 start_offset: 3600 rpcs: - https://public-en.node.kaia.io - https://kaia.drpc.org ink: family: evm chain_id: 57073 block_time: 1 # OP stack confirmations: 10 max_range: 200 start_offset: 3600 rpcs: - https://rpc-gel.inkonchain.com - https://rpc-qnd.inkonchain.com - https://ink.drpc.org scroll: family: evm chain_id: 534352 block_time: 3 confirmations: 10 max_range: 150 start_offset: 1200 rpcs: - https://rpc.scroll.io - https://scroll-rpc.publicnode.com - https://scroll.drpc.org linea: family: evm chain_id: 59144 block_time: 2 confirmations: 10 max_range: 150 start_offset: 1800 rpcs: - https://rpc.linea.build - https://linea-rpc.publicnode.com - https://linea.drpc.org mantle: family: evm chain_id: 5000 block_time: 2 confirmations: 10 max_range: 150 start_offset: 1800 rpcs: - https://rpc.mantle.xyz - https://mantle-rpc.publicnode.com - https://mantle.drpc.org gnosis: family: evm chain_id: 100 block_time: 5 confirmations: 10 max_range: 100 start_offset: 720 rpcs: - https://rpc.gnosischain.com - https://gnosis-rpc.publicnode.com - https://gnosis.drpc.org zksync: family: evm chain_id: 324 block_time: 1 confirmations: 10 max_range: 200 start_offset: 3600 rpcs: - https://mainnet.era.zksync.io - https://zksync.drpc.org blast: family: evm chain_id: 81457 block_time: 2 confirmations: 10 max_range: 150 start_offset: 1800 rpcs: - https://rpc.blast.io - https://blast-rpc.publicnode.com - https://blast.drpc.org unichain: family: evm chain_id: 130 block_time: 1 confirmations: 10 max_range: 200 start_offset: 3600 rpcs: - https://mainnet.unichain.org - https://unichain-rpc.publicnode.com - https://unichain.drpc.org world_chain: family: evm chain_id: 480 block_time: 2 confirmations: 10 max_range: 150 start_offset: 1800 rpcs: - https://worldchain-mainnet.g.alchemy.com/public - https://worldchain-mainnet.gateway.tenderly.co - https://worldchain.drpc.org sonic: family: evm chain_id: 146 block_time: 0.5 confirmations: 10 max_range: 200 start_offset: 3600 rpcs: - https://rpc.soniclabs.com - https://sonic-rpc.publicnode.com - https://sonic.drpc.org sei: family: evm # Sei EVM view; native Cosmos side not indexed here chain_id: 1329 block_time: 0.4 confirmations: 5 max_range: 200 start_offset: 4000 rpcs: - https://evm-rpc.sei-apis.com - https://sei-evm-rpc.publicnode.com - https://sei.drpc.org hyperevm: family: evm chain_id: 999 block_time: 1 confirmations: 5 max_range: 100 # official RPC rate limits are strict start_offset: 1800 rpcs: - {url: "https://rpc.hyperliquid.xyz/evm", rps: 2, burst: 4} # strict official limits - https://hyperliquid.drpc.org - https://rpc.hypurrscan.io # ================ NON-EVM (adapters: Deliverable 4) ================ tron: native: {symbol: TRX, min: 500000, decimals: 6} family: tron block_time: 3 confirmations: 20 # ~solidity (SR 2/3) depth rpcs: - {url: "https://api.trongrid.io", rps: 3, burst: 5} # keyless: dynamic throttle + 30s 403 penalty - https://tron-rpc.publicnode.com # serves /wallet/* HTTP API keyless # bonus: https://tron-evm-rpc.publicnode.com speaks eth_-style JSON-RPC solana: native: {symbol: SOL, min: 1000, decimals: 9} family: solana block_time: 0.4 confirmations: 0 # index at 'finalized' commitment rpcs: - https://solana-rpc.publicnode.com # best keyless option - {url: "https://api.mainnet-beta.solana.com", rps: 4, burst: 8} # 100 req/10s/IP, 40/10s/method ton: family: ton block_time: 5 confirmations: 0 rpcs: - {url: "https://toncenter.com/api/v3/", rps: 0.9, burst: 1} # keyless: 1 req/s HARD limit - {url: "https://toncenter.com/api/v2/", rps: 0.9, burst: 1} xrpl: family: xrpl block_time: 4 # ledger close time confirmations: 0 # validated ledgers are final rpcs: - https://s1.ripple.com:51234/ - https://xrplcluster.com/ - https://s2.ripple.com:51234/ stellar: family: stellar block_time: 5 confirmations: 0 rpcs: - {url: "https://horizon.stellar.org", rps: 0.9, burst: 3} # ~3600 req/h/IP; only ~1y history noble: family: cosmos block_time: 6 confirmations: 0 # CometBFT instant finality rpcs: # CometBFT RPC - https://noble-rpc.polkachu.com - https://rpc.lavenderfive.com:443/noble rest: # LCD - https://noble-api.polkachu.com - https://rest.lavenderfive.com:443/noble aptos: family: aptos block_time: 0.3 confirmations: 0 rpcs: - {url: "https://fullnode.mainnet.aptoslabs.com/v1", rps: 5, burst: 10} # anonymous CU quota per IP sui: family: sui block_time: 0.5 # checkpoint cadence confirmations: 0 rpcs: - https://sui-rpc.publicnode.com # classic JSON-RPC, keyless - https://graphql.mainnet.sui.io/graphql # official GraphQL # official fullnode JSON-RPC shut down July 2026 — do not use # https://fullnode.mainnet.sui.io (gRPC only now) algorand: family: algorand block_time: 2.8 confirmations: 0 rpcs: # algod - https://mainnet-api.4160.nodely.dev rest: # Nodely indexer - https://mainnet-idx.4160.nodely.dev near: family: near block_time: 1.2 confirmations: 0 rpcs: - https://free.rpc.fastnear.com - https://near.drpc.org # rpc.mainnet.near.org is deprecated (Jun 2025) — do not rely on it tezos: family: tezos block_time: 8 confirmations: 2 rpcs: - https://rpc.tzbeta.net - https://mainnet.smartpy.io - https://rpc.tzkt.io/mainnet rest: - https://api.tzkt.io # TzKT indexer — ideal for FA2 transfers hedera: family: hedera block_time: 2 # mirror-node "blocks" confirmations: 0 rpcs: - {url: "https://mainnet-public.mirrornode.hedera.com", rps: 10, burst: 20} # docs: ~50 req/s/IP; stay well under starknet: family: starknet block_time: 30 confirmations: 1 rpcs: - https://starknet-rpc.publicnode.com # spec v0.8 - https://rpc.starknet.lava.build polkadot_asset_hub: family: substrate block_time: 12 confirmations: 0 # GRANDPA finality rpcs: - https://polkadot-asset-hub-rpc.polkadot.io - https://statemint.api.onfinality.io/public eos: family: antelope block_time: 0.5 confirmations: 336 # ~last irreversible block distance rpcs: - https://eos.greymass.com - https://eos.api.eosnation.io bitcoin: family: bitcoin block_time: 600 confirmations: 1 start_offset: 3 native: {symbol: BTC, min: 5, decimals: 8} # record outputs >= 5 BTC rpcs: # esplora-compatible REST - {url: "https://mempool.space/api", rps: 2, burst: 4} - {url: "https://blockstream.info/api", rps: 2, burst: 4}