Validator Quick Sheet
TL;DR: Copy-paste
zigchaindcommands to create a validator, check status, manage slashing and rewards, and withdraw commission on ZIGChain mainnet, testnet, or local.
Overview
This validator quick reference lists zigchaind commands for ZIGChain operators. Use it after your node is online. It does not cover hardware setup or keyring steps.
Each command block has Mainnet, Testnet, and Local tabs. Pick the tab that matches your chain ID and RPC URL. Mainnet and testnet tabs use public Numia RPC nodes. The local tab uses http://localhost:26657.
For first-time setup, see Set Up a ZIGChain Validator and Set Up a ZIGChain Node. For roles and FAQs, see ZIGChain Validators Overview and ZIGChain Validators FAQ. Staking limits are in Staking Module. Jail rules are in Slashing Module. Downtime tips are in Validator Security Checklist. Set $ACCOUNT, $TXHASH, $VALIDATOR_OP_ADDRESS, and $VALIDATOR_CON_ADDRESS before you run the examples below.
Key Concepts
- Validator operator address: On-chain identity for your validator used in staking and distribution queries (
zigvaloper...). - Consensus address: CometBFT signing address used in slashing queries (
zigvalcons...). - Active set: Validators currently signing blocks; check membership with
tendermint-validator-set. - Commission: Rate validators charge delegators; set at create time and editable within max bounds.
- Unjail: Transaction to restore a jailed validator after the unbonding window ends.
- Self-delegation: Minimum stake the operator must bond; set in the create-validator JSON.
Validator Quick Reference for Setup and Registration
Register a validator with your consensus pubkey, a JSON descriptor, and a funded $ACCOUNT. The JSON sets commission and min self-delegation before you broadcast create-validator. Pick the tab for the network you use.
Get your node validator pub key
zigchaind tendermint show-validator
Create a file with your validator info
PUBKEY=$(zigchaind tendermint show-validator)
bash -c "cat > /tmp/your_validator.txt" << EOM
{
"pubkey": $PUBKEY,
"amount": "1000000uzig",
"moniker": "validator's name",
"identity": "optional identity signature (ex. UPort or Keybase)",
"website": "validator's (optional) website",
"security": "validator's (optional) security contact email",
"details": "validator's (optional) details",
"commission-rate": "0.1",
"commission-max-rate": "0.2",
"commission-max-change-rate": "0.01",
"min-self-delegation": "10"
}
EOM
Create your validator
- Mainnet
- Testnet
- Local
zigchaind tx staking create-validator /tmp/your_validator.txt \
--from $ACCOUNT \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz \
--gas "auto" \
--gas-prices "0.0025uzig" \
--gas-adjustment 1.5
zigchaind tx staking create-validator /tmp/your_validator.txt \
--from $ACCOUNT \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz \
--gas "auto" \
--gas-prices "0.0025uzig" \
--gas-adjustment 1.5
zigchaind tx staking create-validator /tmp/your_validator.txt \
--from zuser1 \
--chain-id zigchain-1 --node http://localhost:26657 \
--gas "auto" \
--gas-prices "0.0025uzig" \
--gas-adjustment 1.5
Confirm transaction and get your validator address
- Mainnet
- Testnet
- Local
zigchaind query tx $TXHASH \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz | grep raw_log
VALIDATOR_OP_ADDRESS=$(zigchaind q tx $TXHASH --output json | jq -r '.tx.body.messages[0].validator_address')
zigchaind query tx $TXHASH \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz | grep raw_log
VALIDATOR_OP_ADDRESS=$(zigchaind q tx $TXHASH --output json | jq -r '.tx.body.messages[0].validator_address')
zigchaind query tx $TXHASH \
--chain-id zigchain-1 --node http://localhost:26657 | grep raw_log
VALIDATOR_OP_ADDRESS=$(zigchaind q tx $TXHASH --output json | jq -r '.tx.body.messages[0].validator_address')
Validator Quick Reference for Status Checks
Run these queries after create-validator confirms. They return bonding status, active-set membership, and operator or consensus addresses. Save $VALIDATOR_OP_ADDRESS from the create-validator output before you use the distribution commands later on this page.
Check your validator status
- Mainnet
- Testnet
- Local
zigchaind query staking validator $VALIDATOR_OP_ADDRESS \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind query staking validator $VALIDATOR_OP_ADDRESS \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind query staking validator $VALIDATOR_OP_ADDRESS \
--chain-id zigchain-1 --node http://localhost:26657
Check if the validator is part of the active set
- Mainnet
- Testnet
- Local
zigchaind query tendermint-validator-set \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz \
| grep "$(zigchaind tendermint show-address)"
zigchaind query tendermint-validator-set \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz \
| grep "$(zigchaind tendermint show-address)"
zigchaind query tendermint-validator-set \
--chain-id zigchain-1 --node http://localhost:26657 \
| grep "$(zigchaind tendermint show-address)"
Get Your Validator Consensus Address
zigchaind comet show-address
VALIDATOR_CON_ADDRESS=$(zigchaind comet show-address)
Validator Quick Reference for Profile Updates
Update moniker, commission, and contact fields with edit-validator. Stay within the max commission and min self-delegation from your create-validator JSON. Use the same network tab and gas flags as the other transactions on this page.
Edit your validator information
- Mainnet
- Testnet
- Local
zigchaind tx staking edit-validator \
--commission-rate 0.05 \
--details "YOUR_DETAILS" \
--identity "YOUR_KEYBASE_ID" \
--min-self-delegation "100" \
--new-moniker "Your new moniker name" \
--website "YOUR_WEBSITE_URL" \
--security-contact "YOUR_EMAIL" \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz \
--from $ACCOUNT \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices "0.0025uzig"
zigchaind tx staking edit-validator \
--commission-rate 0.05 \
--details "YOUR_DETAILS" \
--identity "YOUR_KEYBASE_ID" \
--min-self-delegation "100" \
--new-moniker "Your new moniker name" \
--website "YOUR_WEBSITE_URL" \
--security-contact "YOUR_EMAIL" \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz \
--from $ACCOUNT \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices "0.0025uzig"
zigchaind tx staking edit-validator \
--commission-rate 0.05 \
--details "YOUR_DETAILS" \
--identity "YOUR_KEYBASE_ID" \
--min-self-delegation "100" \
--new-moniker "Your new moniker name" \
--website "YOUR_WEBSITE_URL" \
--security-contact "YOUR_EMAIL" \
--chain-id zigchain-1 --node http://localhost:26657 \
--from zuser1 \
--gas-adjustment 1.5 \
--gas auto \
--gas-prices "0.0025uzig"
Validator Quick Reference for Slashing and Unjail
If the validator is jailed, query signing info for the jail-until timestamp and missed-block counters. Send unjail only after that window ends. Repeat the signing-info query after unjail to confirm the jail record cleared.
Know when your validator will be unjailed
- Mainnet
- Testnet
- Local
zigchaind query slashing signing-info $VALIDATOR_CON_ADDRESS \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind query slashing signing-info $(zigchaind tendermint show-validator) \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind query slashing signing-info $VALIDATOR_CON_ADDRESS \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind query slashing signing-info $(zigchaind tendermint show-validator) \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind query slashing signing-info $VALIDATOR_CON_ADDRESS --chain-id zigchain-1 --node http://localhost:26657
zigchaind query slashing signing-info $(zigchaind tendermint show-validator) --chain-id zigchain-1 --node http://localhost:26657
Unjail your validator
- Mainnet
- Testnet
- Local
zigchaind tx slashing unjail \
--chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz \
--gas "auto" \
--gas-prices "0.0025uzig" \
--from $ACCOUNT \
--gas-adjustment 1.5
zigchaind tx slashing unjail \
--chain-id zig-test-2 \
--node https://public-zigchain-testnet-rpc.numia.xyz \
--gas "auto" \
--gas-prices "0.0025uzig" \
--from $ACCOUNT \
--gas-adjustment 1.5
zigchaind tx slashing unjail \
--chain-id zigchain-1 \
--node http://localhost:26657 \
--gas "auto" \
--gas-prices "0.0025uzig" \
--from zuser1 \
--gas-adjustment=1.5
Get Your Validator Operator Address
- Mainnet
- Testnet
- Local
zigchaind query staking validator \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind query staking validator \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind query staking validator \
--chain-id zigchain-1 --node http://localhost:26657
Get your slashing info and unjail period end
- Mainnet
- Testnet
- Local
zigchaind query slashing signing-info $(zigchaind tendermint show-validator) \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind query slashing signing-info $(zigchaind tendermint show-validator) \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind query slashing signing-info $(zigchaind tendermint show-validator) \
--chain-id zigchain-1 --node http://localhost:26657
Validator Quick Reference for Rewards
Query commission and validator distribution info with $VALIDATOR_OP_ADDRESS. Use withdraw-rewards to move accrued amounts to your operator account. The address must match the one from your create-validator transaction.
Get the rewards of your validator
- Mainnet
- Testnet
- Local
zigchaind query distribution commission $VALIDATOR_OP_ADDRESS \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind query distribution commission $VALIDATOR_OP_ADDRESS \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind query distribution commission $VALIDATOR_OP_ADDRESS \
--chain-id zigchain-1 --node http://localhost:26657
Get the rewards of your validator and the self-bonded rewards
- Mainnet
- Testnet
- Local
zigchaind query distribution validator-distribution-info $VALIDATOR_OP_ADDRESS \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz
zigchaind query distribution validator-distribution-info $VALIDATOR_OP_ADDRESS \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz
zigchaind query distribution validator-distribution-info $VALIDATOR_OP_ADDRESS \
--chain-id zigchain-1 --node http://localhost:26657
Withdraw your rewards
- Mainnet
- Testnet
- Local
zigchaind tx distribution withdraw-rewards $VALIDATOR_OP_ADDRESS \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz \
--from z \
--gas-adjustment=1.5 \
--gas auto \
--gas-prices="0.0025uzig"
zigchaind tx distribution withdraw-rewards $VALIDATOR_OP_ADDRESS \
--chain-id zig-test-2 --node https://public-zigchain-testnet-rpc.numia.xyz \
--from z \
--gas-adjustment=1.5 \
--gas auto \
--gas-prices="0.0025uzig"
zigchaind tx distribution withdraw-rewards $VALIDATOR_OP_ADDRESS \
--chain-id zigchain-1 --node http://localhost:26657 \
--from z \
--gas-adjustment=1.5 \
--gas auto \
--gas-prices="0.0025uzig"