Kava

This guide presents you the Kava Node setup for both testnet and mainnet, as well as the integration with Axelar Network.

Prerequisites

Install Kava

Install the appropriate Golang version (found on their GitHub, linked above).

git clone https://github.com/Kava-Labs/kava
cd kava
git checkout [release tag]
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 init [your_moniker_name] —chain-id kava_2221-16000
kava tendermint unsafe-reset-all --home $HOME/.kava
cd $HOME/.kava/config
rm genesis.json

Set up the Genesis file

wget https://kava-genesis-files.s3.us-east-1.amazonaws.com/kava_2222-10/genesis.json
wget https://raw.githubusercontent.com/Kava-Labs/kava-testnets/master/16000/genesis.json

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

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"
persistent_peers = "0ecf6974e645d267e1c40223fabc59521229de5a@203.238.191.195:26656,19a109e7b1bdbe020db34d883fc740006fd96d9e@54.205.248.136:26656,a610e40ec9c15ceab183bdc71e94fbf9c4c91d70@54.91.207.93:26656,0264f7762530ef4e637f0fcb866bea0b2ea68dd9@34.198.224.121:26656,c22a30eee9f4873a7891603a567d5825db4583a4@65.21.232.149:26756,b2dc431ea24139d5d2d728d6edb546b3dd8ca8ec@54.85.1.24:26656,cb44d1deb4b1732adc1fb81e2bdeed097c5052c2@195.201.108.152:26656,2a0fd732f484647a34076d03501b5ade76a0d056@54.162.132.18:26656,9b2b83d1bccab3c388c379f6b7a19146ee9b4d8b@161.97.155.94:30656,5af375a8f1fb5879087ea573e30976f084f23769@167.235.244.61:26656,8be1950812fe31c91a63eab482d13276fb7cc4c7@95.217.214.138:26656,e2e9d76fb4658f1757d4b51ef34ebbd1e857d1c5@88.99.25.84:26656,b9f759ca8cf1179ac10b36e6f458c69bf5ee2b85@89.149.218.18:26656,0e7c323c8d558f3aeecee09a679f39f7842287ca@52.207.243.95:26656,ddcc5e1b405fbf5763c7c1b3932c44f3f0917a58@50.19.243.132:26656,220aa32bc7279a43a2ce9af0393945c357e88b27@86.111.48.129:26656,25b3e8aa0c0a7bb47710cb5be1a700c243da211c@3.93.65.190:26656,2972850c607f65354af82c75382fa1745d46b63a@65.21.126.182:26656,9d0bad73fbf1bc53b3e8b4b3c7873980b1843524@18.207.210.224:26656,547f3b5f5907339794f6231d71ac0bd2246bdcb9@65.108.124.57:21656,353ae6090dc1fffb66d55faef6b6133693907af4@3.83.193.144:26656,80f5c216dbb472b483a578154167953c3a2913bb@34.224.245.49:26656,0f7c1725cacc5be8000209bbce4be55b7b5d7fe5@18.232.239.76:26656,4b127af8f935836798fb24b451849c6a28b0bf26@222.106.187.14:54506,a3176f14632e2ce70b879fd7c74b3e63626559d2@54.156.38.39:26656,47b3b6a795febcf3de0b50a65d383a8573e26289@3.80.131.4:26656,8d25035ba3da76aa8257cea0a110ea586511312e@65.109.26.45:26656,3b21dbf61555cbbc3828fca3af26737b81104a32@86.111.48.130:26656,ed0212d3afc1d6c9a02b785ca1577e1ee6609672@52.205.115.127:26656,d4b23cf74b22ea4c8be862151486dd7301e0b84b@44.199.250.214:26656,0f3bcd2ac6f13522600a7a20861c4c5354bf518e@34.226.104.212:26656,b859111f93f4d461a6de749e865c7fef2ac912d8@139.162.210.87:26656"

Add minium 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 ection “EVM Configuration”

Pruning configuration

For the purposes of Axelar, Kava RPC nodes can be kept fully pruned. Update the pruning config in $HOME/.kava/config/app.toml as below

pruning="everything"

State sync script

Create a state sync script statesync.sh with the following code and replace the RPC var for the appropriate network.

https://kava-mainnet.chainode.tech:443
https://kava-testnet.chainode.tech:443
#!/bin/bash

RPC="RPC"

LATEST_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)); \
TRUST_HASH=$(curl -s "$RPC/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\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.kava/config/config.toml

Run the script with appropriate permissions.

chmod 700 statesync.sh
./statesync.sh

Configure systemd

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

[Service]
User=<your_user>
ExecStart=/home/<your_user>/go/bin/kava start
Restart=always
RestartSec=3
LimitNOFILE=16384

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable kvd
sudo systemctl daemon-reload
sudo systemctl start kvd

Configure vald

In order for vald to connect to your RPC node, it should be exposed in vald’s config.toml.

[[axelar_bridge_evm]]

name = "kava"
rpc_addr = "http://IP:PORT"
start-with-bridge = true
[[axelar_bridge_evm]]

name = "kava"
rpc_addr = "http://IP:PORT"
start-with-bridge = true
Edit this page