#!/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 BABYLON_CHAIN_ID="bbn-test-5"" >> $HOME/.bash_profile
echo "export BABYLON_PORT="39"" >> $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$BABYLON_CHAIN_ID\e[0m"
echo -e "Node custom port:  \e[1m\e[32m$BABYLON_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.23.8"
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 babylon
git clone https://github.com/babylonlabs-io/babylon.git
cd babylon
git checkout v1.0.1
BABYLON_BUILD_OPTIONS="testnet" make install


# Config and Init App
babylond init $MONIKER --chain-id $BABYLON_CHAIN_ID
sed -i \
  -e 's|^chain-id *=.*|chain-id = "bbn-test-5"|' \
  -e 's|^keyring-backend *=.*|keyring-backend = "test"|' \
  -e 's|^node *=.*|node = "tcp://localhost:39657"|' \
  $HOME/.babylond/config/client.toml


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


#Configure Seeds and Peers
SEEDS=""
PEERS="4fb9f7e630de9c5bd7fb844b7b4a80a44d26507d@162.19.72.74:26656,e643972e8eb888af2e2a94db13839e71b6d9a5ac@88.198.70.23:16156,9fdec7ee16b4986eb8e2072afb7986df56ae3628@149.28.129.224:26656,6e541de1379053f7f391a7b476e0520fbc2ce68f@161.97.179.68:26656,1aa1dfa63cafc1516ad0ba6ee3de1d9b8aab3780@49.12.171.160:26896,944c1206f2a189e4e3a60940fc096f845c865ee8@65.108.236.43:21156,8b6b62d41d06e396d419c7a2165175122d9bbe09@45.76.182.198:26656,e51a82f113ade60a13818490be8e147e7173df2d@38.242.203.123:26656,0f0eaa20fc1075cf22af66cbc33145d392c39ec0@149.28.135.76:26656,aa840087d4cd8db1c2d3f3f0aaa82d7a1a4cf860@139.180.137.93:26656,346923ef86db50294b8917e65108af07e3df80c8@125.253.88.121:26656,b5ef770cac2aecd9f0a62bac7fbe262c1c55616b@51.89.40.26:26656,fbc9c4415c0086954221fd760f421d8d6a14b535@165.154.224.218:26656,ce183b5f345e13e25fc72d27af8466826754b688@65.108.230.161:60656,d7ac309789e1164a75c8faa311d3771128cb397e@45.76.191.59:26656,a64e116534e80b054b63177d8baf4fe5c5782b85@93.159.130.38:29656,e39d779f7015a829827657490ddf37c605d0bf6a@207.148.120.110:26656,5eb20540c1ab769d2d91fe8da6497d9a2bed9e45@54.179.227.79:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.babylond/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/.babylond/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.babylond/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.babylond/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.babylond/config/app.toml


# Set Custom Port
sed -i.bak -e "s%:1317%:${BABYLON_PORT}317%g;
s%:8080%:${BABYLON_PORT}080%g;
s%:9090%:${BABYLON_PORT}090%g;
s%:9091%:${BABYLON_PORT}091%g;
s%:8545%:${BABYLON_PORT}545%g;
s%:8546%:${BABYLON_PORT}546%g;
s%:6065%:${BABYLON_PORT}065%g" $HOME/.babylond/config/app.toml
sed -i.bak -e "s%:26658%:${BABYLON_PORT}658%g;
s%:26657%:${BABYLON_PORT}657%g;
s%:6060%:${BABYLON_PORT}060%g;
s%:26656%:${BABYLON_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${BABYLON_PORT}656\"%;
s%:26660%:${BABYLON_PORT}660%g" $HOME/.babylond/config/config.toml


# Set Minimum Gas Price, Enable Prometheus, and Disable Indexer
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.002ubbn\"/" $HOME/.babylond/config/app.toml
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.babylond/config/config.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.babylond/config/config.toml


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

[Service]
User=$USER
ExecStart=$(which babylond) start $HOME/.babylond --bls-password-file="$HOME/.babylond/config/bls_password.txt"
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF


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