Validator Configuration
This guide covers all the configuration options available for the Harmonic Salsa validator.Core Configuration
Identity and Vote Account
--identity (required)
Path to the validator’s identity keypair.
--vote-account
Public key or keypair for the vote account. Required for consensus participation.
--authorized-voter
Additional authorized voter keypairs. Can be specified multiple times.
Ledger and Storage
--ledger
Directory for ledger storage.
--accounts
Persistent accounts storage location. Can be specified multiple times for multiple drives.
--account-shrink-path
Path for accounts shrink operations.
--snapshots
Base directory for snapshots.
--tower
Directory for tower storage (voting record).
Network Configuration
--entrypoint
Gossip entrypoint for network bootstrapping. Specify multiple for redundancy.
--known-validator
Trusted validators for snapshot and genesis verification. Specify multiple.
--bind-address
IP address to bind validator ports. Can be specified multiple times.
--gossip-port
Port for gossip protocol.
--dynamic-port-range
Range of ports for dynamically assigned services.
--public-tpu-address
Public TPU address to advertise in gossip.
--public-rpc-address
Public RPC address to advertise (when running RPC behind load balancer).
RPC Configuration
Basic RPC Settings
--rpc-port
Enable JSON-RPC on specified port.
--rpc-bind-address
IP address for RPC server.
--private-rpc
Do not publish RPC port in gossip.
Advanced RPC Options
--full-rpc-api
Enable all RPC methods (use with caution).
--no-port-check
Skip TCP/UDP port reachability checks at startup.
Snapshot Configuration
Snapshot Intervals
--snapshot-interval-slots
Slots between incremental snapshots.
--full-snapshot-interval-slots
Slots between full snapshots.
Snapshot Retention
--maximum-full-snapshots-to-retain
Number of full snapshots to keep.
--maximum-incremental-snapshots-to-retain
Number of incremental snapshots to keep.
Snapshot Archives
--full-snapshot-archive-path
Directory for full snapshot archives.
--incremental-snapshot-archive-path
Directory for incremental snapshot archives.
--snapshot-archive-format
Compression format for snapshots.
bz2, gzip, zstd, lz4, tar, none
--snapshot-version
Snapshot version format.
Snapshot Behavior
--no-snapshots
Disable all snapshot generation.
--maximum-local-snapshot-age
Reuse local snapshot if less than this many slots behind.
--minimal-snapshot-download-speed
Minimum download speed (bytes/second) before retrying.
Performance Tuning
Accounts Database
--accounts-db-cache-limit-mb
Write cache size for accounts database (MB).
--accounts-index-bins
Number of bins for accounts index (must be power of 2).
--enable-accounts-disk-index
Enable disk-based accounts index to reduce memory usage.
--accounts-index-path
Path for disk-based accounts index. Requires --enable-accounts-disk-index.
--accounts-shrink-ratio
Ratio threshold for accounts shrinking (0.0-1.0).
Ledger Limits
--limit-ledger-size
Maximum ledger shreds to retain.
RocksDB Configuration
--rocksdb-shred-compaction
RocksDB compaction style for shreds.
--rocksdb-ledger-compression
Compression for transaction status data.
none, lz4, snappy, zlib
TPU/QUIC Configuration
--tpu-connection-pool-size
TPU connection pool size per remote address.
--num-quic-endpoints
Number of QUIC endpoints for TPU.
Increasing this can improve throughput at the cost of higher CPU usage.
--tpu-max-staked-connections
Max concurrent connections from staked nodes.
--tpu-max-unstaked-connections
Max concurrent connections from unstaked nodes.
Block Production and Verification
--block-production-method
Method for block production.
--block-verification-method
Method for block verification.
--unified-scheduler-handler-threads
Number of handler threads for unified scheduler.
Account Indexing
--account-index
Enable specific account indexes.
program-id: Index by program ownerspl-token-owner: Index by SPL token ownerspl-token-mint: Index by SPL token mint
--account-index-exclude-key
Exclude specific keys from indexing.
Logging
Log Configuration
--log
Log file path. Use - for stderr.
Log Filtering
Set log levels using theRUST_LOG environment variable:
Advanced Options
Genesis and Fork Configuration
--expected-genesis-hash
Require specific genesis hash.
--expected-shred-version
Require specific shred version.
--wait-for-supermajority
Wait for supermajority before starting PoH (coordinated restarts).
--hard-fork
Specify hard fork slots.
Voting Configuration
--no-voting
Disable voting (run as RPC node).
--vote-use-quic
Use QUIC for sending votes.
Repair Configuration
--repair-validator
Limit repair requests to specific validators.
--gossip-validator
Limit gossip to specific validators.
Miscellaneous
--init-complete-file
Create file when validator initialization completes.
--skip-startup-ledger-verification
Skip ledger verification at startup (faster but risky).
--require-tower
Refuse to start without saved tower state.
Harmonic-Specific Configuration
Block Engine
--block-engine-url
Connect to a block engine for optimized block production.
Relayer
--relayer-url
Connect to a relayer service.
Geyser Plugins
Plugin Configuration
--geyser-plugin-config
Load Geyser plugin configuration. Can be specified multiple times.
--geyser-plugin-always-enabled
Enable Geyser interface even without plugin configs.
Configuration File Format
You can use a configuration file instead of command-line arguments:Best Practices
Separate Drives
Use separate NVMe drives for ledger, accounts, and snapshots for optimal I/O performance.
Limit Ledger Size
Always set
--limit-ledger-size to prevent disk exhaustion.Enable Snapshots
Generate snapshots regularly to enable faster recovery and help the network.
Monitor Resources
Use appropriate limits for QUIC connections based on your hardware capacity.
Next Steps
Operations
Learn about day-to-day operations
Monitoring
Set up comprehensive monitoring
Troubleshooting
Troubleshoot configuration issues