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
| Type | Endpoint | Link |
|---|---|---|
| RPC | https://lava-testnet-rpc.crouton.digital | |
| API | https://lava-testnet-api.crouton.digital | |
| gRPC | lava-testnet-grpc.crouton.digital:19990 | |
| peer | [email protected]:19956 |
Hardware requirements
Recommended server specs for a Lava validator: 16 GB RAM, 4 CPU cores, and 512 GB of SSD storage.
Prepare
Update and install packages
sudo apt update && sudo apt upgrade -y && \ sudo apt install -y curl git wget jq make gcc clang tmux screen htop ncdu unzip tar lz4 bc build-essential pkg-config libssl-dev libleveldb-dev bsdmainutils fail2ban
Installing Go
VER="1.24.1" && \ 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" && \ mkdir -p $HOME/go/bin && \ grep -qxF 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' $HOME/.bash_profile || echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile && \ source $HOME/.bash_profile && \ go version
Binary
Building from source
cd $HOME && \ rm -rf lava && \ git clone https://github.com/lavanet/lava.git lava && \ cd lava && \ APP_VERSION="v5.5.1" && \ git checkout tags/$APP_VERSION -b $APP_VERSION && \ export LAVA_BINARY=lavad && \ make install && \ lavad version --long | grep -E 'version|commit' # version: 5.5.1 # commit: b52a38c46bcc0ef519f57637ec1865f5671cfa07
Initialization
Initialize the node and create the default configuration files
lavad init MONIKER --chain-id lava-testnet-2
Replace MONIKER with your own validator name. This name will be used as your node’s identifier on the network.
Genesis
Download genesis
mkdir -p $HOME/.lava/config && \ wget -O $HOME/.lava/config/genesis.json https://storage.crouton.digital/testnet/lava/files/genesis.json
Addrbook
Download addrbook
mkdir -p $HOME/.lava/config && \ wget -O $HOME/.lava/config/addrbook.json https://storage.crouton.digital/testnet/lava/files/addrbook.json
Configuration
Set the minimum gas price in app.toml
sed -i.bak \ -e 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.000000001ulava"|' \ $HOME/.lava/config/app.toml
Create a service file
sudo tee /etc/systemd/system/lavad.service > /dev/null <<EOF [Unit] Description=lava node After=network-online.target [Service] User=$USER WorkingDirectory=$HOME/.lava ExecStart=$(which lavad) start --home $HOME/.lava Restart=on-failure RestartSec=5 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
Restore node from snapshot
sudo apt install -y lz4 && \ 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 -L https://storage.crouton.digital/testnet/lava/snapshots/lava_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.lava && \ mkdir -p $HOME/.lava/data && \ mv $HOME/.lava/priv_validator_state.json.backup $HOME/.lava/data/priv_validator_state.json && \ sudo systemctl restart lavad && \ sudo journalctl -u lavad -f -o cat
Key management
Wallet management commands are provided below as examples. Replace wallet with your own wallet name before running them.
lavad keys add wallet
After creating or importing your wallet, fund it with at least the minimum amount required by the network to create a validator. On Lava testnet, this means funding your wallet with LAVA for self-delegation plus transaction fees.
Validator management
lavad tx staking create-validator \ --amount 1000000ulava \ --from wallet \ --commission-rate 0.1 \ --commission-max-rate 0.2 \ --commission-max-change-rate 0.01 \ --min-self-delegation 1 \ --pubkey "$(lavad comet show-validator)" \ --moniker "MONIKER" \ --identity "TESTKEY123" \ --website "https://example.com" \ --details "Reliable validator for the network." \ --chain-id lava-testnet-2 \ --gas auto \ --gas-adjustment 1.4 \ --gas-prices 0.000000001ulava \ -y
Replace the example values with your own details. If the command fails or the transaction does not go through, try increasing the gas limit or the commission fee.
Validator commands
lavad status 2>&1 | jq
Make sure to replace wallet with the name of your wallet before running the command.
Governance
lavad q gov proposals
"1" is only an example proposal ID, so replace it with the actual one. Available voting options are "yes" to approve, "no" to reject, "abstain" to abstain, and "no_with_veto" to reject with veto.
Onchain
lavad tx distribution withdraw-rewards $(lavad keys show wallet --bech val -a) --commission --from wallet --chain-id lava-testnet-2 --gas auto -y
lavad tx staking delegate $(lavad keys show wallet --bech val -a) 1000000ulava --from wallet --chain-id lava-testnet-2 --gas 300000 --fees 2000ulava -y
These commands contain example values. Be sure to replace them with your own validator address, wallet name, wallet address, and any other required details before running them.
Service operations
sudo journalctl -u lavad -f -o cat
Manual upgrade
cd $HOME && \ rm -rf lava && \ git clone https://github.com/lavanet/lava.git lava && \ cd lava && \ APP_VERSION=v5.5.1 && \ git checkout tags/$APP_VERSION -b $APP_VERSION && \ export LAVA_BINARY=lavad && \ make install && \ sudo systemctl restart lavad && \ sudo journalctl -u lavad -f


