#!/bin/bash

logo_shazoe(){

clear

 cat << "EOF"

         ____  _   _    _     ________  _____ ____  
        / ___|| | | |  / \   |__  / _ \| ____/ ___|
        \___ \| |_| | / _ \    / / | | |  _| \___ \
         ___) |  _  |/ ___ \  / /| |_| | |___ ___) |
        |____/|_| |_/_/   \_\/____\___/|_____|____/
                               services.shazoes.xyz


EOF

}

logo_shazoe;



read -p "Enter your MONIKER :" MONIKER
echo 'export MONIKER='$MONIKER

# set vars
echo "export MONIKER=$MONIKER" >> $HOME/.bash_profile
echo "export LAVA_CHAIN_ID="lava-mainnet-1"" >> $HOME/.bash_profile
echo "export LAVA_PORT="307"" >> $HOME/.bash_profile
source $HOME/.bash_profile


echo -e "Moniker:        \e[1m\e[32m$MONIKER\e[0m"
echo -e "Chain id:       \e[1m\e[32m$LAVA_CHAIN_ID\e[0m"
echo -e "Node custom port:  \e[1m\e[32m$LAVA_PORT\e[0m"
sleep 1


# Update & install dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install curl unzip tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq htop tmux chrony liblz4-tool -y


# Install Go
cd $HOME
VER="1.25.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"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin
go version


# Download Binary
cd $HOME
rm -rf lava
git clone https://github.com/lavanet/lava
cd lava
git checkout v5.3.0
make install-all


# Config and Init App
lavad init $MONIKER --chain-id $LAVA_CHAIN_ID
sed -i \
-e 's/timeout_propose = .*/timeout_propose = "1s"/' \
-e 's/timeout_propose_delta = .*/timeout_propose_delta = "500ms"/' \
-e 's/timeout_prevote = .*/timeout_prevote = "1s"/' \
-e 's/timeout_prevote_delta = .*/timeout_prevote_delta = "500ms"/' \
-e 's/timeout_precommit = .*/timeout_precommit = "500ms"/' \
-e 's/timeout_precommit_delta = .*/timeout_precommit_delta = "1s"/' \
-e 's/timeout_commit = .*/timeout_commit = "15s"/' \
-e 's/^create_empty_blocks = .*/create_empty_blocks = true/' \
-e 's/^create_empty_blocks_interval = .*/create_empty_blocks_interval = "15s"/' \
-e 's/^timeout_broadcast_tx_commit = .*/timeout_broadcast_tx_commit = "151s"/' \
-e 's/skip_timeout_commit = .*/skip_timeout_commit = false/' \
  $HOME/.lava/config/config.toml

sed -i \
  -e 's|^chain-id *=.*|chain-id = "lava-mainnet-1"|' \
  -e 's|^keyring-backend *=.*|keyring-backend = "os"|' \
  -e 's|^node *=.*|node = "tcp://localhost:30757"|' \
  $HOME/.lava/config/client.toml


# Add Genesis File and Addrbook
wget -O $HOME/.lava/config/genesis.json https://files.shazoes.xyz/mainnets/lava/genesis.json
wget -O $HOME/.lava/config/addrbook.json https://files.shazoes.xyz/mainnets/lava/addrbook.json


#Configure Seeds and Peers
SEEDS=""
PEERS="5e3af122a3479767cced330fcb8d371e358f20b0@91.237.141.85:26656,0696338a19213a6b2044fe2c0a99272b14844c85@5.9.116.185:26656,94bc6b515853489f13f8e497b5a8652e22d49f73@88.218.224.46:56656,7d7968e8e37c62b49daa567fb94e170101ae7551@103.241.50.31:26656,f022e6dfa496676d4563cedc46f300ba1e59d24e@51.81.154.223:14456,408ddeb68bd2cc5e6ff1b3ed17ac1e79b70cb356@51.161.172.54:55676,b96f992e06b9193b95fcc1da445bb30c6caf1a8a@144.76.111.245:26656,f0b1a7171fb7d5990593d5a0675c1e4b9fa5e0f4@65.108.207.225:26656,5a1f54b549ec61580f648ba2c2e5491089021809@65.109.92.163:10020"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.lava/config/config.toml


# Set Custom Port
sed -i.bak -e "s%:1317%:${LAVA_PORT}17%g;
s%:8080%:${LAVA_PORT}80%g;
s%:9090%:${LAVA_PORT}90%g;
s%:9091%:${LAVA_PORT}91%g;
s%:8545%:${LAVA_PORT}45%g;
s%:8546%:${LAVA_PORT}46%g;
s%:6065%:${LAVA_PORT}65%g" $HOME/.lava/config/app.toml
sed -i.bak -e "s%:26658%:${LAVA_PORT}58%g;
s%:26657%:${LAVA_PORT}57%g;
s%:6060%:${LAVA_PORT}60%g;
s%:26656%:${LAVA_PORT}56%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${LAVA_PORT}56\"%;
s%:26660%:${LAVA_PORT}60%g" $HOME/.lava/config/config.toml


# Set Minimum Gas Price, Enable Prometheus, and Disable Indexer
sed -i 's/minimum-gas-prices =.*/minimum-gas-prices = "0.000000001ulava"/g' $HOME/.lava/config/app.toml
sed -i -e 's|^enabled-unsafe-cors *=.*|enabled-unsafe-cors = true|' $HOME/.lava/config/app.toml
sed -i -e 's|^indexer *=.*|indexer = "kv"|' $HOME/.lava/config/config.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.lava/config/config.toml
sed -i 's/^cors_allowed_origins = \[\]/cors_allowed_origins = \["\*"\]/g' $HOME/.lava/config/config.toml
awk '
  /^\[api\]/ {in_api=1; print; next}
  /^\[/ && !/^\[api\]/ {in_api=0}
  in_api && /^enable = false/ {print "enable = true"; next}
  {print}
' $HOME/.lava/config/app.toml > tmp && mv tmp $HOME/.lava/config/app.toml


# Set Service File
sudo tee /etc/systemd/system/lavad.service > /dev/null <<EOF
[Unit]
Description=lava-mainnet
After=network-online.target

[Service]
User=$USER
ExecStart=$(which lavad) start $HOME/.lava --state-sync.snapshot-interval 1000 --state-sync.snapshot-keep-recent 2
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF


# Enable and Start Service
sudo systemctl daemon-reload && sudo systemctl enable lavad && sudo systemctl start lavad && sudo journalctl -fu lavad -o cat