Skip to content

Cosmos_validator

Chapter 14: Setting Up Cosmos Validator Node

Section titled “Chapter 14: Setting Up Cosmos Validator Node”

A validator in Cosmos is a node that participates in the consensus process by proposing and voting on blocks. Running a validator requires technical expertise and capital (stake).


ComponentMinimumRecommended
CPU4 cores8+ cores
RAM8 GB16-32 GB
Storage500 GB SSD1 TB NVMe
Network100 Mbps1 Gbps
ParameterValue
Minimum Stake1 ATOM (self-delegation)
Jail Time10 minutes to 2 days
Unbonding Period21 days

Terminal window
# Install Go
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# Verify
go version
Terminal window
# Clone repository
git clone https://github.com/cosmos/gaia.git
cd gaia
# Build
make install
# Verify
gaiad version

Terminal window
# Initialize chain
gaiad init my-validator --chain-id cosmoshub-4
# This creates:
# - ~/.gaia/config/genesis.json
# - ~/.gaia/config/config.toml
# - ~/.gaia/data/
Terminal window
# Create new key
gaiad keys add validator-wallet
# Recover existing wallet
gaiad keys add validator-wallet --recover
Terminal window
# Get testnet tokens from faucet
# Or buy ATOM from exchange for mainnet

Terminal window
nano ~/.gaia/config/config.toml
# Enable RPC
rpc.laddr = "tcp://0.0.0.0:26657"
# Enable CORS
api.enable = true
# Persistent peers
persistent_peers = "id@peer1:26656,id@peer2:26656"
# Min gas price
minimum_gas_prices = "0.0025uatom"
[Unit]
Description=Cosmos Validator
After=network.target
[Service]
User=cosmos
Type=simple
ExecStart=/usr/local/bin/gaiad start
Restart=always
RestartSec=10
LimitNOFILE=4096
[Install]
WantedBy=multi-user.target

Terminal window
# Start and catch up
gaiad start
Terminal window
gaiad tx staking create-validator \
--amount=1000000uatom \
--pubkey=$(gaiad tendermint show-validator) \
--moniker="my-validator" \
--chain-id=cosmoshub-4 \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--from=validator-wallet \
--gas=auto \
--gas-adjustment=1.5

Terminal window
# Check validator status
gaiad query staking validator <validator-address>
# Check jailed status
gaiad query staking validator <address> | grep jailed
Terminal window
# Edit validator
gaiad tx staking edit-validator \
--moniker="new-name" \
--website="https://example.com" \
--details="Description" \
--from=validator-wallet
# Unjail (if jailed)
gaiad tx slashing unjail \
--from=validator-wallet \
--chain-id=cosmoshub-4
# Delegate more tokens
gaiad tx staking delegate <validator-address> <amount> \
--from=delegator-wallet \
--chain-id=cosmoshub-4

MetricDescription
Block heightCurrent chain height
Missed blocksNumber of blocks missed
Jailed statusWhether validator is jailed
Voting powerValidator’s stake
Terminal window
# Check block height
gaiad status | grep -i height
# Check missed blocks
gaiad query slashing signing-info <validator-consensus-pubkey>
# Check voting power
gaiad query staking validators -o json | jq '.validators[] | select(.description.moniker=="my-validator") | .tokens'

QuestionAnswer
What is a validator in Cosmos?Node that participates in Tendermint consensus
How to become a validator?Stake ATOM and run validator software
What is jailing?Penalty for missing too many blocks
Unbonding period?21 days to undelegate

  • Validators require staking ATOM
  • Hardware: 8+ cores, 16GB RAM, 1TB SSD
  • Use Cosmovisor for automated upgrades
  • Monitor missed blocks to avoid jailing

In Chapter 15: Cosmos Full Node Setup, we’ll cover full node setup.


Last Updated: 2026-02-20