Skip to content

Solana

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.


Solana’s innovative consensus combines two key components:

ComponentDescription
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
FeatureValueDescription
Block Time~0.4 secondsExtremely fast block confirmation
TPS65,000+Theoretical maximum transactions per second
Finality~0.4-1.2 secondsFast transaction finality
Block SizeUp to 128 MBLarge blocks enabling high throughput
TokenSOLNative cryptocurrency
┌─────────────────────────────────────────────────────────────┐
│ SOLANA NETWORK │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Validator │◄──►│ Validator │◄──►│ Validator │ │
│ │ (Leader) │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Proof of History (PoH) │ │
│ │ (Cryptographic Clock / Event Log) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ RPC Node │ │ RPC Node │ │ RPC Node │ │
│ │ (API) │ │ (API) │ │ (API) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Solana’s high performance requires substantial hardware resources:

ComponentMinimumRecommendedNotes
CPU16 cores32+ coresHigh single-thread performance preferred
RAM128 GB256 GBValidator operations are memory-intensive
Storage1 TB NVMe2 TB NVMeSSD must support high IOPS
Network1 Gbps10 GbpsHigh bandwidth for block propagation
ComponentMinimumRecommended
CPU8 cores16+ cores
RAM64 GB128 GB
Storage500 GB NVMe1 TB NVMe
Network500 Mbps1 Gbps
  • 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
  • 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 GB

Section titled “Method 1: Using the Official Installer (Recommended)”
Terminal window
# Install the latest stable version
sh -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 installation
solana --version
Terminal window
# Install Rust if not already installed
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
# Install dependencies
sudo apt-get update
sudo apt-get install -y \
build-essential \
pkg-config \
libssl-dev \
libudev-dev \
protobuf-compiler
# Clone and build
git clone https://github.com/solana-labs/solana.git
cd solana
git checkout v1.18.4
cargo build --release
Terminal window
# Pull the official image
docker pull solanalabs/solana:v1.18.4
# Run a validator
docker 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 3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63acbea2

Terminal window
# Generate identity keypair
solana-keygen new -o ~/validator-identity.json
# Verify
solana-keygen verify ~/validator-identity.json
Terminal window
# Generate vote account keypair
solana-keygen new -o ~/vote-account.json
Terminal window
# Create configuration directory
mkdir -p ~/.solana
# Create config file
nano ~/.solana/validator.yml
~/.solana/validator.yml
network: mainnet-beta
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
- DE1baw4r4KV2dNzP4r8NQjvQKK9L4b2z6uB7FYP7cK
- 3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63acbea2
known-validator:
- 3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63acbea2
- 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN
- DDnAqxXXo2sGNn2irj3A4u6xL6x7xYKbBc8V3EE8rKC
# GPU configuration (if using)
gpu:
- 0
Terminal window
# Using the configuration file
solana-validator --config ~/.solana/validator.yml
# Or with command-line arguments
solana-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.log

Terminal window
# Basic RPC 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 \
--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-size
EndpointDescription
http://localhost:8899HTTP RPC
http://localhost:8900WebSocket
http://localhost:8899/healthHealth check
Terminal window
# Get current slot
curl -X POST http://localhost:8899 -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
# Get block
curl -X POST http://localhost:8899 -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getBlock","params":[100]}'
# Get transaction
curl -X POST http://localhost:8899 -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getTransaction","params":["tx_hash"]}'
# Get cluster nodes
curl -X POST http://localhost:8899 -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getClusterNodes"}'
# Get inflation reward
curl -X POST http://localhost:8899 -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getInflationReward","params":["vote_account"]}'

RequirementMainnet Value
Minimum Stake10,000 SOL (initial)
Rent Exemption~0.035 SOL
Server CostsHigh (see hardware requirements)
Terminal window
# Create stake account
solana create-stake-account ~/stake-account.json 10000 SOL \
--from ~/validator-identity.json
# Authorize vote account
solana authorize-staker ~/stake-account.json ~/vote-account.json \
--from ~/validator-identity.json
Terminal window
# Delegate stake to validator
solana delegate-stake ~/stake-account.json ~/vote-account.json \
--from ~/validator-identity.json

