Mainnet
Lambda
Installation Guide
CLI Command
Public Endpoint
Statesync
Snapshot
Explorer
Node Maps
Installation Guide
Installation Guide
CLI Command
Public Endpoint
Statesync
Snapshot
Explorer
Node Maps
How To Install Full Node Lambda Mainnet
Setting up vars
Your Nodename (validator) that will shows in explorer
NODENAME=<Your_Nodename_Moniker>
Save variables to system
echo "export NODENAME=$NODENAME" >> $HOME/.bash_profile
if [ ! $WALLET ]; then
echo "export WALLET=wallet" >> $HOME/.bash_profile
fi
echo "export LAMBDA_CHAIN_ID=lambda_92000-1" >> $HOME/.bash_profile
source $HOME/.bash_profile
Update packages
sudo apt update && sudo apt upgrade -y
Install dependencies
sudo apt install curl build-essential git wget jq make gcc tmux net-tools ccze -y
Install go
if ! [ -x "$(command -v go)" ]; then
ver="1.18.2"
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" >> ~/.bash_profile
source ~/.bash_profile
fi
Download and build binaries
cd $HOME
git clone https://github.com/LambdaIM/lambdavm.git
cd lambdavm
git checkout v1.0.1
make install
Config app
lambdavm config chain-id $LAMBDA_CHAIN_ID
Init app
lambdavm init $NODENAME --chain-id $LAMBDA_CHAIN_ID
Download configuration
wget https://raw.githubusercontent.com/LambdaIM/mainnet/main/lambda_92000-1/genesis.json
mv genesis.json ~/.lambdavm/config/
curl https://raw.githubusercontent.com/konsortech/Node/main/Mainnet/Lambda/addrbook.json > $HOME/.lambdavm/config/addrbook.json
Set seeds and peers
peers="2c4f8e193fd10ab3a2bc919b484fd1c78eceffb3@13.213.214.88:26656,b772a0a8a8ee52c12ff0995ebb670a17db930489@54.225.36.85:26656,277b04415ee88113c304cc3970c88542d6d8f5d3@51.79.91.32:26656,a4ad9857ac5efdd75ec94875b19dd2f0bf562bde@47.75.111.113:26656,13e0e58efbb50df4dc5d39263bda1e432fe204f7@13.229.162.168:26656,ed4fd7dafd7df21f7152d38ee729ec33f505793d@54.254.224.222:26656,53e1c5f1783e839b1b1b51ae57ed2f05b9cdb4f3@13.229.27.15:26656,829503936e022119ce5e9cebf23c8e3a694c70f7@34.159.41.156:26656,d475be798a3b8d9eceb56b5cb276ff75d515cb7b@38.242.215.240:26656,d5bc2c509d730b5211f1e2f4cc95ffbbb6eb6944@194.163.164.52:26656,975afec2ce27ef21eea9d512f68eac8487680b09@135.181.72.187:12123,5a7e747884d496aec70495a767431410edb02167@149.102.139.69:26656,7f07d54901170270d7e7568481867535a363a1d5@65.108.129.104:26656,b029580f30c612176c81df200cf724836bba93c5@49.235.92.21:26656,b2cfe9fa02d93f3fa27cdb45272b5dcf3a075985@138.201.141.76:04656,bdeb4b00fe23900b323a3040a30b81e3c8f82803@23.88.69.167:26989"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" ~/.lambdavm/config/config.toml
Disable indexing
indexer="null" && sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.lambdavm/config/config.toml
Config pruning
pruning="custom" && \
pruning_keep_recent=100 && \
pruning_keep_every=0 && \
pruning_interval=10 && \
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.lambdavm/config/app.toml && \
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.lambdavm/config/app.toml && \
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.lambdavm/config/app.toml && \
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.lambdavm/config/app.toml
Set minimum gas price and timeout commit
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.01ulamb\"/;" $HOME/.lambdavm/config/app.toml
sed -i -e "s/^timeout_commit *=.*/timeout_commit = \"2s\"/" $HOME/.lambdavm/config/config.toml
Create service
sudo tee /etc/systemd/system/lambdavm.service > /dev/null <<EOF
[Unit]
Description=lambdavm
After=network-online.target
[Service]
User=$USER
ExecStart=$(which lambdavm) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Register and start service
sudo systemctl daemon-reload && sudo systemctl enable lambdavm && sudo systemctl restart lambdavm && sudo journalctl -u lambdavm -f -o cat
Guidance for Validator
Create wallet
To create new wallet you can use command below. Don’t forget to save the mnemonic
lambdavm keys add $WALLET
To recover your wallet using seed phrase
lambdavm keys add $WALLET --recover
Show your wallet list
lambdavm keys list
Save wallet info
Add wallet and validator address into variables
LAMBDA_WALLET_ADDRESS=$(lambdavm keys show $WALLET -a)
LAMBDA_VALOPER_ADDRESS=$(lambdavm keys show $WALLET --bech val -a)
echo 'export LAMBDA_WALLET_ADDRESS='${LAMBDA_WALLET_ADDRESS} >> $HOME/.bash_profile
echo 'export LAMBDA_VALOPER_ADDRESS='${LAMBDA_VALOPER_ADDRESS} >> $HOME/.bash_profile
source $HOME/.bash_profile
Fund your wallet
In order to create validator first you need to fund your wallet with buy lambd token.
[N/A](https://app.lambda.im/exchange/cex)
Create validator
check your wallet balance:
lambdavm query bank balances $LAMBDA_WALLET_ADDRESS
To create your validator run command below
lambdavm tx staking create-validator \
--amount 20000000000000000000000ulamb \
--from $WALLET \
--commission-max-change-rate "0.01" \
--commission-max-rate "0.2" \
--commission-rate "0.1" \
--min-self-delegation "1" \
--pubkey $(lambda tendermint show-validator) \
--moniker $NODENAME \
--chain-id $LAMBDA_CHAIN_ID
--gas-prices="0.025ulamb" \
--gas=auto \
Check your validator key
[[ $(lambdavm q staking validator $LAMBDA_VALOPER_ADDRESS -oj | jq -r .consensus_pubkey.key) = $(lambdavm status | jq -r .ValidatorInfo.PubKey.value) ]] && echo -e "\n\e[1m\e[32mTrue\e[0m\n" || echo -e "\n\e[1m\e[31mFalse\e[0m\n"
Get list of validators
lambdavm q staking validators -oj --limit=3000 | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' | jq -r '(.tokens|tonumber/pow(10; 6)|floor|tostring) + " \t " + .description.moniker' | sort -gr | nl
Usefull commands
Service management
Check logs
journalctl -fu lambdavm -o cat
Start service
sudo systemctl start lambdavm
Stop service
sudo systemctl stop lambdavm
Restart service
sudo systemctl restart lambdavm
Node info
Synchronization info
lambdavm status 2>&1 | jq .SyncInfo
Validator info
lambdavm status 2>&1 | jq .ValidatorInfo
Node info
lambdavm status 2>&1 | jq .NodeInfo
Show node id
lambdavm tendermint show-node-id
Wallet operations
List of wallets
lambdavm keys list
Recover wallet
lambdavm keys add $WALLET --recover
Delete wallet
lambdavm keys delete $WALLET
Get wallet balance
lambdavm query bank balances $LAMBDA_WALLET_ADDRESS
Transfer funds
lambdavm tx bank send $LAMBDA_WALLET_ADDRESS <TO_LAMBDA_WALLET_ADDRESS> 20000000000000000000000ulamb
Voting
lambdavm tx gov vote 1 yes --from $WALLET --chain-id=$LAMBDA_CHAIN_ID
Staking, Delegation and Rewards
Delegate stake
lambdavm tx staking delegate $LAMBDA_VALOPER_ADDRESS 20000000000000000000000ulamb --from=$WALLET --chain-id=$LAMBDA_CHAIN_ID --gas=auto
Redelegate stake from validator to another validator
lambdavm tx staking redelegate <srcValidatorAddress> <destValidatorAddress> 20000000000000000000000ulamb --from=$WALLET --chain-id=$LAMBDA_CHAIN_ID --gas=auto
Withdraw all rewards
lambdavm tx distribution withdraw-all-rewards --from=$WALLET --chain-id=$LAMBDA_CHAIN_ID --gas=auto
Withdraw rewards with commision
lambdavm tx distribution withdraw-rewards $LAMBDA_VALOPER_ADDRESS --from=$WALLET --commission --chain-id=$LAMBDA_CHAIN_ID
Validator management
Edit validator
lambdavm tx staking edit-validator \
--moniker=$NODENAME \
--identity=<your_keybase_id> \
--website="<your_website>" \
--details="<your_validator_description>" \
--chain-id=$LAMBDA_CHAIN_ID \
--from=$WALLET
Unjail validator
lambdavm tx slashing unjail \
--broadcast-mode=block \
--from=$WALLET \
--chain-id=$LAMBDA_CHAIN_ID \
--gas=auto
Public Endpoint
RPC
https://mainnet-lambda-rpc.konsortech.xyz
EVM RPC
Network Name : Lambda Mainnet
RPC URL : https://mainnet-lambda-evm.konsortech.xyz
Chain ID : 92000
Curreny Symbol : LAMBDA
API
https://mainnet-lambda-api.konsortech.xyz
gRPC
mainnet-lambda.konsortech.xyz:12090
Peers and Seeds
Peers
4f99960dc7c2a41fb1bda2d2bbf0a627a12d84ef@mainnet-lambda.konsortech.xyz:12656
Seeds
0571c49722d87964517a7f4b14c422f8ec2825f1@mainnet-seed.konsortech.xyz:40165
Genesis & Address Book
Address Book
https://snap1.konsortech.xyz/lambda/addrbook.json
Genesis
https://snap1.konsortech.xyz/lambda/genesis.json
State Sync
sudo systemctl stop lambdavm
cp $HOME/.lambdavm/data/priv_validator_state.json $HOME/.lambdavm/priv_validator_state.json.backup
lambdavm tendermint unsafe-reset-all --home $HOME/.lambdavm --keep-addr-book
SNAP_RPC="https://mainnet-lambda-rpc.konsortech.xyz:443"
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
peers="4f99960dc7c2a41fb1bda2d2bbf0a627a12d84ef@mainnet-lambda.konsortech.xyz:12656"
sed -i 's|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $HOME/.lambdavm/config/config.toml
sed -i -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/.lambdavm/config/config.toml
mv $HOME/.lambdavm/priv_validator_state.json.backup $HOME/.lambdavm/data/priv_validator_state.json
sudo systemctl restart lambdavm
sudo journalctl -u lambdavm -f --no-hostname -o cat
Snapshot
sudo systemctl stop lambdavm
cp $HOME/.lambdavm/data/priv_validator_state.json $HOME/.lambdavm/priv_validator_state.json.backup
rm -rf $HOME/.lambdavm/data
SNAP_NAME=$(curl -s https://snap.1.konsortech.xyz/lambda/ | egrep -o ">lambda-snapshot.*\.tar.lz4" | tr -d ">")
curl https://snap1.konsortech.xyz/lambda/${SNAP_NAME} | lz4 -dc - | tar -xf - -C $HOME/.lambdavm
mv $HOME/.lambdavm/priv_validator_state.json.backup $HOME/.lambdavm/data/priv_validator_state.json
sudo systemctl restart lambdavm && journalctl -u lambdavm -f --no-hostname -o cat
Custom Explorer
https://mainnet-explorer.konsortech.xyz/lambda