Lava is the first modular network for blockchain access that introduces a new approach: "specifications" is a primitive that allows participants to add support for new chains and data services to the underlying protocol without permissions. RPC is the network's first supported service. Developers integrate Lava into their projects to retrieve data, and network node operators are motivated to respond quickly, accurately, and reliably. Lava creates a fast, scalable, and unified network for accessing a multi-networked world.
Minimum hardware requirements:
Node type |
CPU |
RAM |
Storage |
Testnet |
4 |
8GB |
150GB |
wget -O lava https://raw.githubusercontent.com/111STAVR111/props/main/Lava/lava && chmod +x lava && ./lava
server preparation
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y
Install GO 1.21.6
ver="1.21.6"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version
Build 19.08.24
cd $HOME && mkdir $HOME/go/bin/
wget -O lavad https://github.com/lavanet/lava/releases/download/v2.5.0/lavad-v2.5.0-linux-amd64
chmod +x lavad
mv lavad $HOME/go/bin/lavad
lavad version --long | grep -e commit -e version
Initialization
lavad init STAVR_guide --chain-id=lava-testnet-2
lavad config chain-id lava-testnet-2
Create/Restore Wallet
lavad keys add <walletname>
OR
lavad keys add <walletname> --recover
Uploading Genesis file
curl -s "https://raw.githubusercontent.com/111STAVR111/props/main/Lava/genesis.json" > $HOME/.lava/config/genesis.json
sha256sum $HOME/.lava/config/genesis.json
Setting minimum gas and peer/sid price
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = "0ulava"/" $HOME/.lava/config/app.toml
external_address=$(wget -qO- eth0.me)
sed -i.bak -e "s/^external_address *=.*/external_address = "$external_address:26656"/" $HOME/.lava/config/config.toml
peers=""
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = "$peers"/" $HOME/.lava/config/config.toml
Setting up pruning (optional)
pruning="custom"
pruning_keep_recent="1000"
pruning_keep_every="0"
pruning_interval="100"
sed -i -e "s/^pruning *=.*/pruning = "$pruning"/" $HOME/.lava/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = "$pruning_keep_recent"/" $HOME/.lava/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = "$pruning_keep_every"/" $HOME/.lava/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = "$pruning_interval"/" $HOME/.lava/config/app.toml
Setting up indexer (optional)
indexer="null" &&
sed -i -e "s/^indexer *=.*/indexer = "$indexer"/" $HOME/.lava/config/config.toml
Uploading addrbook
wget -O $HOME/.lava/config/addrbook.json "https://raw.githubusercontent.com/111STAVR111/props/main/Lava/addrbook.json"
Creating a service file
sudo tee /etc/systemd/system/lavad.service > /dev/null <<EOF
[Unit]
Description=lava
After=network-online.target
[Service]
User=$USER
ExecStart=$(which lavad) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
StateSync Lava Testnet
SNAP_RPC=https://lava.rpc.t.stavr.tech:443
peers="46a02fc2908aec60985fd2852c424907d6f79ed7@lava.peers.stavr.tech:197"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = "$peers"/" $HOME/.lava/config/config.toml
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height);
BLOCK_HEIGHT=$((LATEST_HEIGHT - 100));
TRUST_HASH=$(curl -s "$SNAP_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"$SNAP_RPC,$SNAP_RPC"| ;
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|1$BLOCK_HEIGHT| ;
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|1"$TRUST_HASH"| ;
s|^(seeds[[:space:]]+=[[:space:]]+).*$|1""|" $HOME/.lava/config/config.toml
lavad tendermint unsafe-reset-all --home /root/.lava
sudo systemctl daemon-reload
sudo systemctl enable lavad
sudo systemctl restart lavad && sudo journalctl -fu lavad -o cat
lavad tx staking create-validator
--amount 1000000ulava
--from <walletName>
--commission-max-change-rate "0.1"
--commission-max-rate "0.2"
--commission-rate "0.1"
--min-self-delegation "1"
--pubkey $(lavad tendermint show-validator)
--moniker STAVR_guide
--chain-id lava-testnet-2
--identity=""
--details=""
--website="" -y
Deleting a node:
sudo systemctl stop lavad
sudo systemctl disable lavad
rm /etc/systemd/system/lavad.service
sudo systemctl daemon-reload
cd $HOME
rm -rf .lava
rm -rf $(which lavad)
Also read our instruction - Mantra: description, Node installation