This guide provides step-by-step instructions for setting up a Validator on the Cronos POS Chain mainnet. While anyone can set up a validator, only the top 100 validators are considered "active" and eligible to receive rewards.
👉 Learn more about validator rewards
Network Upgrade Considerations
There are two approaches to node setup:
Option 1: Validator with Complete Blockchain Data
- Requires building from scratch with full blockchain synchronization
- Must handle network upgrade breakpoints at specific block heights
- Refer to the upgrade guide for full node setup
Option 2: Quick Network Validation
- Start validating quickly using state sync
- Begin with binary
v3.3.9 - This guide focuses on the second approach
Prerequisites
Supported Operating Systems
- macOS
- Windows
- Linux (recommended)
Minimum Hardware Requirements
| Node Type | RAM | Disk Space | CPU Cores |
|---|---|---|---|
| Archive Node | 64GB | 3.4TB | 4 |
| Full Node | 16-64GB | 1.2TB | 4 |
| Pruned Node | 16-64GB | 40GB | 4 |
Note: Storage requirements grow with network activity
Step 1: Install Cronos POS Chain Binary
Linux Installation
curl -LOJ https://github.com/crypto-org-chain/chain-main/releases/download/v3.3.9/chain-main_3.3.9_Linux_x86_64.tar.gz
tar -zxvf chain-main_3.3.9_Linux_x86_64.tar.gzVerify installation:
./chain-maind version
# Should return: 3.3.9Alternative: Homebrew Installation (macOS)
brew tap crypto-org-chain/chain-maind
brew install chain-maindStep 2: Configure Chain-Maind
Initialize Node
./chain-maind init [your-moniker] --chain-id crypto-org-chain-mainnet-1Download Genesis File
curl https://raw.githubusercontent.com/crypto-org-chain/mainnet/main/crypto-org-chain-mainnet-1/genesis.json > ~/.chain-maind/config/genesis.jsonVerify checksum:
sha256sum ~/.chain-maind/config/genesis.json
# Should match: d299dcfee6ae29ca280006eaa065799552b88b978e423f9ec3d8ab531873d882Enable State Sync
LATEST_HEIGHT=$(curl -s https://rpc.mainnet.cronos-pos.org:443/block | jq -r .result.block.header.height)
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000))
TRUST_HASH=$(curl -s "https://rpc.mainnet.cronos-pos.org:443/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"https://rpc.mainnet.cronos-pos.org:443,https://rpc.mainnet.cronos-pos.org:443\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" ~/.chain-maind/config/config.toml👉 Optimize your validator performance
Step 3: Launch Your Validator
Start Node
./chain-maind startCheck Sync Status
./chain-maind status 2>&1 | jq '.SyncInfo.catching_up'
# Returns false when syncedCreate Validator Transaction
./chain-maind tx staking create-validator \
--from=[your_key_name] \
--amount=1000cro \
--pubkey=$(./chain-maind tendermint show-validator) \
--moniker="YourValidatorName" \
--security-contact="[email protected]" \
--chain-id="crypto-org-chain-mainnet-1" \
--commission-rate="0.1" \
--commission-max-rate="0.2" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1" \
--gas-prices 0.1basecroValidator Management
Check Validator Status
./chain-maind query tendermint-validator-set | grep -c $(./chain-maind tendermint show-validator)
# Returns 1 if activeCommon Operations
| Command | Description | Example |
|---|---|---|
query bank balances | Check balance | ./chain-maind query bank balances [address] |
tx bank send | Transfer tokens | ./chain-maind tx bank send [from] [to] 10cro |
tx staking delegate | Delegate to validator | ./chain-maind tx staking delegate [validator-addr] 100cro |
tx staking unbond | Unbond funds | ./chain-maind tx staking unbond [validator-addr] 100cro |
FAQ
How do I check if my validator is active?
Run: ./chain-maind query tendermint-validator-set | grep -c [your-validator-pubkey]
Returns 1 if active in the set.
What's the minimum stake required?
There's no fixed minimum, but only the top 100 validators by stake receive rewards.
How do I unjail my validator?
./chain-maind tx slashing unjail --from [key_name] --chain-id crypto-org-chain-mainnet-1How often are rewards distributed?
Rewards accumulate continuously and can be withdrawn anytime using:
./chain-maind tx distribution withdraw-all-rewards --from [key_name]Can I change my commission rate?
Yes, but increases are limited by your max-change-rate parameter set during validator creation.