Currently the Solana RPC is coupled to the validator. This creates a few issues/bottlenecks
- Validator upgrades require coordination with RPC operators
- RPC upgrades requires restarting validator which is slow
- RPC horizontal scaling requires setting up a full node
- Heavy RPC load can take down a validator
- If there is a bug in the validator taking down the network, this also impacts RPC’s ability to serve read traffic - even though there is no good reason this should be the case
- RPC nodes pollute gossip/turbine with packets. Currently there are over 800 RPC nodes adding to the bandwidth required to run an RPC node
This work proposes ways to decouple the RPC and validator client.
NOTE: This document does not include cNFT support in its design.
Option 1

This is the most flexible/scalable option, it has the following benefits
- Easily horizontally scale adapter (can run on/off validator machine)
- Upgrade adapter without requiring validator restart
- Allows use of multiple adapters for different use cases (eg. adapters to feed account data, stake data, archival data, etc…). There are benefits to splitting these workloads because of the different requirements for scale/processing. A concrete example in practice is seen in the DAS system. Here cNFT’s are indexed via txns, whereas regular NFT’s are indexed via account updates in geyser. These have vastly different throughput requirements and benefits are seen splitting the adapters for them.
Drawbacks
- Extra network hop
- More components to manage
Option 2