Guide
Solana clients
Three implementations and a fourth thing people call a client, why an RPC node is a different job from a validator, and why getVersion cannot tell you which one you are talking to.
Three implementations, and a fourth thing people call a client
- Agave
- The descendant of the original validator software, now stewarded by Anza. Still the majority of the network and still what most operators run.
- Firedancer
- A from-scratch implementation in C, by Jump Crypto, built for throughput. The point of it is the same as Ethereum’s five clients: a second implementation that does not share a codebase and therefore does not share bugs.
- Frankendancer
- The hybrid that got there first — Firedancer’s networking layer in front of Agave’s runtime and consensus. It let operators take the performance work without waiting for a complete second implementation, and it is why the transition has been gradual rather than a flag day.
- Jito-Solana
- An Agave fork adding MEV auction and tip distribution. Widely run, but not a separate implementation — a bug in Agave is a bug in Jito-Solana, so it does not contribute to client diversity even though it appears as a distinct name in operator surveys.
Serving RPC is a separate job from validating
An RPC node is a validator with voting turned off and the full RPC API turned on, and it is materially more expensive than a voting validator — more memory, more disk, and account indexes a validator does not build. Sizing one from validator requirements is the mistake that produces a node permanently behind the cluster; running a Solana RPC node has the numbers.
[these RPC options] are passed to the Agave client
So the second implementation is a consensus and networking story rather than an RPC one. If what you care about is the endpoint your application calls, the relevant question is still which solana-core version is answering it.
What getVersion can and cannot tell you
Solana’s equivalent of web3_clientVersion returns two fields, and the second is the more interesting one:
curl -s https://api.mainnet-beta.solana.com \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getVersion"}'{"jsonrpc":"2.0","result":{"feature-set":565236538,"solana-core":"4.2.0"},"id":1}- solana-core — the version, not the implementation
- Agave reports one, and so do the Firedancer variants, which build Agave components. The RPC cannot tell you which implementation is behind it, and nothing on this site pretends otherwise.
- feature-set — which rules the binary knows about
- An identifier for the set of protocol features the running build carries. Two nodes on one version with different feature sets are running the same code with different features compiled in, which a version string alone would hide.
No endpoint has answered the question yet.
Client software is read from web3_clientVersion and getVersion, which every endpoint is asked on a fifteen-minute cycle. This fills in as answers arrive.
If you are choosing between endpoints rather than running one, the Solana rankings measure what these actually do, and the method matrix covers which of them answer what.