> For the complete documentation index, see [llms.txt](https://service.block-pro.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://service.block-pro.net/mainnet/nolus/validator.md).

# Validator

Create and maintain a Nolus validator on Mainnet.

**Mainnet · `pirin-1`**

Complete [Installation](/mainnet/nolus/installation.md) and wait for full synchronization. The wallet key authorizes transactions; the consensus key signs blocks. Back up both securely, and never run two nodes with the same consensus key.

### Create a wallet

Save the recovery phrase offline. Use the recovery command instead if you already have a wallet.

```bash
nolusd keys add wallet
```

### Recover an existing wallet — alternative

Enter the recovery phrase interactively.

```bash
nolusd keys add wallet --recover
```

### Show the funding address

Fund this address on the correct network and leave a balance for fees.

```bash
nolusd keys show wallet -a
```

### Check balance

Read the funded account balance.

```bash
nolusd query bank balances "$(nolusd keys show wallet -a)"
```

### Check synchronization

Continue only after catching\_up is false.

```bash
curl -fsS http://127.0.0.1:26657/status | jq '.result.sync_info.catching_up'
```

### Back up the consensus key

Create a local protected backup, then copy it to secure offline storage.

```bash
install -D -m 0600 "$HOME/.nolus/config/priv_validator_key.json" "$HOME/validator-backup/nolus-mainnet-priv_validator_key.json"
```

### Check create-validator syntax

Inspect the release’s CLI before submitting. The formats below differ between older and newer Cosmos SDK releases.

```bash
nolusd tx staking create-validator --help
```

### Register the validator

Choose the format shown by your binary’s help. Replace the moniker and amount, then review the transaction before confirming. The sample stake is not a promise of entry into the active set. For a CLI that accepts a validator JSON file, prepare the message.

```bash
jq -n --argjson pubkey "$(nolusd comet show-validator)" '{pubkey:$pubkey,amount:"1000000unls",moniker:"MY_VALIDATOR",identity:"",website:"",security:"",details:"","commission-rate":"0.05","commission-max-rate":"0.20","commission-max-change-rate":"0.01","min-self-delegation":"1"}' > "$HOME/validator.json"
```

### Submit the JSON message

Broadcast only after reviewing validator.json.

```bash
nolusd tx staking create-validator "$HOME/validator.json" --from wallet --chain-id pirin-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.0025unls
```

If your release exposes the legacy `--pubkey` form, use the following alternative instead; do not submit both.

```bash
nolusd tx staking create-validator --amount 1000000unls \
  --pubkey "$(nolusd tendermint show-validator)" --moniker "MY_VALIDATOR" \
  --commission-rate 0.05 --commission-max-rate 0.20 \
  --commission-max-change-rate 0.01 --min-self-delegation 1 \
  --from wallet --chain-id pirin-1 --gas auto --gas-adjustment 1.5 --gas-prices 0.0025unls
```

### Verify registration

Query the validator record after the transaction is included in a block.

```bash
nolusd query staking validator "$(nolusd keys show wallet --bech val -a)"
```

Registration and active voting power are different states. Check bonded status and the active-set threshold in the explorer.

[Validator reference](https://github.com/nolus-protocol/nolus-core).
