Join as Validator
This guide shows you how to create a validator on the Crescendo-1 testnet. You need a running and synced node before proceeding.
curl -s http://localhost:26657/status | jq '.result.sync_info.catching_up' — it should return false.Create a Key
If you haven't already created a wallet, see the Create a Wallet guide. For a quick CLI setup, generate a new key pair:
bitsongd keys add <your-key-name> --keyring-backend test
--keyring-backend test flag stores keys unencrypted on disk. This is acceptable for testnets but never use this on mainnet. Save your mnemonic phrase — it is the only way to recover your account.To recover an existing key from a mnemonic:
bitsongd keys add <your-key-name> \
--recover \
--keyring-backend test
You will be prompted to enter your mnemonic.
Fund Your Account
You need testnet BTSG tokens to create a validator. Check your balance:
bitsongd query bank balances $(bitsongd keys show <your-key-name> -a --keyring-backend test)
Create the Validator
Retrieve your validator public key
bitsongd tendermint show-validator
This outputs your node's consensus public key, needed for the next step.
Submit the create-validator transaction
bitsongd tx staking create-validator \
--amount 1000000000000ubtsg \
--pubkey $(bitsongd tendermint show-validator) \
--moniker "<your-validator-name>" \
--chain-id crescendo-1 \
--commission-rate 0.10 \
--commission-max-rate 0.20 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--from <your-key-name> \
--keyring-backend test \
--gas auto \
--gas-adjustment 1.5 \
-y
Verify your validator
Check that your validator is in the active set:
bitsongd query staking validators --output json | \
jq '.validators[] | select(.description.moniker == "<your-validator-name>")'
Parameter Reference
ubtsg to self-delegate. 1000000 ubtsg = 1 BTSG.bitsongd tendermint show-validator.0.10 = 10%.Validator Operations
Delegate More Tokens
bitsongd tx staking delegate <validator-operator-address> 1000000ubtsg \
--from <your-key-name> \
--keyring-backend test \
--chain-id crescendo-1 \
-y
Unjail Your Validator
If your validator gets jailed for downtime:
bitsongd tx slashing unjail \
--from <your-key-name> \
--keyring-backend test \
--chain-id crescendo-1 \
-y
Edit Validator Details
bitsongd tx staking edit-validator \
--moniker "<new-name>" \
--details "Your validator description" \
--website "https://your-website.com" \
--from <your-key-name> \
--keyring-backend test \
--chain-id crescendo-1 \
-y
Troubleshooting
Verify that you have enough tokens self-delegated and that your node is running and synced. Only the top validators by stake are included in the active set.
bitsongd query staking validators --output json | jq '.validators | length'
This usually means your node was not fully synced when you created the validator. Wait for sync to complete, then unjail:
bitsongd tx slashing unjail \
--from <your-key-name> \
--keyring-backend test \
--chain-id crescendo-1 \
-y