Skip to main content

Kava Node Setup Guide

This guide presents you the Kava Node setup for Mainnet.

Prerequisites

Storage

The monthly storage requirements for a node are as follows. These are estimated values based on experience, but should serve as a good guide.

  • An archival node (pruning = "nothing") grows at a rate of ~100 GB per month Current total disk usage is 6TB, so a larger disk would be necessary.
  • A full pruning node (pruning = "everything") grows at a rate of ~5 GB per month
  • A default pruning node (pruning = “default”) grows at a rate of ~25 GB per month

Memory

The minimum memory requirements for a node are as follows. These are estimated values based on experience, but should serve as a good guide.

  • An archival node (pruning = "nothing") should have at least 128GB of dedicated memory (256GB is optimal to avoid possible OOM errors due to other system utilization)
  • A full pruning node (pruning = "everything") should have at least 64GB of dedicated memory
  • A default pruning node (pruning = “default”) should have at least 64GB of dedicated memory

Install Kava

Mainnet

git clone https://github.com/kava-labs/kava
cd kava
git checkout [release tag]
make install

#verify versions
kava version --long

Setup Kava Node

Initialize Kava Config

kava init [your_moniker_name] --chain-id kava_2222-10
kava tendermint unsafe-reset-all --home $HOME/.kava
cd $HOME/.kava/config
rm genesis.json

Setup the Genesis File

wget https://kava-genesis-files.s3.us-east-1.amazonaws.com/kava_2222-10/genesis.json

Edit $HOME/.kava/config/config.toml to add the following persistent peers.

Mainnet

persistent_peers = "2a15d9c39eea97b4cf00480b45d4ea32a2e173d0@94.130.78.22:26656,5a933891627e8bde0c4bd0b43c9f99b706e520a2@141.95.99.214:11656,ab3064c37d406245fa2d6e6109395518e8ac8a4c@95.111.255.148:26656,41d88639239c55fd37279d24df507238e1c417ea@85.237.192.104:26656,b23050c89f8cb2f4099688b2bcd60f49b15f41d1@95.214.53.217:26656,d5db8898d40054c07442f3364b32f7fac2752f5e@188.34.178.92:26656,fc34d9a3aff6026a3dbd531a96a50680df61dd91@50.116.3.21:26656,50e4cad7d5e28f7b6495168f92e12bf810e293fd@142.132.152.187:10856,6885971cdb724fa93034fb9e6a11113a6f555d2a@15.235.53.92:11656,7b5a2b519cb5a7d70f0fc5842829d4cce1262585@65.108.121.153:26656,51cfccb07d5a45efdf98d005159c01f0656751ad@54.165.27.59:26656,f7c894901f450b92614fd051d10854d168ec30b5@65.21.94.20:10856,7393ed21b6dc516fcc0ad33c4fe42bdd295d2795@18.206.217.244:26656,508d7ec33c7f3c9c479ca9b845cadbbefee670f7@162.55.133.237:21656,d68410115d7681196651e7fece9e4cafc0456856@3.0.206.176:26656,4cfdd459466cfd492d66b7a5fe26cde96e35d735@182.48.203.7:26656,63ec88e98fc267fb82fa62a51ca5c0a2c115d749@51.38.53.4:27656,ebc272824924ea1a27ea3183dd0b9ba713494f83@185.16.39.172:26656,4efe3caf3b8c0ca197d40756f3bb1bd6081bf18d@51.210.220.20:36656,c124ce0b508e8b9ed1c5b6957f362225659b5343@136.243.248.185:26656,82588f011491c6100d922d133f52fc23460b9231@95.217.91.233:26656,8b5c4a890c8ae7efbbe3360af71be1c3c3a9e12e@121.78.241.68:46656,ce203135031ab08fc0ddff5bd13806e25f21b91d@3.115.125.121:26656,dcd6026ebe5586ed0e94751090f8290b5997666b@5.189.165.172:26656,bc61c26018f65e54232b7e9e99bf7599dffeb78b@13.56.56.180:26656"\\
seeds = "b334e291ac361f9a1cf253d290047700b488b679@52.2.147.96:26656"

Add minimum gas prices into app.toml

minimum-gas-prices = "0.025ukava;1000000000akava"

