toll Qlorix
arrow_back Back to Blog
Tutorial May 5, 2026 · 9 min read

How to Run a Qlorix Validator Node: A Step-by-Step Guide

Everything you need to go from zero to a fully operational Qlorix validator - hardware selection, binary installation, key generation, QLX staking, and monitoring your node in production.

50,000

Min. QLX Stake

~8%

Base APY

99.5%

Target Uptime

What Does a Validator Actually Do?

Validators are the backbone of the Qlorix network. They receive new transactions from users and other nodes, execute them through the Block-STM parallel execution engine, propose new blocks, and then sign attestations confirming the validity of blocks proposed by other validators. When two-thirds plus one of all active validators sign an attestation for a block, that block achieves BFT finality and becomes permanently part of the chain.

Running a validator is a serious commitment. Your node needs to be online continuously because missed attestations reduce your rewards and, if your downtime is persistent, trigger a small slashing penalty on your stake. In exchange, you earn a share of block rewards proportional to your stake, plus a portion of transaction fees from every block processed during your active slots. This guide walks through every step from choosing hardware to watching your first rewards land.

Step 1 - Hardware Requirements

The Qlorix node binary is a single statically-linked executable that runs on any x86-64 Linux host. ARM64 is supported but not the recommended path for production validators. The minimum and recommended specifications differ significantly, and running at minimum spec will hurt your attestation performance under load.

Minimum (testnet / familiarization only):

  • CPU: 8 cores at 3.0 GHz or faster
  • RAM: 32 GB DDR4
  • Storage: 500 GB NVMe SSD (not SATA)
  • Network: 100 Mbps symmetric, stable connection
  • OS: Ubuntu 22.04 LTS or Debian 12

Recommended (mainnet production):

  • CPU: 16+ cores at 3.5 GHz or faster (AMD EPYC or Intel Xeon preferred)
  • RAM: 64 GB DDR5 ECC
  • Storage: 2 TB NVMe SSD with at least 5,000 MB/s sequential read
  • Network: 1 Gbps symmetric, ideally colocated at a Tier 3+ datacenter
  • OS: Ubuntu 22.04 LTS

The Block-STM execution engine benefits enormously from high single-core clock speed and fast NVMe latency. RAM is consumed by the multi-version data store during peak block processing. If your NVMe falls below the recommended spec, you will see latency spikes during busy blocks that push attestation timing past the deadline, causing missed votes.

Step 2 - Install Dependencies and the Qlorix Binary

Start with a fresh Ubuntu 22.04 server. Update the system and install the required dependencies before fetching the node binary.

# Update system packages sudo apt update && sudo apt upgrade -y # Install required dependencies sudo apt install -y curl wget git build-essential libssl-dev pkg-config # Create a dedicated system user for the validator process sudo useradd --system --no-create-home --shell /bin/false qlxvalidator # Create directories sudo mkdir -p /opt/qlorix /var/lib/qlorix /etc/qlorix sudo chown qlxvalidator:qlxvalidator /var/lib/qlorix

Now fetch the latest stable Qlorix node binary from the official release endpoint and verify its SHA-256 checksum before running it.

# Download the latest validator binary (replace VERSION with current release) export QLX_VERSION=1.4.2 wget https://releases.qlorix.com/validator/v${QLX_VERSION}/qlx-validator-linux-x86_64.tar.gz wget https://releases.qlorix.com/validator/v${QLX_VERSION}/qlx-validator-linux-x86_64.tar.gz.sha256 # Verify checksum sha256sum --check qlx-validator-linux-x86_64.tar.gz.sha256 # Extract and install tar -xzf qlx-validator-linux-x86_64.tar.gz sudo mv qlx-validator /opt/qlorix/qlx-validator sudo chmod +x /opt/qlorix/qlx-validator # Verify the binary runs /opt/qlorix/qlx-validator --version

Step 3 - Generate Validator Keys

Every Qlorix validator has two key pairs: an identity key that identifies your node on the peer-to-peer network, and a voting key used to sign block attestations. The voting key signs thousands of messages per day and must be kept on the hot server. The identity key can be rotated without affecting your stake. Both use CRYSTALS-Dilithium under the hood, giving them post-quantum security.

Important: The seed phrase output during key generation is the only way to recover your voting key if your server is destroyed. Write it down on paper and store it in at least two physically separate, secure locations. Do not store it digitally on any internet-connected device.

# Generate identity key sudo -u qlxvalidator /opt/qlorix/qlx-validator keygen \ --key-type identity \ --output /etc/qlorix/identity.key # Generate voting key (you will be prompted to save a seed phrase) sudo -u qlxvalidator /opt/qlorix/qlx-validator keygen \ --key-type vote \ --output /etc/qlorix/vote.key # Set restrictive permissions on key files sudo chmod 600 /etc/qlorix/identity.key /etc/qlorix/vote.key sudo chown qlxvalidator:qlxvalidator /etc/qlorix/identity.key /etc/qlorix/vote.key # Print your validator public key (you will need this for staking) /opt/qlorix/qlx-validator pubkey --key /etc/qlorix/vote.key

Copy the validator public key output from that last command. You will paste it into the staking transaction in the next step.

Step 4 - Configure the Node

Create the main configuration file at /etc/qlorix/validator.toml. The configuration below is a sensible production starting point.

