Ga naar hoofdinhoud

Validator Setup Guide

Step-by-step guide to setting up a Monolythium validator from scratch: hardware provisioning, Monarch CLI installation, testnet join, validator registration, and monitoring.

For an overview of validator roles and economics, see Validators Overview.


Hardware Requirements

ResourceMinimumRecommended
CPU4 cores8 cores
RAM16 GB32 GB
Storage500 GB SSD (NVMe)1 TB NVMe
Network100 Mbps1 Gbps
OSUbuntu 22.04+Ubuntu 24.04 LTS
Storage Growth

At ~2-second block times, storage usage grows approximately 50-100 GB per year depending on transaction volume. Start with 500 GB minimum and plan to expand.


Step 1: Install Monarch CLI

Monarch is the official CLI tool for managing Monolythium nodes and validators.

# Download the latest release
curl -sSfL https://get.monarch.monolythium.xyz | bash

# Verify installation
monarch version

Monarch manages the monod binary, chain configuration, key management, and upgrades. It replaces manual binary management and configuration editing.


Step 2: Initialize Your Node

# Initialize for testnet
monarch init --network testnet --moniker "your-validator-name"

This command:

  • Downloads the correct monod binary for the testnet
  • Creates the data directory at ~/.monod/
  • Downloads and verifies the official genesis file
  • Configures seed nodes automatically

Step 3: Start and Sync

# Start the node
monarch start

The node will begin syncing from genesis. Monitor sync progress:

# Check sync status
monarch status

Wait until the node is fully synced (latest block matches the network). This can take several hours depending on chain height and your connection speed.

State Sync

To speed up initial sync, use state sync:

monarch init --network testnet --moniker "your-validator-name" --state-sync
monarch start

State sync downloads a recent snapshot instead of replaying all blocks from genesis. See State Sync for details.


Step 4: Create Validator Keys

Create the operator key that will manage your validator:

monod keys add validator-operator

Save the mnemonic phrase securely. This key controls your validator and your staked LYTH.

Check your address:

monod keys show validator-operator -a

Step 5: Fund Your Account

You need 200,000 LYTH to register a validator:

ComponentAmountPurpose
Self-delegation100,000 LYTH minimumStake (slashable, returned on unbonding)
Burn deposit100,000 LYTH (exact)Non-refundable burn proving long-term commitment

On testnet, request LYTH from the faucet or contact the team for validator-sized allocations.

Verify your balance:

monod query bank balances $(monod keys show validator-operator -a)

Step 6: Register as Validator

Use register-validator, Not create-validator

The standard Cosmos SDK monod tx staking create-validator is blocked on Monolythium. Use the Monolythium-specific register-validator command instead.

monod tx mono register-validator \
--pubkey=$(monod tendermint show-validator) \
--moniker="your-validator-name" \
--identity="your-keybase-id" \
--website="https://your-website.com" \
--details="A brief description of your validator" \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="100000000000000000000000" \
--self-delegation=100000000000000000000000alyth \
--burn-deposit=100000000000000000000000alyth \
--from=validator-operator \
--chain-id=mono_6940-1 \
--gas=auto \
--gas-adjustment=1.5 \
--gas-prices=0.025alyth
ParameterExplanation
--monikerYour validator's display name
--identityKeybase.io identity (for avatar on explorers)
--commission-rateInitial commission (10% = 0.10)
--commission-max-rateMaximum commission you can ever set (cannot be changed later)
--commission-max-change-rateMaximum daily commission change
--burn-depositExactly 100,000 LYTH in alyth (100000 * 10^18)

Step 7: Verify Registration

Check that your validator appears on the network:

# Query your validator
monod query staking validator $(monod keys show validator-operator --bech val -a)

# Check active set membership
monarch status

Your validator starts in the candidate set. To enter the active set (top 53 by total stake), you need sufficient total delegation (self + delegators).


Understanding LythiumBFT

Monolythium uses LythiumBFT, a modified CometBFT fork with quadratic (square root) proposer weighting. This changes how block proposal opportunities are distributed:

Square Root Weighting

In standard CometBFT, a validator with 10x the stake gets 10x the block proposals. In LythiumBFT, a validator with 10x the stake gets approximately 3.16x the proposals (square root of 10):

StakeLinear WeightSqrt WeightAdvantage
100K LYTH100K316Baseline
1M LYTH1M (10x)1,000 (3.2x)3.2x vs 10x linear
10M LYTH10M (100x)3,162 (10x)10x vs 100x linear

This design gives smaller validators up to 7x better reward-per-stake compared to a linear system, strengthening decentralization and making it viable to run a validator without whale-level capital.

Active Set

ParameterValue
Active validators53
SelectionTop 53 by total stake
Block time~2 seconds
FinalityInstant (single-slot BFT)

Step 8: Monitor with Monarch Connect

Monarch Connect is a desktop application for monitoring validator health, metrics, and alerts.

After installing Monarch Connect:

  1. Add your node by entering its RPC endpoint
  2. The dashboard shows block height, uptime, missed blocks, and peer count
  3. Configure alerts for downtime or missed block thresholds

You can also monitor via the command line:

# Live status
monarch status --watch

# Check missed blocks
monod query slashing signing-info $(monod tendermint show-validator)

Genesis Validator Incentive

Validators that join during the testnet genesis period and maintain high uptime earn a bonus reward:

RequirementValue
Uptime95% or higher over 21 consecutive days
NetworkTestnet
Reward10,000 LYTH (distributed at mainnet genesis)

The 21-day measurement window starts from the block your validator enters the active set. Uptime is measured as the percentage of blocks signed versus blocks proposed to your validator.


Operational Checklist

After registration, ensure you have:

  • Node running and synced (monarch status)
  • Validator in the active set or candidate set
  • Monitoring configured (Monarch Connect or Prometheus/Grafana)
  • Alerts for missed blocks and downtime
  • Backup of validator keys (~/.monod/config/priv_validator_key.json)
  • Secure key storage (consider KMS for production)
  • Firewall configured (P2P port 26656 open, RPC/API restricted)

Troubleshooting

Node not syncing

  • Verify seed nodes are configured: monarch config show | grep seeds
  • Check network connectivity: curl -s https://rpc.testnet.mononodes.xyz/status | jq .result.sync_info
  • Try state sync for faster initial catchup

Validator not in active set

  • The active set is limited to the top 53 by total stake
  • Attract delegations to increase your total stake
  • Check your position: monod query staking validators --limit 100 -o json | jq '.validators | sort_by(.tokens | tonumber) | reverse | to_entries[] | select(.value.operator_address == "YOUR_VALOPER") | .key'

Validator jailed

If your validator misses too many blocks, it gets jailed:

# Check jail status
monod query staking validator $(monod keys show validator-operator --bech val -a) -o json | jq .jailed

# Unjail (after fixing the issue)
monod tx slashing unjail --from=validator-operator --chain-id=mono_6940-1 --gas=auto --gas-prices=0.025alyth