Solana
Chapter 50: Solana Node Setup
Section titled “Chapter 50: Solana Node Setup”Overview
Section titled “Overview”Solana is a high-performance blockchain platform known for its exceptional throughput and fast block times. It uses a unique Proof of History (PoH) consensus mechanism combined with Proof of Stake (PoS) to achieve throughput of 65,000+ transactions per second. Running a Solana node allows you to participate in network validation, build decentralized applications, or provide RPC services.
50.1 Solana Architecture
Section titled “50.1 Solana Architecture”Consensus Mechanism
Section titled “Consensus Mechanism”Solana’s innovative consensus combines two key components:
| Component | Description |
|---|---|
| Proof of History (PoH) | A cryptographic clock that creates a historical record of events, allowing nodes to agree on the order of transactions without waiting for global synchronization |
| Proof of Stake (PoS) | Tower BFT (Byzantine Fault Tolerance) consensus where validators stake SOL tokens to participate in block production |
Key Features
Section titled “Key Features”| Feature | Value | Description |
|---|---|---|
| Block Time | ~0.4 seconds | Extremely fast block confirmation |
| TPS | 65,000+ | Theoretical maximum transactions per second |
| Finality | ~0.4-1.2 seconds | Fast transaction finality |
| Block Size | Up to 128 MB | Large blocks enabling high throughput |
| Token | SOL | Native cryptocurrency |
Network Components
Section titled “Network Components”┌─────────────────────────────────────────────────────────────┐│ SOLANA NETWORK │├─────────────────────────────────────────────────────────────┤│ ││ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ││ │ Validator │◄──►│ Validator │◄──►│ Validator │ ││ │ (Leader) │ │ │ │ │ ││ └─────────────┘ └─────────────┘ └─────────────┘ ││ │ │ │ ││ ▼ ▼ ▼ ││ ┌─────────────────────────────────────────────────────┐ ││ │ Proof of History (PoH) │ ││ │ (Cryptographic Clock / Event Log) │ ││ └─────────────────────────────────────────────────────┘ ││ ││ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ││ │ RPC Node │ │ RPC Node │ │ RPC Node │ ││ │ (API) │ │ (API) │ │ (API) │ ││ └─────────────┘ └─────────────┘ └─────────────┘ ││ │└─────────────────────────────────────────────────────────────┘50.2 Hardware Requirements
Section titled “50.2 Hardware Requirements”For Mainnet Validators
Section titled “For Mainnet Validators”Solana’s high performance requires substantial hardware resources:
| Component | Minimum | Recommended | Notes |
|---|---|---|---|
| CPU | 16 cores | 32+ cores | High single-thread performance preferred |
| RAM | 128 GB | 256 GB | Validator operations are memory-intensive |
| Storage | 1 TB NVMe | 2 TB NVMe | SSD must support high IOPS |
| Network | 1 Gbps | 10 Gbps | High bandwidth for block propagation |
For RPC Nodes
Section titled “For RPC Nodes”| Component | Minimum | Recommended |
|---|---|---|
| CPU | 8 cores | 16+ cores |
| RAM | 64 GB | 128 GB |
| Storage | 500 GB NVMe | 1 TB NVMe |
| Network | 500 Mbps | 1 Gbps |
Hardware Recommendations
Section titled “Hardware Recommendations”CPU Considerations
Section titled “CPU Considerations”- Single-thread performance matters more than core count
- AMD Zen 2/3/4 or Intel Ice Lake+ recommended
- Avoid ARM-based processors for validators
- ECC RAM strongly recommended for validators
Storage Requirements
Section titled “Storage Requirements”- NVMe SSD is mandatory - SATA SSDs cannot handle Solana’s IOPS requirements
- Enterprise-grade NVMe preferred for validators
- Expected mainnet storage growth: ~50GB per year for validator
Storage Growth Estimate:├── Year 1: ~100 GB (full history)├── Year 2: ~150 GB└── Year 3: ~200 GB50.3 Installation
Section titled “50.3 Installation”Method 1: Using the Official Installer (Recommended)
Section titled “Method 1: Using the Official Installer (Recommended)”# Install the latest stable versionsh -c "$(curl -sSfL "https://release.solana.com/v1.18.4/install")"
# Add to PATH (add to ~/.bashrc or ~/.zshrc)export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH"
# Verify installationsolana --versionMethod 2: Building from Source
Section titled “Method 2: Building from Source”# Install Rust if not already installedcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shsource ~/.cargo/env
# Install dependenciessudo apt-get updatesudo apt-get install -y \ build-essential \ pkg-config \ libssl-dev \ libudev-dev \ protobuf-compiler
# Clone and buildgit clone https://github.com/solana-labs/solana.gitcd solanagit checkout v1.18.4cargo build --releaseMethod 3: Using Docker
Section titled “Method 3: Using Docker”# Pull the official imagedocker pull solanalabs/solana:v1.18.4
# Run a validatordocker run -d \ --name solana-validator \ --restart unless-stopped \ -p 8000-8001:8000-8001 \ -p 8900-8902:8900-8902 \ -p 8000-8012:8000-8012/udp \ -v solana-data:/root/.solana \ solanalabs/solana:v1.18.4 \ solana-validator \ --identity /root/.solana/validator-identity.json \ --vote-account /root/.solana/vote-account.json \ --rpc-port 8899 \ --entrypoint entrypoint.mainnet-beta.solana.com:8001 \ --known-validator 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN \ --known-validator DE1baw4r4KV2dNzP4r8NQjvQKK9L4b2z6uB7FYP7cK \ --known-validator 3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63acbea250.4 Configuration
Section titled “50.4 Configuration”Creating a Validator Identity
Section titled “Creating a Validator Identity”# Generate identity keypairsolana-keygen new -o ~/validator-identity.json
# Verifysolana-keygen verify ~/validator-identity.jsonCreating a Vote Account
Section titled “Creating a Vote Account”# Generate vote account keypairsolana-keygen new -o ~/vote-account.jsonConfiguration File
Section titled “Configuration File”# Create configuration directorymkdir -p ~/.solana
# Create config filenano ~/.solana/validator.ymlnetwork: mainnet-betaidentity: ~/validator-identity.jsonvote-account: ~/vote-account.jsonrpc-port: 8899dynamic-port-range: 8000-8012entrypoint: entrypoint.mainnet-beta.solana.com:8001known-validator: - 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN - DE1baw4r4KV2dNzP4r8NQjvQKK9L4b2z6uB7FYP7cK - 3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63acbea2known-validator: - 3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63acbea2 - 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN - DDnAqxXXo2sGNn2irj3A4u6xL6x7xYKbBc8V3EE8rKC# GPU configuration (if using)gpu: - 0Starting the Validator
Section titled “Starting the Validator”# Using the configuration filesolana-validator --config ~/.solana/validator.yml
# Or with command-line argumentssolana-validator \ --identity ~/validator-identity.json \ --vote-account ~/vote-account.json \ --rpc-port 8899 \ --dynamic-port-range 8000-8012 \ --entrypoint entrypoint.mainnet-beta.solana.com:8001 \ --known-validator 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN \ --known-validator DE1baw4r4KV2dNzP4r8NQjvQKK9L4b2z6uB7FYP7cK \ --known-validator 3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63acbea2 \ --limit-ledger-size 10000000000 \ --log ~/solana-validator.log50.5 RPC Node Setup
Section titled “50.5 RPC Node Setup”Starting an RPC Node
Section titled “Starting an RPC Node”# Basic RPC nodesolana-validator \ --identity ~/validator-identity.json \ --rpc-port 8899 \ --dynamic-port-range 8000-8012 \ --entrypoint entrypoint.mainnet-beta.solana.com:8001 \ --known-validator 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN \ --known-validator DE1baw4r4KV2dNzP4r8NQjvQKK9L4b2z6uB7FYP7cK \ --only-known-rpc
# Full history RPC (Archive node)solana-validator \ --identity ~/validator-identity.json \ --rpc-port 8899 \ --dynamic-port-range 8000-8012 \ --entrypoint entrypoint.mainnet-beta.solana.com:8001 \ --known-validator 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN \ --no-limit-ledger-sizeRPC API Endpoints
Section titled “RPC API Endpoints”| Endpoint | Description |
|---|---|
http://localhost:8899 | HTTP RPC |
http://localhost:8900 | WebSocket |
http://localhost:8899/health | Health check |
Common RPC Methods
Section titled “Common RPC Methods”# Get current slotcurl -X POST http://localhost:8899 -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
# Get blockcurl -X POST http://localhost:8899 -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getBlock","params":[100]}'
# Get transactioncurl -X POST http://localhost:8899 -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getTransaction","params":["tx_hash"]}'
# Get cluster nodescurl -X POST http://localhost:8899 -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getClusterNodes"}'
# Get inflation rewardcurl -X POST http://localhost:8899 -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getInflationReward","params":["vote_account"]}'50.6 Staking (For Validators)
Section titled “50.6 Staking (For Validators)”Requirements to Become a Validator
Section titled “Requirements to Become a Validator”| Requirement | Mainnet Value |
|---|---|
| Minimum Stake | 10,000 SOL (initial) |
| Rent Exemption | ~0.035 SOL |
| Server Costs | High (see hardware requirements) |
Creating Stake Account
Section titled “Creating Stake Account”# Create stake accountsolana create-stake-account ~/stake-account.json 10000 SOL \ --from ~/validator-identity.json
# Authorize vote accountsolana authorize-staker ~/stake-account.json ~/vote-account.json \ --from ~/validator-identity.jsonDelegating Stake
Section titled “Delegating Stake”# Delegate stake to validatorsolana delegate-stake ~/stake-account.json ~/vote-account.json \ --from ~/validator-identity.json50.7 Monitoring
Section titled “50.7 Monitoring”Important Metrics
Section titled “Important Metrics”# Check validator statussolana validator-info get
# View slot productionsolana slot
# Check gossip networksolana gossip
# View account balancesolana balance ~/validator-identity.jsonPrometheus Metrics
Section titled “Prometheus Metrics”Solana exposes Prometheus metrics on port 9342:
# Enable metricssolana-validator --metrics ...
# Or set environment variableexport SOLANA_METRICS_CONFIG="host=metrics.solana.com:9090"Key Metrics to Monitor
Section titled “Key Metrics to Monitor”| Metric | Description | Alert Threshold |
|---|---|---|
validator_processed_blockstore_etc | Blocks processed | < 100/min |
validator_confirmed_root_slot | Confirmed root slot | Not advancing |
cluster_num_nodes | Number of nodes | Sudden drop |
vote_signatures | Vote signatures | Not increasing |
Using solana-validator-monitor
Section titled “Using solana-validator-monitor”# Install monitorcargo install solana-validator-monitor
# Runsolana-validator-monitor50.8 Troubleshooting
Section titled “50.8 Troubleshooting”Common Issues
Section titled “Common Issues”1. Out of Memory
Section titled “1. Out of Memory”# Increase swapsudo fallocate -l 64G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile
# Or add to /etc/fstab for permanentecho '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab2. Slow Performance
Section titled “2. Slow Performance”# Check if CPU throttling is occurringcat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# Set to performance modesudo cpupower frequency-set -g performance
# Disable hyperthreading if needed3. Ledger Corruption
Section titled “3. Ledger Corruption”# Check ledger integritysolana-validator --ledger ~/ledger ledger-tool verify
# If corrupted, delete and resyncrm -rf ~/ledgersolana-validator --ledger ~/ledger ...4. Networking Issues
Section titled “4. Networking Issues”# Check firewall rulessudo ufw status
# Ensure these ports are open:# - 8000-8012 UDP/TCP (Solana P2P)# - 8899 TCP (RPC)# - 8900 TCP (WebSocket)
# Test connectivitysolana-gossip spy --entrypoint entrypoint.mainnet-beta.solana.com:8001Log Analysis
Section titled “Log Analysis”# View recent logstail -f ~/solana-validator.log
# Search for errorsgrep -i error ~/solana-validator.log
# Check for skipped slotsgrep "skipped slot" ~/solana-validator.log50.9 Security Best Practices
Section titled “50.9 Security Best Practices”Key Management
Section titled “Key Management”# Store keys on hardware wallet (recommended for validators)# Use ledger for production validators
# For development/testing, use file-based keys with proper permissionschmod 600 ~/validator-identity.jsonchmod 600 ~/vote-account.jsonFirewall Configuration
Section titled “Firewall Configuration”# Allow P2P connectionssudo ufw allow 8000:8012/udpsudo ufw allow 8000:8012/tcp
# Allow RPC (restrict to your IP)sudo ufw allow from YOUR_IP to any port 8899/tcp
# Allow SSHsudo ufw allow 22/tcpSystemd Service
Section titled “Systemd Service”# Create systemd servicesudo nano /etc/systemd/system/solana-validator.service[Unit]Description=Solana ValidatorAfter=network.target
[Service]Type=simpleUser=ubuntuWorkingDirectory=/home/ubuntuExecStart=/home/ubuntu/.local/share/solana/install/active_release/bin/solana-validator --config /home/ubuntu/validator.ymlRestart=alwaysRestartSec=10StandardOutput=append:/home/ubuntu/solana-validator.logStandardError=append:/home/ubuntu/solana-validator.log
[Install]WantedBy=multi-user.target# Enable and startsudo systemctl daemon-reloadsudo systemctl enable solana-validatorsudo systemctl start solana-validator
# Check statussudo systemctl status solana-validator50.10 Testnet vs Mainnet
Section titled “50.10 Testnet vs Mainnet”Testnet Commands
Section titled “Testnet Commands”# Start validator on testnetsolana-validator \ --identity ~/validator-identity.json \ --vote-account ~/vote-account.json \ --rpc-port 8899 \ --entrypoint entrypoint.testnet.solana.com:8001 \ --known-validator 5D1TtaqWb7m1L4Z8g8vK3vYJ3X6Z8Y2Z1X5Z8Y2Z1X5 \ --testnetDevnet Commands
Section titled “Devnet Commands”# For developmentsolana-validator \ --identity ~/validator-identity.json \ --vote-account ~/vote-account.json \ --rpc-port 8899 \ --entrypoint entrypoint.devnet.solana.com:8001 \ --known-validator 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN \ --devnetSummary
Section titled “Summary”- Solana uses Proof of History (PoH) combined with Proof of Stake for high throughput
- Hardware requirements are demanding: 16+ cores, 128GB+ RAM, NVMe SSD required
- Installation can be done via official installer, source build, or Docker
- Validators must stake minimum 10,000 SOL on mainnet
- RPC nodes provide API access but don’t participate in consensus
- Monitoring is critical - track slot production, vote signatures, and memory usage
- Security best practices include hardware wallets, firewall rules, and proper key permissions
- Testnet/devnet available for testing before mainnet deployment
Next Chapter
Section titled “Next Chapter”In Chapter 51: Avalanche Nodes, we’ll explore Avalanche blockchain node setup.
Last Updated: 2026-02-22