> 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/testnet/dora/validator.md).

# Validator

Create and maintain a Dora Testnet validator.

**Testnet · `vota-testnet` · v1.0.0**

Complete [Installation](/testnet/dora/installation.md) and wait for full synchronization. These examples use a local key named `wallet` with the encrypted `file` keyring. Transactions ask for confirmation; review the destination, amount and fee before signing.

Never run the same consensus key on two nodes. Keep `config/priv_validator_key.json`, the latest `data/priv_validator_state.json` and wallet recovery words in secure backups.

## Prepare the wallet

### Create a wallet

Record the recovery words privately and offline. Do not share the output or store it in a public document.

```bash
dorad keys add wallet --keyring-backend file --home "$HOME/.dora"
```

Already have a wallet? Use [Key management](/testnet/dora/useful-commands.md#key-management) to restore it instead of creating another key.

### Show the account address

Use this address to fund the wallet.

```bash
dorad keys show wallet -a --keyring-backend file --home "$HOME/.dora"
```

Request Testnet tokens from the [official faucet](https://vota-testnet-faucet.dorafactory.org). Testnet tokens have no Mainnet value.

### Check the balance

Amounts are returned in base units. 1 DORA equals 1000000000000000000 peaka.

```bash
dorad query bank balances "$(dorad keys show wallet -a --keyring-backend file --home "$HOME/.dora")" --node http://127.0.0.1:26657 --output json
```

### Confirm synchronization

Require the correct network, a current block time and catching\_up=false.

```bash
curl -fsS http://127.0.0.1:26657/status | jq '.result | {chain: .node_info.network, height: .sync_info.latest_block_height, time: .sync_info.latest_block_time, catching_up: .sync_info.catching_up}'
```

## Register the validator

The v1.0.0 CLI uses a **JSON definition file** with `create-validator`. Old examples that pass every field directly as a flag are not the format used here.

### Choose a public moniker

Set your validator's display name.

```bash
read -rp "Validator moniker: " MONIKER
```

### Choose the self-delegation amount

Enter an amount with its base denomination, for example 1000000000000000000peaka for 1 DORA. Leave funds for fees; this example is not an active-set minimum.

```bash
read -rp "Self-delegation amount (integer followed by peaka): " SELF_DELEGATION
```

### Write the validator definition

Read your node's public consensus key and create the JSON file. Commission values below are examples: 10% initially, 20% maximum, 1 percentage point maximum change per day.

```bash
jq -n \
  --argjson pubkey "$(dorad comet show-validator --home "$HOME/.dora")" \
  --arg amount "$SELF_DELEGATION" --arg moniker "$MONIKER" \
  '{pubkey:$pubkey, amount:$amount, moniker:$moniker, identity:"", website:"", security:"", details:"", "commission-rate":"0.10", "commission-max-rate":"0.20", "commission-max-change-rate":"0.01", "min-self-delegation":"1"}' > "$HOME/validator.json"
```

### Review the definition

Edit identity, website, security contact and details as needed. Commission maximums cannot be freely changed later; min-self-delegation is expressed in peaka.

```bash
nano "$HOME/validator.json"
```

### Create the validator

Simulate gas and review the transaction before confirming. A successful broadcast is not yet proof of on-chain success.

```bash
dorad tx staking create-validator "$HOME/validator.json" --from wallet --keyring-backend file --home "$HOME/.dora" --chain-id vota-testnet --node http://127.0.0.1:26657 --gas auto --gas-adjustment 1.5 --gas-prices 100000000000peaka
```

### Inspect the transaction

Replace TX\_HASH with the hash returned after broadcast. Wait for inclusion and confirm the transaction succeeded.

```bash
dorad query tx TX_HASH --node http://127.0.0.1:26657 --output json
```

### Read validator status

Check jailed status, self-delegation and whether the validator is bonded.

```bash
dorad query staking validator "$(dorad keys show wallet --bech val -a --keyring-backend file --home "$HOME/.dora")" --node http://127.0.0.1:26657 --output json
```

Joining the active set depends on the network's validator limit and stake ranking. Registration alone does not guarantee block-signing status. Use [Useful Commands](/testnet/dora/useful-commands.md) for delegation, rewards and unjailing.

[Official validator guide](https://docs.dorafactory.org/docs/vota-devops/validator) · [v1.0.0 operator notes](https://github.com/DoraFactory/doravota/blob/v1.0.0/docs/VALIDATOR-1.0.0.md)
