Join Lava Mainnet
1. Setup working environment
-
Verify hardware requirements are met.
-
Update the system and install dependencies:
noteYou may need to run as
sudo
-
Install required packages:
### Packages installations
sudo apt update
sudo apt install -y unzip logrotate git jq lz4 sed wget curl coreutils make gcc
sudo apt -qy upgrade -
Install Go:
### Configurations
go_package_url="https://go.dev/dl/go1.23.3.linux-amd64.tar.gz"
go_package_file_name=${go_package_url##*\/}
# Download Go
wget -q $go_package_url
# Unpack the Go installation file
sudo tar -C /usr/local -xzf $go_package_file_name
# Environment adjustments
echo "export PATH=\$PATH:/usr/local/go/bin" >>~/.profile
echo "export PATH=\$PATH:\$(go env GOPATH)/bin" >>~/.profile
source ~/.profile -
Verify installation:
-
You can verify the installed go version by running:
go version
-
Verify that
GOPATH
includes$HOME/go
:go env GOPATH
If
$HOME/go
isn't included, add it by running:export GOPATH=$HOME/go
-
Verify that your PATH include
$HOME/go/bin
:echo $PATH
-
-
2. Set your moniker
Set your moniker name. You can change your moniker in the future.
MONIKER="YOUR_MONIKER_NAME"
3. Install Lava binaries
To run the Lava mainnet node, you will need a lavad
binary installed on your machine:
#Download lavad
cd $HOME
git clone https://github.com/lavanet/lava.git
cd lava
git checkout v5.2.0
# Build binaries
export LAVA_BINARY=lavad
make build
# Prepare binaries for Cosmovisor
mkdir -p $HOME/.lava/cosmovisor/genesis/bin
mv build/lavad $HOME/.lava/cosmovisor/genesis/bin/
rm -rf build
# Create application symlinks
ln -s $HOME/.lava/cosmovisor/genesis $HOME/.lava/cosmovisor/current -f
sudo ln -s $HOME/.lava/cosmovisor/current/bin/lavad /usr/local/bin/lavad -f
You can always set a specific version of lavad
binary as described in lavad
reference.
4. Set up Cosmovisor service
Install cosmovisor to ensure any future upgrades happen flawlessly. To install Cosmovisor:
go install cosmossdk.io/tools/cosmovisor/cmd/[email protected]
Create the service
sudo tee /etc/systemd/system/lava.service > /dev/null << EOF
[Unit]
Description=lava node service
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
sudo systemctl daemon-reload
sudo systemctl enable lava.service
5. Initialize the chain
Initialize the chain setup:
lavad init $MONIKER --chain-id lava-mainnet-1
Download genesis and addrbook
curl -Ls https://snapshots.kjnodes.com/lava/genesis.json > $HOME/.lava/config/genesis.json
curl -Ls https://snapshots.kjnodes.com/lava/addrbook.json > $HOME/.lava/config/addrbook.json
Configure external seeds
sed -i -e "s|^seeds *=.*|seeds = \"[email protected]:14459\"|" $HOME/.lava/config/config.toml
Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.000000001ulava\"|" $HOME/.lava/config/app.toml
Set pruning
sed -i \
-e 's|^pruning *=.*|pruning = "custom"|' \
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
-e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
$HOME/.lava/config/app.toml
Update chain specific configuration
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
At any moment you can edit the values in the configuration files by navigatin to $HOME/.lava/config/app.toml
and $HOME/.lava/config/config.toml
.
6. Download the latest snapshot
curl -L https://snapshots.kjnodes.com/lava/snapshot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.lava
[[ -f $HOME/.lava/data/upgrade-info.json ]] && cp $HOME/.lava/data/upgrade-info.json $HOME/.lava/cosmovisor/genesis/upgrade-info.json
7. Start the service and check the logs
sudo systemctl start lava.service && sudo journalctl -u lava.service -f --no-hostname -o cat
8. Verify the setup
Verify service setup
Make sure cosmovisor
is running by checking the state of the service:
Check the status of the service
sudo systemctl status lava
To view detailed the service logs - to escape, hit CTRL+C
sudo journalctl -u lava -f
Verify node status
Check if the node is currently in the process of catching up:
# Check if the node is currently in the process of catching up
lavad status | jq .SyncInfo.catching_up
If the outcome of this command is false
it means that your node has already caught up and you are ready to move to the next step.
Welcome to Lava Mainnet 🌋
You are now running a Node in the Lava network 🎉🥳!
When you're ready, start putting the node to use as a validator: