[rpc] section configures the JSON RPC and WebSocket interfaces that allow clients to query chain state and submit transactions.
Basic RPC Configuration
integer
default:"0"
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.boolean
default:"false"
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.boolean
default:"false"
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.string
default:""
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.string
default:""
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
boolean
default:"false"
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.boolean
default:"false"
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.boolean
default:"false"
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
boolean
default:"false"
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.boolean
default:"false"
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
boolean
default:"true"
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