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:
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:
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
The output includes your address and a 24-word mnemonic:
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
Step 3: Fund Your Wallet
You need testnet LUME tokens. Options:
- Faucet: Request tokens from the Lumera faucet
- Discord: Ask in the Lumera Discord if the faucet is unavailable
Check your balance:
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
Create the validator config file
Replace YOUR_MONIKER with your validator name.
| Parameter | Description | Example |
|---|---|---|
amount | Initial self-delegation | 1000000ulume (1 LUME) |
commission-rate | Starting commission rate | 0.10 (10%) |
commission-max-rate | Maximum commission (immutable once set) | 0.20 (20%) |
commission-max-change-rate | Max daily commission change | 0.01 (1%) |
min-self-delegation | Minimum tokens the validator must self-delegate | 1 |
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
A successful response shows code: 0.
The default 5,000 ulume fee is often insufficient. Use --fees=10000ulume or higher.
Verify your validator
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: