diff --git a/docs/validator_guide.md b/docs/validator_guide.md index 548c2ca8..44a2ecc2 100644 --- a/docs/validator_guide.md +++ b/docs/validator_guide.md @@ -14,7 +14,7 @@ The monthly storage requirements for a node are as follows. These are estimated - A default pruning node (`pruning = “default”`) grows at a rate of ~25 GB per month ## Install Go -Kava is built using Go and requires Go version 1.13+. In this example, you will be installing Go on a fresh install of ubuntu 18.04. +Kava is built using Go and requires Go version 1.17+. In this example, you will be installing Go on a fresh install of ubuntu 20.04. ```bash # Update ubuntu @@ -24,9 +24,12 @@ sudo apt upgrade -y # Install packages necessary to run go and jq for pretty formatting command line outputs sudo apt install build-essential jq -y +# Install git +sudo apt install git + # Install go -wget https://dl.google.com/go/go1.17.1.linux-amd64.tar.gz (or latest version at https://golang.org/dl/) -sudo tar -xvf go1.17.1.linux-amd64.tar.gz +wget https://dl.google.com/go/go1.17.6.linux-amd64.tar.gz (or latest version at https://golang.org/dl/) +sudo tar -xvf go1.17.6.linux-amd64.tar.gz sudo mv go /usr/local # Updates environmental variables to include go @@ -41,54 +44,53 @@ source ~/.profile To verify that Go is installed: ```bash go version -# Should return go version go1.17.1 linux/amd64 +# Should return go version go1.17.6 linux/amd64 ``` ## Install Kava -Install Kava using `git clone`. Note that version 0.15.1 is the correct version for mainnet. +Install Kava using `git clone`. Note that version 0.16.1 is the correct version for mainnet. ```bash git clone https://github.com/kava-labs/kava cd kava -git checkout v0.15.1 +git checkout v0.16.1 make install ``` To verify that kava is installed: ```bash -kvd version --long +kava version --long # name: kava -# server_name: kvd -# client_name: kvcli -# version: 0.15.1 -# commit: f0c90f0cbf96d230a83cd2309b8fd032e52d7fb933881541472df1bf2703a939 +# server_name: kava +# version: 0.16.1 +# commit: c2257c409659e2a6c1c8907fe5ae596c5e46f19d # build_tags: netgo,ledger -# go: go version go1.15.14 linux/amd64 +# go: go version go1.17.6 linux/amd64 ``` ## Configuring Your Node Next, download the correct genesis file and sync your node with the Kava mainnet. To download the genesis file: ```bash -# First, initialize kvd. Replace with the public name of your node -kvd init --chain-id kava-8 +# First, initialize kava. Replace with the public name of your node +kava init --chain-id kava-9 # Download the genesis file -wget https://kava-genesis-files.s3.amazonaws.com/kava-8-genesis-migrated-from-block-1878508.json -O ~/.kvd/config/genesis.json +wget https://kava-genesis-files.s3.amazonaws.com/kava-9/genesis.json -O ~/.kava/config/genesis.json # Verify genesis hash -jq -S -c -M '' $HOME/.kvd/config/genesis.json | shasum -a 256 -# f0c90f0cbf96d230a83cd2309b8fd032e52d7fb933881541472df1bf2703a939 +jq -S -c -M '' $HOME/.kava/config/genesis.json | shasum -a 256 +# 5c688df5ae6cba9c9e5a9bab045eb367dd54ce9b7f5fab78cf3e636cf2e2b793 ``` Next, adjust some configurations. To open the config file: ```bash -vim $HOME/.kvd/config/config.toml +vim $HOME/.kava/config/config.toml ``` -At line 160, add [seeds](https://docs.google.com/spreadsheets/d/1TWsD2lMi1idkPI6W9xFCn5W64x75yn9PDjvQaJVkIRk/edit?usp=sharing). These are used to connect to the peer-to-peer network: +At line 212, add [seeds](https://docs.google.com/spreadsheets/d/1j-e1HTkskNRS6mlhxLLQa0loB-ShcVUjz8WVVZxvPaY). These are used to connect to the peer-to-peer network: -At line 163, add some [persistent peers](https://docs.google.com/spreadsheets/d/1TWsD2lMi1idkPI6W9xFCn5W64x75yn9PDjvQaJVkIRk/edit?usp=sharing), which help maintain a connection to the peer-to-peer network +At line 215, add some [persistent peers](https://docs.google.com/spreadsheets/d/1j-e1HTkskNRS6mlhxLLQa0loB-ShcVUjz8WVVZxvPaY), which help maintain a connection to the peer-to-peer network Next, chose how much historical state you want to store. To open the application config file: ```bash -vim $HOME/.kvd/config/app.toml +vim $HOME/.kava/config/app.toml ``` In this file, choose between `default`, `nothing`, and `everything`. To reduce hard drive storage, choose `everything` or `default`. To run an archival node, chose `nothing`. ```bash @@ -101,14 +103,14 @@ minimum-gas-prices = "0.001ukava" ### Syncing Your Node To sync your node, you will use systemd, which manages the Kava daemon and automatically restarts it in case of failure. To use systemd, you will create a service file. Be sure to replace `` with the user on your server: ```bash -sudo tee /etc/systemd/system/kvd.service > /dev/null <<'EOF' +sudo tee /etc/systemd/system/kavad.service > /dev/null <<'EOF' [Unit] Description=Kava daemon After=network-online.target [Service] User= -ExecStart=/home//go/bin/kvd start +ExecStart=/home//go/bin/kava start Restart=on-failure RestartSec=3 LimitNOFILE=4096 @@ -120,69 +122,69 @@ EOF To start syncing: ```bash # Start the node -sudo systemctl enable kvd -sudo systemctl start kvd +sudo systemctl enable kavad +sudo systemctl start kavad ``` To check on the status of syncing: ```bash -kvcli status --output json | jq '.sync_info' +kava status --log_format json | jq '.sync_info' ``` This will give output like: ```bash { -"latest_block_hash": "21D7E37A0A5992E1992DD43E42C05E4475A6E212694F746ABEE132267067847D", -"latest_app_hash": "FBE0E799BCCA57F12F781252787BD6340782E5D45E591294D01269F481B128AC", -"latest_block_height": "183566", -"latest_block_time": "2021-03-22T17:21:41.848445277Z", -"earliest_block_hash": "09E688467E5016159D74CEDE2EE870D671CAA772F76E6697AEEB685A398ACB08", -"earliest_app_hash": "", -"earliest_block_height": "1", -"earliest_block_time": "2021-03-05T06:00:00Z", -"catching_up": false + "latest_block_hash": "03BC172D991C3D66BAAA12A41CAA1A4718C63605B71FD9E0EF09EC38C2DA9F85", + "latest_app_hash": "FBC020AC8258C4854D2D3384E78929384B0BFBA462F948D493E7883AD315B38C", + "latest_block_height": "36", + "latest_block_time": "2022-01-19T16:22:18.54790946Z", + "earliest_block_hash": "C124499F70881EC71F41231DAB111F448558C5A7794D044F0613E1509FA4C8DF", + "earliest_app_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "earliest_block_height": "1", + "earliest_block_time": "2022-01-19T16:00:00Z", + "catching_up": true } ``` The main thing to watch is that the block height is increasing. Once you are caught up with the chain, `catching_up` will become false. At that point, you can start using your node to create a validator. If you need to sync using a snapshot, please use https://kava.quicksync.io/ To check the logs of the node: ```bash -sudo journalctl -u kvd -f +sudo journalctl -u kavad -f ``` ## Creating a Validator First, create a wallet, which will give you a private key / public key pair for your node. ```bash # Replace with a name for your key that you will remember -kvcli keys add +kava keys add # To see a list of wallets on your node -kvcli keys list +kava keys list ``` **Be sure to write down the mnemonic for your wallet and store it securely. Losing your mnemonic could result in the irrecoverable loss of KAVA tokens.** To see the options when creating a validator: ```bash -kvcli tx staking create-validator -h +kava tx staking create-validator -h ``` An example of creating a validator with 50KAVA self-delegation and 10% commission: ```bash # Replace with the key you created previously -kvcli tx staking create-validator \ +kava tx staking create-validator \ --amount=50000000ukava \ ---pubkey=$(kvd tendermint show-validator) \ +--pubkey=$(kava tendermint show-validator) \ --moniker="choose moniker" \ ---website="optional website for your validator" ---details="optional details for your validator" +--website="optional website for your validator" \ +--details="optional details for your validator" \ --commission-rate="0.10" \ --commission-max-rate="0.20" \ --commission-max-change-rate="0.01" \ --min-self-delegation="1" \ ---from= \ ---chain-id=kava-8 \ ---gas=auto +--from= \ +--chain-id=kava-9 \ +--gas=auto \ --gas-adjustment=1.4 ``` To check on the status of your validator: ```bash -kvcli status --output json | jq '.validator_info' +kava status --log_format json | jq '.ValidatorInfo' ``` After you have completed this guide, your validator should be up and ready to receive delegations. Note that only the top 100 validators by weighted stake (self-delegations + other delegations) are eligible for block rewards. To view the current validator list, checkout one of the Kava block explorers: - https://www.mintscan.io/kava