[rpc] section configures the JSON RPC and WebSocket interfaces that allow clients to query chain state and submit transactions.
Basic RPC Configuration
If nonzero, enable JSON RPC on this port, and use the next port for the RPC websocket. If zero, disable JSON RPC.This option is passed to the Agave client with the
--rpc-port argument.If true, all RPC operations are enabled on this validator, including non-default RPC methods for querying chain state and transaction history.This option is passed to the Agave client with the
--full-rpc-api argument.If the RPC is private, the validator’s open RPC port is not published in the
solana gossip command for use by others.This option is passed to the Agave client with the --private-rpc argument.The address to bind the RPC port. If no address is specified, the default RPC bind address is 127.0.0.1 if
[rpc.private] = true, otherwise it’s 0.0.0.0.This option is passed to the Agave client with the --rpc-bind-address argument.RPC address for the validator to advertise publicly in gossip. Useful for validators running behind a load balancer or proxy.This option is passed to the Agave client with the
--public-rpc-address argument.Transaction History
Enable historical transaction info over JSON RPC, including the
getConfirmedBlock API. This will cause an increase in disk usage and IOPS.This option is passed to the Agave client with the --enable-rpc-transaction-history argument.If enabled, include CPI inner instructions, logs, and return data in the historical transaction info stored.This option is passed to the Agave client with the
--enable-extended-tx-metadata-storage argument.If enabled, fetch historical transaction info from a BigTable instance as a fallback to local ledger data when serving RPC requests. The
GOOGLE_APPLICATION_CREDENTIALS environment variable must be set to access BigTable.This option is passed to the Agave client with the --enable-rpc-bigtable-ledger-storage argument.RPC PubSub
If true, enable the unstable RPC PubSub
blockSubscribe subscription.This option is passed to the Agave client with the --rpc-pubsub-enable-block-subscription argument.If true, enable the unstable RPC PubSub
voteSubscribe subscription.This option is passed to the Agave client with the --rpc-pubsub-enable-vote-subscription argument.Known Validators
If true, use the RPC service of known validators only.This option is passed to the Agave client with the
--only-known-rpc argument.Configuration Examples
RPC Node Considerations
For public RPC nodes, consider:
- Setting
full_api = trueto enable all RPC methods - Enabling
transaction_historyfor historical queries - Using
public_addressif behind a load balancer - Adequate disk space and IOPS for historical data
Public vs Private RPC
Public RPC:- Set
private = falseto advertise in gossip - Bind to
0.0.0.0to accept external connections - Enable rate limiting and monitoring
- Ensure adequate bandwidth and resources
- Set
private = trueto hide from gossip - Bind to
127.0.0.1for local-only access - Use for validator operations or trusted internal services
- Lower resource requirements
Disabled RPC
Setport = 0 to completely disable RPC. This is recommended for:
- Pure consensus validators (not serving RPC)
- Maximum performance and minimal attack surface
- Validators that don’t need to process RPC queries