lava Node Installation

Install essential tools

sudo apt -y update sudo apt -y install curl git jq lz4 build-essential sudo apt -y upgrade
Install GO package

The required version for proper compilation and operation of the node may change. Please stay updated by following the relevant sources.

sudo rm -rf /usr/local/go curl -Ls https://go.dev/dl/go1.22.12.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh) eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
Install binaries and Initialize the node

Compile lavad. Please check needed version for particular height.

version="v5.3.0" cd $HOME rm -rf lava git clone https://github.com/lavanet/lava.git cd lava git checkout $version export LAVA_BINARY=lavad make build

Move binaries for systemd and CLI usage

mkdir -p $HOME/.lava/cosmovisor/genesis/bin mv $HOME/lava/build/lavad $HOME/.lava/cosmovisor/genesis/bin/

Initialize the node

lavad config chain-id lava-mainnet-1 lavad config keyring-backend file

Set your moniker instead <YOUR_MONIKER>

lavad init <YOUR_MONIKER> --chain-id lava-mainnet-1

Download Genesis

curl -Ls https://raw.githubusercontent.com/lavanet/lava-config/refs/heads/main/mainnet-1/genesis_json/genesis.json > $HOME/.lava/config/genesis.json

Add live peers

peers=$(curl -sS https://rpc-lava.theamsolutions.info/net_info | jq -r '.result.peers[] | "(.node_info.id)@(.remote_ip):(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}' | paste -sd,) sed -i -e "s|^persistent_peers *=.*|persistent_peers = "$peers"|" $HOME/.lava/config/config.toml

Update chain configuration

sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = "0.000000001ulava"|" $HOME/.lava/config/app.toml sed -i -e 's/timeout_commit = ".*"/timeout_commit = "30s"/g' -e 's/timeout_propose = ".*"/timeout_propose = "1s"/g' -e 's/timeout_precommit = ".*"/timeout_precommit = "1s"/g' -e 's/timeout_precommit_delta = ".*"/timeout_precommit_delta = "500ms"/g' -e 's/timeout_prevote = ".*"/timeout_prevote = "1s"/g' -e 's/timeout_prevote_delta = ".*"/timeout_prevote_delta = "500ms"/g' -e 's/timeout_propose_delta = ".*"/timeout_propose_delta = "500ms"/g' -e 's/skip_timeout_commit = ".*"/skip_timeout_commit = false/g' $HOME/.lava/config/config.toml
Launch node VIA Cosmovisor

Install Cosmovisor

go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.6.0

Create links

sudo ln -s $HOME/.lava/cosmovisor/genesis/bin/lavad /usr/local/bin/lavad -f sudo ln -s $HOME/.lava/cosmovisor/genesis $HOME/.lava/cosmovisor/current -f

Create Cosmovisor Systemd file

sudo tee /etc/systemd/system/lavad.service > /dev/null << EOF [Unit] Description="Lava Mainnet Cosmovisor" After=network-online.target [Service] User=$USER ExecStart=$(which cosmovisor) run start Restart=on-failure RestartSec=10 LimitNOFILE=65535 Environment="DAEMON_HOME=$HOME/.lava" Environment="DAEMON_NAME=lavad" Environment="UNSAFE_SKIP_BACKUP=true" [Install] WantedBy=multi-user.target EOF

Launch Node

sudo systemctl daemon-reload sudo systemctl enable lavad.service sudo systemctl restart lavad.service

Check status or logs

sudo systemctl status lavad.service sudo journalctl -u lavad -fn 50 -o cat

Lava Endpoints

RPC

https://rpc-lava.theamsolutions.info

REST

https://rest-lava.theamsolutions.info x

gRPC

grpc-lava.theamsolutions.info

Statesync

SNAP_RPC="https://rpc-lava.theamsolutions.info" LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \ BLOCK_HEIGHT=$(($LATEST_HEIGHT - 2000)); \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash); \ echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \ s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \ s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \ s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.lava/config/config.toml; \ wget -qO $HOME/.lava/config/addrbook.json https://arch.snap-lava.theamsolutions.info/addrbook.json

sudo systemctl stop lavad.service mv $HOME/.lava/data/priv_validator_stat.json $HOME/pvs-back.json lavad tendermint unsafe-reset-all mv $HOME/pvs-back.json $HOME/.lava/data sudo systemctl restart lavad.service

Snapshot

Stop Lava node

sudo systemctl stop lavad.service

Backup validator state file and empty path for new snapshot

cp $HOME/.lava/data/priv_validator_state.json $HOME/priv_val-state.json.backup rm -rf $HOME/.lava/data

Check latest snapshot and install

LAVA_SNAP=$(curl -s https://snapshots.theamsolutions.info | egrep -o ">lava-snap*.*tar" | tr -d ">") curl -L https://snapshots.theamsolutions.info/$LAVA_SNAP | tar xf - -C $HOME/.lava

Restore validator state file and launch

mv $HOME/priv_val-state.json.backup $HOME/.lava/data/priv_validator_state.json sudo systemctl restart lavad.service sudo journalctl -u lavad -fn 50 -o cat

Peer,seed, addrbook

Set live peers

peers=$(curl -sS https://rpc-lava.theamsolutions.info/net_info | jq -r '.result.peers[] | "(.node_info.id)@(.remote_ip):(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}' | paste -sd,) sed -i -e "s|^persistent_peers *=.*|persistent_peers = "$peers"|" $HOME/.lava/config/config.toml

CLI commands

Node status

lavad status 2>&1 | jq .SyncInfo
Key commands

Add new key

lavad keys add key_name

Keys list

lavad keys list