#!/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 SOAR_CHAIN_ID="soarchaintestnet"" >> $HOME/.bash_profile
echo "export SOARCHAIN_PORT="37"" >> $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$SOAR_CHAIN_ID\e[0m"
echo -e "Node custom port:  \e[1m\e[32m$SOAR_CHAIN_PORT\e[0m"
sleep 1


# Update & install dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install clang pkg-config libssl-dev curl git wget htop tmux build-essential jq make lz4 gcc unzip -y


# Install Go
cd $HOME
sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.21.4.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
go version


# Download Binary
cd $HOME
curl -s https://raw.githubusercontent.com/soar-robotics/testnet-binaries/main/v0.2.10/ubuntu22.04/soarchaind > soarchaind
chmod +x soarchaind
mv soarchaind $HOME/go/bin/


# Config and Init App
soarchaind config node tcp://localhost:${SOARCHAIN_PORT}657
soarchaind config keyring-backend test
soarchaind config chain-id $SOAR_CHAIN_ID
soarchaind init $MONIKER --chain-id $SOAR_CHAIN_ID


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

#Configure Seeds and Peers
SEEDS="3f472746f46493309650e5a033076689996c8881@soarchain-testnet.rpc.kjnodes.com:17259"
PEERS="637077d431f618181597706810a65c826524fd74@5.9.151.56:25256,acf9ef38490f1cdb622909eca72f2779f52b6d13@142.132.152.46:13656,0810665f8f7aa39ae607835ebfc6418292b8e2ba@77.247.178.83:46656,dcad2b7aac3738268bdb4c9226c71fbf3be121bf@34.141.178.93:26656,0998d33981876d25d410580d79a7c25349db8074@35.241.137.105:26656,a3d4de7cae1f0a72500f2dd7177cd12e70a111e3@144.91.125.187:25256,23a9fafb8dff63f6676e4afb43359d3a74ff5a46@161.97.123.22:26656,ae60b8ae5383500854e74a37e657eaa03bc82452@160.202.128.199:56226,994c5252f55d6b809f0c19956530187009451c89@167.235.178.134:25256,f6b26a291c29305657bc92b9e1626538adf81ea3@57.128.81.122:26656,3a5b9fecda10892e8c221c6d8cecb3639809268a@109.199.99.165:26656,8343f4989f38bbe490112e4a410d1652a1986240@3.144.9.152:26656,e0ee4d996f87d0f2b7706e35e162531c7fd76493@34.165.238.45:26656,454d305ab1043f9ad8abaf01b2b56556f0a88705@37.27.55.248:30656,c4cad54900c469967efbc7f4681a1d792825cf2c@2a01:4f8:121:373::2:62456,b2fcd16e1dfb5f24b90c1f3151419bd8e5dbb099@131.153.164.17:26656,2145f5bcecaae5128611299b207f44a69f498fc3@95.217.89.100:17256,aa00307191236398fb50ab17ad177b09262b1927@2a01:4f9:c012:c8d4::1:26656,b8f71453a62470a0786aa44f7cc79312be735722@2a01:4f9:1a:9462::6:26656,abfba1d0b5d51c8be89648fee313bc9ceb61a225@65.109.93.58:25256"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.soarchain/config/config.toml
sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0utsoar\"/" $HOME/.soarchain/config/app.toml
sed -i -e 's|^indexer *=.*|indexer = "null"|' $HOME/.soarchain/config/config.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.soarchain/config/config.toml


# Config Pruning
pruning="custom"
pruning_keep_recent="100"
pruning_keep_every="0"
pruning_interval="19"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.soarchain/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.soarchain/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.soarchain/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.soarchain/config/app.toml


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



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

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

[Install]
WantedBy=multi-user.target
EOF


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