Terminal window
# Check validator status
solana validator-info get
# View slot production
solana slot
# Check gossip network
solana gossip
# View account balance
solana balance ~/validator-identity.json

Solana exposes Prometheus metrics on port 9342:

Terminal window
# Enable metrics
solana-validator --metrics ...
# Or set environment variable
export SOLANA_METRICS_CONFIG="host=metrics.solana.com:9090"
MetricDescriptionAlert Threshold
validator_processed_blockstore_etcBlocks processed< 100/min
validator_confirmed_root_slotConfirmed root slotNot advancing
cluster_num_nodesNumber of nodesSudden drop
vote_signaturesVote signaturesNot increasing
Terminal window
# Install monitor
cargo install solana-validator-monitor
# Run
solana-validator-monitor

Terminal window
# Increase swap
sudo fallocate -l 64G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Or add to /etc/fstab for permanent
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Terminal window
# Check if CPU throttling is occurring
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# Set to performance mode
sudo cpupower frequency-set -g performance
# Disable hyperthreading if needed
Terminal window
# Check ledger integrity
solana-validator --ledger ~/ledger ledger-tool verify
# If corrupted, delete and resync
rm -rf ~/ledger
solana-validator --ledger ~/ledger ...
Terminal window
# Check firewall rules
sudo ufw status
# Ensure these ports are open:
# - 8000-8012 UDP/TCP (Solana P2P)
# - 8899 TCP (RPC)
# - 8900 TCP (WebSocket)
# Test connectivity
solana-gossip spy --entrypoint entrypoint.mainnet-beta.solana.com:8001
Terminal window
# View recent logs
tail -f ~/solana-validator.log
# Search for errors
grep -i error ~/solana-validator.log
# Check for skipped slots
grep "skipped slot" ~/solana-validator.log

Terminal window
# Store keys on hardware wallet (recommended for validators)
# Use ledger for production validators
# For development/testing, use file-based keys with proper permissions
chmod 600 ~/validator-identity.json
chmod 600 ~/vote-account.json
Terminal window
# Allow P2P connections
sudo ufw allow 8000:8012/udp
sudo ufw allow 8000:8012/tcp
# Allow RPC (restrict to your IP)
sudo ufw allow from YOUR_IP to any port 8899/tcp
# Allow SSH
sudo ufw allow 22/tcp
Terminal window
# Create systemd service
sudo nano /etc/systemd/system/solana-validator.service
[Unit]
Description=Solana Validator
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu
ExecStart=/home/ubuntu/.local/share/solana/install/active_release/bin/solana-validator --config /home/ubuntu/validator.yml
Restart=always
RestartSec=10
StandardOutput=append:/home/ubuntu/solana-validator.log
StandardError=append:/home/ubuntu/solana-validator.log
[Install]
WantedBy=multi-user.target
Terminal window
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable solana-validator
sudo systemctl start solana-validator
# Check status
sudo systemctl status solana-validator

Terminal window
# Start validator on testnet
solana-validator \
--identity ~/validator-identity.json \
--vote-account ~/vote-account.json \
--rpc-port 8899 \
--entrypoint entrypoint.testnet.solana.com:8001 \
--known-validator 5D1TtaqWb7m1L4Z8g8vK3vYJ3X6Z8Y2Z1X5Z8Y2Z1X5 \
--testnet
Terminal window
# For development
solana-validator \
--identity ~/validator-identity.json \
--vote-account ~/vote-account.json \
--rpc-port 8899 \
--entrypoint entrypoint.devnet.solana.com:8001 \
--known-validator 7Np41oe9qjpve9aasWTU21E8C4H3wMLBTs9BGMBR3AN \
--devnet

  • 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

In Chapter 51: Avalanche Nodes, we’ll explore Avalanche blockchain node setup.


Last Updated: 2026-02-22