logo

Lava

LAVA
  • Network:

    Testnet

  • Chain ID:

    lava-testnet-2

  • Current Node Version:

    5.5.1

Overview

Lava presents a transformative approach to blockchain data access with its innovative modular network, designed to attract fast, reliable, and cost-efficient infrastructure providers. This review delves into the core features and benefits that make Lava a standout solution in the blockchain ecosystem.

Introduction to Lava Lava stands out as the first modular data access layer for blockchains, introducing a novel concept called specs. This modular primitive allows contributors to add support for new chains and data services seamlessly. Initially focusing on RPC (Remote Procedure Call), Lava is set to expand its capabilities by integrating with indexing and API partners, such as Subsquid.

How Lava Works Lava operates by connecting data consumers with a network of data providers, including node operators. The protocol incentivizes providers to deliver high-quality service, ensuring optimal speed, uptime, and data accuracy. By leveraging a peer-to-peer network, Lava creates a scalable and dynamic market for blockchain data services.

Key Features

  • Quality of Service (QoS): Consumers can monitor and rate providers based on performance metrics. Providers must attach their QoS score when requesting rewards, ensuring that only high-quality service is rewarded.

  • Data Reliability: Lava employs fraud and fault detection mechanisms, using statistical inference and verifiable random selections to ensure data accuracy. This system penalizes providers found to be at fault, maintaining a trustworthy network.

  • Privacy & Anonymity: Random distribution of relays between top providers ensures that consumers receive services from varied providers, enhancing privacy. Direct consumer-provider communications further ensure anonymity.

  • Scalability: Lava's architecture is designed for scalability, incorporating features like a single-step reward system and direct communication between providers and dApps to enhance efficiency.

  • Decentralized Access: Lava promotes decentralized access, with all relays conducted peer-to-peer (P2P), ensuring a truly decentralized network.

  • Open Source: Committed to transparency and innovation, Lava's code is open source, allowing developers to investigate and contribute to its continuous improvement.

Conclusion Lava's modular approach and commitment to quality, reliability, privacy, and scalability position it as a pioneering force in the blockchain data access space. Its innovative architecture and decentralized ethos make it a valuable asset for developers and data consumers seeking efficient and reliable multi-chain access.

Public Endpoints

TypeEndpointLink
RPChttps://lava-testnet-rpc.crouton.digital arrow right icon
APIhttps://lava-testnet-api.crouton.digital arrow right icon
gRPClava-testnet-grpc.crouton.digital:19990
peerc0165f15a0489f8619e1f7cc0484c5ecab55b48a@65.109.93.124:19956

Guide

INFOINFO

This guide provides a complete and reliable setup for running a Lava mainnet node and validator. Here you’ll find everything you need - from downloading binaries and configuration files to initializing the node, managing keys, applying snapshots, and maintaining a stable validator environment. Follow the steps carefully to ensure a smooth and secure deployment on the Lava network.

Prepare

Update and install packages

sudo apt update && sudo apt upgrade -y && \ sudo apt install curl tar wget clang pkg-config libssl-dev libleveldb-dev jq build-essential bsdmainutils git make ncdu htop screen unzip bc fail2ban htop -y

Installing Go

VER="1.22.0" cd $HOME && \ 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

Binary

git clone https://github.com/lavanet/lava lava cd lava git checkout 5.5.1 make install lavad version --long | grep -e version -e commit # version: 5.5.1 # commit: b52a38c46bcc0ef519f57637ec1865f5671cfa07

Initialization

Initialize the node (replace VALIDATOR_NAME with your own)

lavad init VALIDATOR_NAME --chain-id lava-testnet-2 && \ lavad config chain-id lava-testnet-2 && \ lavad config keyring-backend os

Genesis

Download genesis

wget https://storage.crouton.digital/testnet/lava/files/genesis.json -O $HOME/.lava/config/genesis.json

Addrbook

Download addrbook

wget https://storage.crouton.digital/testnet/lava/files/addrbook.json -O $HOME/.lava/config/addrbook.json

Configuration

EXTERNAL_IP=$(wget -qO- eth0.me) NODE_NUMBER="1" sed -i.bak \ -e "s/\(proxy_app = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))58\"/" \ -e "s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))57\"/" \ -e "s/\(pprof_laddr = \"\)\([^:]*\):\([0-9]*\).*/\1localhost:$(($NODE_NUMBER + 60))60\"/" \ -e "/\[p2p\]/,/^\[/{s/\(laddr = \"tcp:\/\/\)\([^:]*\):\([0-9]*\).*/\1\2:$(($NODE_NUMBER + 266))56\"/}" \ -e "/\[p2p\]/,/^\[/{s/\(external_address = \"\)\([^:]*\):\([0-9]*\).*/\1${EXTERNAL_IP}:$(($NODE_NUMBER + 266))56\"/; t; s/\(external_address = \"\).*/\1${EXTERNAL_IP}:$(($NODE_NUMBER + 266))56\"/}" \ -e "s/\(prometheus_listen_addr = \":\)\([0-9]*\).*/\1$(($NODE_NUMBER + 266))60\"/" $HOME/.lava/config/config.toml sed -i.bak \ -e "/\[api\]/,/^\[/{s/\(address = \"tcp:\/\/\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 13))17\4/}" \ -e "/\[grpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 90))90\4/}" \ -e "/\[grpc-web\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 90))91\4/}" \ -e "/\[json-rpc\]/,/^\[/{s/\(address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 85))45\4/}" \ -e "/\[json-rpc\]/,/^\[/{s/\(ws-address = \"\)\([^:]*\):\([0-9]*\)\(\".*\)/\1\2:$(($NODE_NUMBER + 85))46\4/}" $HOME/.lava/config/app.toml echo "export NODE=http://localhost:$(($NODE_NUMBER + 266))57" >> $HOME/.bash_profile && \ source $HOME/.bash_profile && \ lavad config node $NODE

Create a service file

sudo tee /etc/systemd/system/lavad.service > /dev/null <<EOF [Unit] Description=lava_node After=network.target [Service] User=$USER Type=simple ExecStart=$(which lavad) start --home $HOME/.lava Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF

Start the node

sudo systemctl daemon-reload && \ sudo systemctl enable lavad && \ sudo systemctl restart lavad && \ sudo journalctl -u lavad -f -o cat

Snapshot

Block HeightSizeIndexerLast SnapshotDownload
4212901null2025-11-14T01:14:42.045357449Z arrow right icon

Restore node from snapshot

sudo apt install lz4 -y && \ sudo systemctl stop lavad && \ cp $HOME/.lava/data/priv_validator_state.json $HOME/.lava/priv_validator_state.json.backup && \ rm -rf $HOME/.lava/data && \ curl https://storage.crouton.digital/testnet/lava/snapshots/lava_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.lava && \ mv $HOME/.lava/priv_validator_state.json.backup $HOME/.lava/data/priv_validator_state.json && \ sudo systemctl restart lavad && \ sudo journalctl -u lavad -f

State Sync

Restore node from state sync

SNAP_RPC="https://lava-testnet-rpc.crouton.digital:443" && \ sudo systemctl stop lavad && \ cp $HOME/.lava/data/priv_validator_state.json $HOME/.lava/priv_validator_state.json.backup && \ lavad tendermint unsafe-reset-all --home $HOME/.lava --keep-addr-book && \ peers="c0165f15a0489f8619e1f7cc0484c5ecab55b48a@65.109.93.124:19956" && \ 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 - 1000)) && \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) && \ echo "$LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH" && sleep 2 && \ 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 && \ mv $HOME/.lava/priv_validator_state.json.backup $HOME/.lava/data/priv_validator_state.json && \ sudo systemctl restart lavad && \ sudo journalctl -u lavad -f

Upgrade Node

VER="v5.5.1" git clone https://github.com/lavanet/lava lava && \ cd $HOME && \ rm -rf lava && \ git clone https://github.com/lavanet/lava lava && \ cd lava && \ git checkout tags/$VER -b $VER && \ make install && \ sudo systemctl restart lavad && \ sudo journalctl -u lavad -f

Delete Node

sudo systemctl stop lavad && \ sudo systemctl disable lavad && \ sudo rm -rf /etc/systemd/system/lavad.service && \ sudo rm "$(which lavad)" && \ sudo rm -rf "$HOME/.lava"

Key management

# This command generates a new wallet with a unique keypair. # Use this to create a secure, brand-new wallet for transactions. # Your wallet name = "wallet" lavad keys add wallet

Validator management

lavad tx staking create-validator \ --amount 1000000ulava \ --moniker "VALIDATOR_NAME" \ --identity "" \ --website "" \ --details "" \ --from wallet \ --commission-rate 0.1 \ --commission-max-rate 0.2 \ --commission-max-change-rate 0.01 \ --min-self-delegation 1 \ --pubkey $(celestia-appd tendermint show-validator) \ --chain-id lava-testnet-2 \ --gas auto \ --gas-adjustment 1.4 \ --gas-prices 0.002ulava \ -y

Validator commands

# Retrieves comprehensive information regarding the validator. # This command is utilized to fetch details about the current validator, including its address, public key, and associated data. # Your wallet name = "wallet" lavad q staking validator $(lavad keys show wallet --bech val -a)

Onchain

# Withdraw all accumulated rewards from your account. # This command retrieves and withdraws all rewards earned from staking. # Your wallet name = "wallet" lavad tx distribution withdraw-all-rewards --from wallet --chain-id lava-testnet-2 --gas-adjustment=1.15 --gas auto --gas-prices 0.002ulava -y

Chat With Us

Connect directly with our team by filling out the contact form. Whether you’re looking to optimize staking yields, deploy validator nodes, integrate RPC services, or find a reliable validator partner for your blockchain or project — we’re here to help.

We can explore Web3 and blockchain infrastructure solutions together and tailor our support to your long-term goals. Schedule a meeting, and let’s discuss your long-term goals.

Crouton Digital respects your privacy. By submitting this form, you are acknowledging that you have read and agree to our Privacy Policy, which details how we collect and use your information.