Do the rest of the port configuration as desired; The EVM configuration and ports can be found in the app.toml under section "EVM Configuration"

Setting Up Your Pruning Node

To setup a pruning node, you can get started using one of the following:

  • Nodies provides snapshots hosted in multiple regions for faster access. Download the latest pruned goleveldb snapshot using aria2c (detailed guide here):
### Options: 'de' for Europe, 'use' for US, 'sgp' for Asia
export REGION=de

aria2c -s 10 -x 10 https://download.nodies.org/download/latest/snapshot/${REGION}/kava/mainnet/pruned
  • Go to Quicksync and download the .tar pruned snapshot file
  • Sync without the pruned snapshot file

Please note that Quicksync’s and Nodies' pruned snapshots should be run using Goleveldb flag for your setup.

Setting Up Your Archival Node

To setup an archival node, you must download the correct version of the kava node data and sync a node:

  • Nodies provides snapshots hosted in multiple regions for faster access. Download the latest archive rocksdb snapshot using aria2c (detailed guide here):
### Options: 'de' for Europe, 'use' for US, 'sgp' for Asia
export REGION=de

aria2c -s 10 -x 10 https://download.nodies.org/download/latest/snapshot/${REGION}/kava/mainnet/archive
  • Go to Quicksync and download the archive .tar snapshot file to be used (please note that you should only download this file once)
  • Ensure you are using the correct network (current mainnet=kava_2222-10)

Please ensure you compile your archive node with rocksdb flag for your setup.

Creating a New Data Folder Using Node Tar File

Requirements:
  • Ensure the kava process is not running
  • Disk large enough for the data directory, which is around 6TB uncompressed. Ideally 12TB for room for growth
  • Zst compression library:
sudo apt-get install zstd

Steps:

  1. Downloading the tar file
  • Example using aria2c:
aria2c --continue -x16 --file-allocation=falloc
  1. Extract the tar file
tar -I unzstd -xvf - -C /path/to/your/kava/data
  1. Replace data directory in your kava directory with the extracted data if necessary.

Compiling Kava with RocksDB Support

The provided quicksync archive snapshot is from a Kava mainnet node that uses RocksDB as the database backend. RocksDB is used as a more efficient and performant choice for Kava’s production infrastructure than the default GolevelDB database backend.

Config Recommendations

  1. Set lazy loading on in the app.toml file for faster initial load (optional)
iavl-lazy-loading = true
  1. Ensure rocksdb is enabled in the config.toml file
db_backend = "rocksdb"

Install RocksDB on your system

Install RocksDB on your machine, use version v8.1.1

Compiling Kava binary with RocksDB flag

  • Check out Kava mainnet version source code
  • Change into that directory
  • Run make install COSMOS_BUILD_OPTIONS=rocksdb

Building Kava using Docker Images

If you are using docker to build kava using rocksdb please utilize the docker file in your configuration.

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 <your_user> with the user on your server:

sudo tee /etc/systemd/system/kava.service > /dev/null <<'EOF'
[Unit]
Description=Kava daemon
After=network-online.target

[Service]
User=<your_user>
ExecStart=/home/<your_user>/go/bin/kava start
Restart=on-failure
RestartSec=3
LimitNOFILE=4096

[Install]
WantedBy=multi-user.target
EOF

To start syncing:

# Start the node
sudo systemctl enable kava
sudo systemctl start kava

To check on the status of syncing:

kava status --log_format json | jq '.sync_info'

This will give output like:

{
"latest_block_hash": "920E4D32F02CFF8064D26DD7D34C65DC623F4026C65C192BBCD7DBF19AFB5630",
"latest_app_hash": "442E7E55982109D9F73467EA0E374312B402AE620DEC81CB3441E949ED0D0A29",
"latest_block_height": "2437",
"latest_block_time": "2022-05-25T23:07:36.752766828Z",
"earliest_block_hash": "9D2AF876309BB9174604004A813DCFEE94F4947B08C5BB4C1A042F318488851E",
"earliest_app_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"earliest_block_height": "1",
"earliest_block_time": "2022-05-25T17: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.

To check the logs of the node:

sudo journalctl -u kava -f

Create Validator Node

If you would like to setup a validator, continue the steps outlined in Run Validator Node