txloadman/lava
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
#!/bin/bash
while true
do
# Logo
echo -e '\e[40m\e[91m'
echo -e ' ____ _ '
echo -e ' / ___|_ __ _ _ _ __ | |_ ___ _ __ '
echo -e '| | | __| | | | _ \| __/ _ \| _ \ '
echo -e '| |___| | | |_| | |_) | || (_) | | | | '
echo -e ' \____|_| \__ | __/ \__\___/|_| |_| '
echo -e ' |___/|_| '
echo -e ' _ _ '
echo -e ' / \ ___ __ _ __| | ___ _ __ ___ _ _ '
echo -e ' / _ \ / __/ _ |/ _ |/ _ \ _ _ \| | | |'
echo -e ' / ___ \ (_| (_| | (_| | __/ | | | | | |_| |'
echo -e '/_/ \_\___\__ _|\__ _|\___|_| |_| |_|\__ |'
echo -e ' |___/ '
echo -e '\e[0m'
sleep 2
# Menu
PS3='Select an action: '
options=(
"Install"
"Create Wallet"
"Create Validator"
"Exit")
select opt in "${options[@]}"
do
case $opt in
"Install")
echo "============================================================"
echo "Install start"
echo "============================================================"
# set vars
if [ ! $NODENAME ]; then
read -p "Enter node name: " NODENAME
echo 'export NODENAME='$NODENAME >> $HOME/.bash_profile
fi
if [ ! $WALLET ]; then
echo "export WALLET=wallet" >> $HOME/.bash_profile
fi
echo "export LAVA_CHAIN_ID=lava-testnet-2" >> $HOME/.bash_profile
source $HOME/.bash_profile
# update
sudo apt update && sudo apt upgrade -y
# packages
sudo apt install curl build-essential git wget jq make gcc tmux chrony -y
# install go
if ! [ -x "$(command -v go)" ]; then
ver="1.20.5" && \
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
fi
# download binary
cd && rm -rf lava
git clone https://github.com/lavanet/lava
cd lava
git checkout v1.0.1
make install
# config
lavad config chain-id $LAVA_CHAIN_ID
lavad config keyring-backend test
# init
lavad init $NODENAME --chain-id $LAVA_CHAIN_ID
# download genesis and addrbook
curl -L https://snapshots-testnet.nodejumper.io/lava-testnet/genesis.json > $HOME/.lava/config/genesis.json
curl -L https://snapshots-testnet.nodejumper.io/lava-testnet/addrbook.json > $HOME/.lava/config/addrbook.json
# set minimum gas price
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.000000001ulava\"/" $HOME/.lava/config/app.toml
# set peers and seeds
SEEDS=""
PEERS="706fc0f682c33ab8deb0aa84c797dc2d1d0119b4@109.123.241.222:26656,53ff7a2726de241c87e2260ad715dadc75977974@65.108.227.112:13656,8da51a920e2e402a6084d241d79301066b20f962@84.247.179.136:26656,9872ab6a76199fcbeca1f7f791755e726aa97686@65.21.141.117:26656,6a45a044922040a2a9f7ba4febffa956cdd9f307@144.76.202.120:60856"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.lava/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/.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
# enable prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.lava/config/config.toml
#config
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
# create service
sudo tee /etc/systemd/system/lavad.service > /dev/null << EOF
[Unit]
Description=Lava node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which lavad) start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
lavad tendermint unsafe-reset-all --home $HOME/.lava --keep-addr-book
curl https://snapshots-testnet.nodejumper.io/lava-testnet/lava-testnet_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.lava
# start service
sudo systemctl daemon-reload
sudo systemctl enable lavad
sudo systemctl start lavad
break
;;
"Create Wallet")
lavad keys add $WALLET
echo "============================================================"
echo "Save address and mnemonic"
echo "============================================================"
LAVA_WALLET_ADDRESS=$(lavad keys show $WALLET -a)
LAVA_VALOPER_ADDRESS=$(lavad keys show $WALLET --bech val -a)
echo 'export LAVA_WALLET_ADDRESS='${LAVA_WALLET_ADDRESS} >> $HOME/.bash_profile
echo 'export LAVA_VALOPER_ADDRESS='${LAVA_VALOPER_ADDRESS} >> $HOME/.bash_profile
source $HOME/.bash_profile
break
;;
"Create Validator")
lavad tx staking create-validator \
--amount=1000000ulava \
--pubkey=$(lavad tendermint show-validator) \
--moniker=$NODENAME \
--chain-id=lava-testnet-2 \
--commission-rate=0.10 \
--commission-max-rate=0.20 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1 \
--from=wallet \
--gas=auto \
-y
break
;;
"Exit")
exit
;;
*) echo "invalid option $REPLY";;
esac
done
done