Skip to main content

Run Validator - Manual setup

1. Install node (lavad) & Join network

Running as a validator requires a Lava Node running, Please refer to our guide for joining Testnet and Mainnet for details.

2. Prepare an account & Fund it

If you don't have an account (wallet) on Lava yet, Refer to creating new accounts and the faucet.

3. Stake & start validating

Once your account is funded, run this to stake and start validating.

  1. Verify that your node has finished synching and it is caught up with the network
$current_lavad_binary status | jq .SyncInfo.catching_up
# Wait until you see the output: "false"
  1. Verify that your account has funds in it in order to perform staking
# Make sure you can see your account name in the keys list
$current_lavad_binary keys list

# Make sure you see your account has Lava tokens in it
YOUR_ADDRESS=$($current_lavad_binary keys show -a $ACCOUNT_NAME)
$current_lavad_binary query \
bank balances \
$YOUR_ADDRESS \
--denom ulava
  1. Back up your validator's consensus key

    A validator participates in the consensus by sending a message signed by a consensus key which is automatically generated when you first run a node. You must create a backup of this consensus key in case that you migrate your validator to another server or accidentally lose access to your validator.

    A consensus key is stored as a json file in $lavad_home_folder/config/priv_validator_key.json by default, or a custom path specified in the parameter priv_validator_key_file of config.toml.

  2. Stake validator

Here's an example with Values which starts with a stake of 50000000ulava. Replace <<moniker_node>> With a human readable name you choose for your validator.

caution

Please ensure that you replace {CHAIN_ID} with the appropriate value depending on your target network. See the Chain ID section for details.

$current_lavad_binary tx staking create-validator \
--amount="50000000ulava" \
--pubkey=$($current_lavad_binary tendermint show-validator --home "$HOME/.lava/") \
--moniker="<<moniker_node>>" \
--chain-id={CHAIN_ID} \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="10000" \
--gas="auto" \
--gas-adjustment "1.5" \
--gas-prices="0.05ulava" \
--home="$HOME/.lava/" \
--from=$ACCOUNT_NAME

Once you have finished running the command above, if you see code: 0 in the output, the command was successful

  1. Verify validator setup
block_time=60
# Check that the validator node is registered and staked
validator_pubkey=$($current_lavad_binary tendermint show-validator | jq .key | tr -d '"')

$current_lavad_binary q staking validators | grep $validator_pubkey

# Check the voting power of your validator node - please allow 30-60 seconds for the output to be updated
sleep $block_time
$current_lavad_binary status | jq .ValidatorInfo.VotingPower | tr -d '"'
# Output should be > 0