# /etc/qlorix/validator.toml [node] identity_key_path = "/etc/qlorix/identity.key" vote_key_path = "/etc/qlorix/vote.key" data_dir = "/var/lib/qlorix" log_level = "info" [network] listen_addr = "0.0.0.0:8900" rpc_addr = "127.0.0.1:8899" # keep RPC local unless you need public access max_peers = 64 bootstrap_peers = [ "boot1.qlorix.com:8900", "boot2.qlorix.com:8900", "boot3.qlorix.com:8900" ] [execution] worker_threads = 14 # set to CPU core count minus 2 cache_size_mb = 4096 [metrics] enabled = true listen_addr = "127.0.0.1:9090" # Prometheus-compatible metrics endpoint

Open port 8900 in your firewall for inbound peer connections. Leave port 8899 (RPC) and port 9090 (metrics) bound to localhost only unless you have a specific reason to expose them.

# Allow validator peer port through ufw sudo ufw allow 8900/tcp sudo ufw enable

Step 5 - Create a systemd Service

Running the validator as a systemd service ensures it starts automatically on boot and restarts immediately if it crashes.

# /etc/systemd/system/qlx-validator.service [Unit] Description=Qlorix Validator Node After=network-online.target Wants=network-online.target [Service] Type=simple User=qlxvalidator ExecStart=/opt/qlorix/qlx-validator start \ --config /etc/qlorix/validator.toml Restart=on-failure RestartSec=5s LimitNOFILE=1000000 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target
# Enable and start the service sudo systemctl daemon-reload sudo systemctl enable qlx-validator sudo systemctl start qlx-validator # Check that the node is running and syncing sudo systemctl status qlx-validator journalctl -u qlx-validator -f

Watch the logs for lines like syncing blocks height=XXXXXX. Wait until the node reaches the current chain tip before proceeding to the staking step. Depending on how far behind your node started, this can take anywhere from a few minutes to a few hours.

Step 6 - Stake QLX and Activate Your Validator

Once your node is fully synced, register it as an active validator by submitting a staking transaction. The minimum self-stake is 50,000 QLX. You can delegate additional QLX from other holders later, but the initial registration requires your own stake.

# Using the qlx-cli tool (install separately or use the one bundled with the binary archive) # Check your wallet balance first qlx-cli balance --address YOUR_WALLET_ADDRESS --rpc https://rpc.qlorix.com # Register as a validator (replace values with your own) qlx-cli validator register \ --vote-pubkey YOUR_VOTE_PUBKEY \ --stake-amount 50000 \ --commission-rate 5 \ --identity-name "My Validator" \ --wallet YOUR_WALLET_KEYFILE \ --rpc https://rpc.qlorix.com # Confirm registration - your validator should appear in the pending set qlx-cli validator info --vote-pubkey YOUR_VOTE_PUBKEY --rpc https://rpc.qlorix.com

The --commission-rate flag sets the percentage of delegator rewards you retain as an operator fee. A rate of 5 to 10 percent is typical for public validators. Once the registration transaction is confirmed, your validator enters the pending set and will be activated at the next epoch boundary (epochs are 2 hours long).

Step 7 - Monitor Uptime and Rewards

The metrics endpoint at 127.0.0.1:9090 exposes Prometheus-compatible data. You can scrape it with a local Prometheus instance and visualize it in Grafana. The most important metrics to watch are:

  • qlx_attestation_total - cumulative attestations signed; should increase every slot (~400 ms)
  • qlx_attestation_missed_total - missed attestations; should stay at zero or very close to it
  • qlx_block_proposal_total - blocks you have proposed as leader; increases less frequently
  • qlx_peer_count - number of connected peers; should stay above 20
  • qlx_sync_lag_slots - how far behind the chain tip your node is; should be 0
# Quick health check via CLI qlx-cli validator status \ --vote-pubkey YOUR_VOTE_PUBKEY \ --rpc https://rpc.qlorix.com # View pending and claimable rewards qlx-cli validator rewards \ --vote-pubkey YOUR_VOTE_PUBKEY \ --rpc https://rpc.qlorix.com # Claim accumulated rewards to your wallet qlx-cli validator claim-rewards \ --vote-pubkey YOUR_VOTE_PUBKEY \ --wallet YOUR_WALLET_KEYFILE \ --rpc https://rpc.qlorix.com

Rewards accrue every epoch and can be claimed at any time. They are not automatically compounded - you need to submit a separate restake transaction if you want to add claimed rewards back to your stake balance and increase your share of future rewards.

Slashing and How to Avoid It

Qlorix has two slashing conditions. The first is downtime slashing: if your validator misses more than 10 percent of its expected attestations in a rolling 24-hour window, a small penalty is applied and your stake is reduced. The penalty starts at 0.1 percent of your stake and increases if downtime continues. The second condition is double-signing: signing two conflicting blocks at the same slot, which is evidence of an equivocation attack. Double-signing results in a 5 percent instant stake slash and forced ejection from the validator set. Never run two instances of your validator with the same vote key simultaneously.

The most reliable way to stay slash-free is to use quality hardware with a redundant network connection, monitor your attestation metrics continuously, and have an alerting rule that pages you if qlx_sync_lag_slots exceeds 5 or qlx_attestation_missed_total increases by more than 10 in any 10-minute window. A well-maintained validator on solid hardware should run for months without any manual intervention beyond periodic binary upgrades.

Ready to Become a Validator?

Visit the Staking and Validators page to see current network statistics, active validator set size, and the full operator documentation.

Validator Portal arrow_forward