#!/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 MONO_CHAIN_ID="mono_6940-1"" >> $HOME/.bash_profile
echo "export MONO_PORT="46"" >> $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$MONO_CHAIN_ID\e[0m"
echo -e "Node custom port:  \e[1m\e[32m$MONO_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 mono-chain
git clone https://github.com/monolythium/mono-chain.git
cd mono-chain
git checkout v0.1.0-rc1
make install
monod version


# Config and Init App
monod init $MONIKER --chain-id $MONO_CHAIN_ID
sed -i \
  -e 's|^chain-id *=.*|chain-id = "mono_6940-1"|' \
  -e 's|^keyring-backend *=.*|keyring-backend = "test"|' \
  -e 's|^node *=.*|node = "tcp://localhost:46657"|' \
  $HOME/.mono/config/client.toml


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


#Configure Seeds and Peers
SEEDS=""
PEERS="3b16fca9e219ab16ae53a2cf86bacd723b6eba5a@157.90.230.34:26656,46bf30662593e204da7406dc669b8c057d307dd9@178.104.87.244:26656,dc4c3ba4f43ede62283b415f1f1c31e4b41416a3@91.99.217.26:26656,b7d90938589aa5079a2ab45a76534b0c35318676@188.245.164.245:26656,e18364b7b8aea5e5961721e83e169bd368784c3a@46.62.206.194:26656,109e680de308170c5681496e23916faf96e169eb@135.181.202.153:26656,cbd1e300c789d2a5870ae4838418e8c166ae0ceb@95.216.21.53:26656,57039127b8c0ac037abcbaffb45ef31aaeba4ea5@65.21.73.117:26656,00264015ae4b350fd254b6ecb7b8a81cda130e34@46.62.206.153:26656,1c68c6b5bdbd86f8da5a035680798d34e9215bbf@78.47.141.58:26656,dfb589cf9b9e5b87500185f2d34438e9a5c61669@159.69.176.32:26656,79cf7a29f41ed11c6520250469913b10eaa47097@46.224.142.22:26656,a5ebcc736956f4d2b0784b265f668bfa290f4040@46.62.197.55:26656,8ac262cc3602f1a32a992f79f877634bcbec1398@138.199.155.138:26656,f8d76871bf7fe8e9aaf4c8940d9c81349795304f@91.98.155.145:26656,9c79a43e4f75b7e25dfbf2f95cbfe21d396b9561@159.69.89.111:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.mono/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/.mono/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.mono/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.mono/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.mono/config/app.toml


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


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


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

[Service]
User=$USER
ExecStart=$(which monod) start --home $HOME/.mono
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF


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