Networks and RPC
The job: every balance, fee quote and broadcast goes through a node. This is where most wallet outages come from: a rate limit, a node that lags, a method the plan doesn’t serve.
In the kit:
- Every
wallet-*package takes a list of endpoints and fails over in order, with a few retries across the list. networksholds the catalog of mainnets, each with public RPCs to fail over through. It also stores the RPCs and custom networks the user adds, andverifyNetwork()checks that an endpoint really serves the chain it claims before you trust it. See the Networks guide.
What each chain package talks to
Section titled “What each chain package talks to”| Chain | Package expects | Public / free to start | Production options |
|---|---|---|---|
| EVM | JSON-RPC URL or EIP-1193 provider | PublicNode, endpoints on Chainlist | QuickNode, Alchemy, Infura, dRPC, Ankr, Chainstack |
| Solana | JSON-RPC URL | Public clusters (not for production) | Helius, QuickNode, Alchemy |
| TON | toncenter v2 JSON-RPC; tonapi or toncenter v3 for emulation | toncenter (low limit without a key), tonapi | toncenter / tonapi with a key, QuickNode |
| Tron | Full-node HTTP API | TronGrid (low limit without a key) | TronGrid with a key, QuickNode, GetBlock |
| Bitcoin | Esplora or Blockbook HTTP | mempool.space, Blockstream | QuickNode Blockbook, your own Blockbook / Esplora / mempool |
| NEAR | JSON-RPC | FastNEAR | NEAR RPC providers |
| Zcash | Blockchair or Blockbook | Blockchair (low limit without a key) | Blockchair with a key, your own Blockbook |
How we run it. Our reference wallet uses QuickNode for its EVM chains, with public endpoints as fallbacks. That is one setup that works, not the only one.
Choosing a provider
Section titled “Choosing a provider”| Option | Good for | Watch out |
|---|---|---|
| Public endpoints | Prototypes, fallback | Rate limits. Many refuse eth_getLogs without an address filter, archive reads, or eth_simulateV1 |
| Paid providers | Production | Each plan has its own eth_getLogs block window (QuickNode: 10 000 blocks), per-method credit costs and per-second limits |
| Your own node | Full control | You run it: disks, upgrades, monitoring |
Before you pick, check the methods your features need on that provider’s plan:
| Feature | Needs |
|---|---|
| Review before signing | eth_simulateV1 (EVM). Public endpoints on Ethereum, Base, Arbitrum, Optimism, Polygon and BNB Chain had it when we checked; Avalanche did not |
| Approvals | eth_getLogs without an address filter, over long block ranges. Most free endpoints refuse it |
| History on Solana | getSignaturesForAddress and getTransaction with full history |
| Old transactions | Archive data |
Keep keys off the client
Section titled “Keep keys off the client”A paid RPC key shipped inside an app or an extension is public: anyone can extract it and spend your credits. Three ways out:
- A proxy on your server that adds the key (Your server).
- Allow-listing on the provider’s dashboard: restrict the key to your app’s bundle id or origin, and to the methods you use. This limits abuse; it does not hide the key.
- Client-safe keys, where the provider designs them for that (toncenter, for one).
Let users bring their own RPC
Section titled “Let users bring their own RPC”Power users want their own node, and some regions block public providers. networks stores
user RPCs per chain, can use only the user’s RPC when asked, verifies the endpoint
before use, and parks endpoints that fail with the reason. Label screens that ran through a
user RPC: a simulation from an unknown node is not a guarantee.