Skip to main content
The [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

Enabling transaction_history and extended_tx_metadata_storage will significantly increase disk usage and I/O requirements. Ensure your storage can handle the additional load.
For public RPC nodes, consider:
  • Setting full_api = true to enable all RPC methods
  • Enabling transaction_history for historical queries
  • Using public_address if behind a load balancer
  • Adequate disk space and IOPS for historical data

Public vs Private RPC

Public RPC:
  • Set private = false to advertise in gossip
  • Bind to 0.0.0.0 to accept external connections
  • Enable rate limiting and monitoring
  • Ensure adequate bandwidth and resources
Private RPC:
  • Set private = true to hide from gossip
  • Bind to 127.0.0.1 for local-only access
  • Use for validator operations or trusted internal services
  • Lower resource requirements

Disabled RPC

Set port = 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