Cascade
Validators

Create Validator

Create a wallet, fund it, and register your validator on the Lumera network.

Prerequisites

Before creating a validator, make sure:

  • Your node is running and fully synced (catching_up: false)
  • You have completed Node Setup

Verify sync status:

lumerad status 2>&1 | jq '.sync_info.catching_up'
# Must be: false

Step 1: Set the Keyring Backend

On headless servers (no GUI), the default os keyring backend will hang because there is no system keyring daemon running. Set it to test so keys are stored as plain files on disk:

lumerad config set client keyring-backend test --skip-validate

The test backend stores keys unencrypted on disk. This is standard for testnet validators, but for mainnet you should use file (password-protected) or a hardware wallet.

Step 2: Create a Wallet

lumerad keys add validator

The output includes your address and a 24-word mnemonic:

- address: lumera1abc...
  name: validator

**Important** write this mnemonic phrase in a safe place.
word1 word2 word3 ... word24

Write down the 24-word mnemonic NOW. It is shown exactly once. If you lose it, you lose access to your wallet permanently.

View your addresses

# Wallet address (for receiving tokens)
lumerad keys show validator -a
# Output: lumera1...
 
# Validator operator address (for staking commands)
lumerad keys show validator --bech val -a
# Output: lumeravaloper1...

Step 3: Fund Your Wallet

You need testnet LUME tokens. Options:

  1. Faucet: Request tokens from the Lumera faucet
  2. Discord: Ask in the Lumera Discord if the faucet is unavailable

Check your balance:

lumerad query bank balances $(lumerad keys show validator -a)

You need at least 1 LUME (1,000,000 ulume) to create a validator, plus extra for gas fees.

Step 4: Create the Validator

Get your validator public key

lumerad tendermint show-validator

Create the validator config file

cat > ~/validator.json <<EOF
{
  "pubkey": $(lumerad tendermint show-validator),
  "amount": "1000000ulume",
  "moniker": "YOUR_MONIKER",
  "commission-rate": "0.10",
  "commission-max-rate": "0.20",
  "commission-max-change-rate": "0.01",
  "min-self-delegation": "1"
}
EOF

Replace YOUR_MONIKER with your validator name.

ParameterDescriptionExample
amountInitial self-delegation1000000ulume (1 LUME)
commission-rateStarting commission rate0.10 (10%)
commission-max-rateMaximum commission (immutable once set)0.20 (20%)
commission-max-change-rateMax daily commission change0.01 (1%)
min-self-delegationMinimum tokens the validator must self-delegate1

Lumera uses Cosmos SDK v0.50 which requires a JSON file for create-validator. Older guides that show --amount and --pubkey CLI flags will not work.

Submit the transaction

lumerad tx staking create-validator ~/validator.json \
  --from=validator \
  --chain-id=lumera-testnet-2 \
  --gas=auto \
  --gas-adjustment=1.3 \
  --fees=10000ulume \
  -y

A successful response shows code: 0.

The default 5,000 ulume fee is often insufficient. Use --fees=10000ulume or higher.

Verify your validator

lumerad query staking validator $(lumerad keys show validator --bech val -a)

You should see your moniker, commission rates, and status: BOND_STATUS_UNBONDED. Your validator will remain unbonded until it has enough delegation to enter the active set.

Verification Checklist

Run these checks to confirm everything is working:

# Node running?
sudo systemctl status lumera
 
# Synced?
lumerad status 2>&1 | jq '.sync_info | {latest_block_height, catching_up}'
 
# Validator exists?
lumerad query staking validator $(lumerad keys show validator --bech val -a) | grep moniker
 
# Signing blocks?
lumerad query slashing signing-info $(lumerad tendermint show-validator)
 
# Balance?
lumerad query bank balances $(lumerad keys show validator -a)
 
# Peers connected?
lumerad status 2>&1 | jq '.node_info.other'

Next Steps

Edit this page

On this page