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).

Terminal window
git clone https://github.com/Kava-Labs/kava
cd kava

Terminal window
git checkout [release tag]
Terminal window
git checkout [release tag]

Terminal window
make install
# verify versions
kava version --long

Setup Kava Node

Initialize Kava config

Terminal window
kava init [your_moniker_name] --chain-id kava_2222-10
Terminal window
kava init [your_moniker_name] --chain-id kava_2221-16000

Terminal window
kava tendermint unsafe-reset-all --home $HOME/.kava
cd $HOME/.kava/config
rm genesis.json

Set up the Genesis file

Terminal window
wget https://kava-genesis-files.s3.us-east-1.amazonaws.com/kava_2222-10/genesis.json
Terminal window
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.

Terminal window
"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" ```
</tab-item>
<tab-item title="Testnet">
```bash 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

Terminal window
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.

Terminal window
https://kava-mainnet.chainode.tech:443
Terminal window
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.

Terminal window
chmod 700 statesync.sh
./statesync.sh

Configure systemd

Terminal window
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.

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

Edit on GitHub