-
Notifications
You must be signed in to change notification settings - Fork 9
/
chain2.0.0-autoscript.sh
241 lines (204 loc) · 20.9 KB
/
chain2.0.0-autoscript.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
#!/bin/bash
LOG_FILE="/var/log/titan_node_install.log"
exec > >(tee -a "$LOG_FILE") 2>&1
printGreen() {
echo -e "\033[32m$1\033[0m"
}
printLine() {
echo "------------------------------"
}
# Function to print the node logo
function printNodeLogo {
echo -e "\033[32m"
echo "
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
██████████████████████████████████████████████ ██████████████████████████████████████████████
███████████████████████████████████████████ ███████████████████████████████████████████
████████████████████████████████████████ ████████████████████████████████████████
█████████████████████████████████████ █████████████████████████████████████
█████████████████████████████████ █████████████████████████████████
██████████████████████████████ █ █ ██████████████████████████████
████████████████████████████ █████ ████ ████████████████████████████
████████████████████████████ ██████ ██████ ████████████████████████████
████████████████████████████ ██████ ██████ ███████████████████████████
████████████████████████████ ███████ ██████ ███████████████████████████
████████████████████████████ ██████████ ██████ ███████████████████████████
████████████████████████████ █████████████ ██████ ███████████████████████████
████████████████████████████ █████████████ ████ ███████████████████████████
████████████████████████████ █ █████████████ █ ███████████████████████████
████████████████████████████ █████ ████████████ ███████████████████████████
████████████████████████████ ██████ ████████████ ███████████████████████████
████████████████████████████ ██████ █████████ ███████████████████████████
████████████████████████████ ██████ ██████ ███████████████████████████
████████████████████████████ ██████ ██████ ███████████████████████████
████████████████████████████ ██████ ██████ ████████████████████████████
████████████████████████████ ████ ███ ████████████████████████████
██████████████████████████████ ██████████████████████████████
█████████████████████████████████ █████████████████████████████████
█████████████████████████████████████ ████████████████████████████████████
████████████████████████████████████████ ████████████████████████████████████████
███████████████████████████████████████████ ███████████████████████████████████████████
██████████████████████████████████████████████ ██████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████████████████████████████████████████████████████████████████████████████████████
Hazen Network Solutions 2024 All rights reserved."
echo -e "\033[0m"
}
# Show the node logo
printNodeLogo
# User confirmation to proceed
echo -n "Type 'yes' to start the installation Titan Network v2.0.0 with Cosmovisor and press Enter: "
read user_input
if [[ "$user_input" != "yes" ]]; then
echo "Installation cancelled."
exit 1
fi
# Function to print in green
printGreen() {
echo -e "\033[32m$1\033[0m"
}
printGreen "Starting installation..."
sleep 1
printGreen "If there are any, clean up the previous installation files"
sudo systemctl stop titan
sudo systemctl disable titan
sudo rm -rf /etc/systemd/system/titan.service
sudo rm $(which titan)
sudo rm -rf $HOME/.titan
sed -i "/TITAN_/d" $HOME/.bash_profile
# Update packages and install dependencies
printGreen "1. Updating and installing dependencies..."
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
# User inputs
read -p "Enter your MONIKER: " MONIKER
echo 'export MONIKER='$MONIKER
read -p "Enter your PORT (2-digit): " PORT
echo 'export PORT='$PORT
# Setting environment variables
echo "export MONIKER=$MONIKER" >> $HOME/.bash_profile
echo "export TITAN_CHAIN_ID=\"titan-test-3\"" >> $HOME/.bash_profile
echo "export TITAN_PORT=$PORT" >> $HOME/.bash_profile
source $HOME/.bash_profile
printLine
echo -e "Moniker: \e[1m\e[32m$MONIKER\e[0m"
echo -e "Chain ID: \e[1m\e[32m$TITAN_CHAIN_ID\e[0m"
echo -e "Node custom port: \e[1m\e[32m$TITAN_PORT\e[0m"
printLine
sleep 1
# Install Go
printGreen "2. Installing Go..." && sleep 1
cd $HOME
VER="1.23.0"
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
# Version check
echo $(go version) && sleep 1
# Download Warden protocol binary
printGreen "3. Downloading Titan binary and setting up..." && sleep 1
git clone https://github.com/Titannet-dao/titan-chain.git
cd titan-chain
git fetch origin
git checkout origin/main
go build ./cmd/titand
mkdir -p /root/.titan/cosmovisor/genesis/bin
cp -r /root/titan-chain/titand /root/.titan/cosmovisor/genesis/bin/
# Create symlinks
printGreen "4. Creating symlinks..." && sleep 1
sudo ln -sfn $HOME/.titan/cosmovisor/genesis $HOME/.titan/cosmovisor/current
sudo ln -sfn $HOME/.titan/cosmovisor/current/bin/titand /usr/local/bin/titand
# Installi Cosmovisor
printGreen "5. Installing Cosmovisor..." && sleep 1
go install cosmossdk.io/tools/cosmovisor/cmd/[email protected]
# Create service file
printGreen "6. Creating service file..." && sleep 1
sudo tee /etc/systemd/system/titan.service > /dev/null << EOF
[Unit]
Description=titan node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=${HOME}/.titan"
Environment="DAEMON_NAME=titand"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.titan/cosmovisor/current/bin"
[Install]
WantedBy=multi-user.target
EOF
# Enable the service
sudo systemctl daemon-reload
sudo systemctl enable titan
# Initialize the node
printGreen "7. Initializing the node..."
titand config set client chain-id ${TITAN_CHAIN_ID}
titand config set client keyring-backend test
titand config set client node tcp://localhost:${TITAN_PORT}657
titand init ${MONIKER} --chain-id ${TITAN_CHAIN_ID}
# Download genesis and addrbook files
printGreen "8. Downloading genesis and addrbook..."
curl -Ls https://raw.githubusercontent.com/hazennetworksolutions/titannetwork/refs/heads/main/genesis.json > $HOME/.titan/config/genesis.json
wget -O $HOME/.titan/config/addrbook.json "https://raw.githubusercontent.com/hazennetworksolutions/titannetwork/refs/heads/main/addrbook.json"
# Configure gas prices and ports
printGreen "9. Configuring custom ports and gas prices..." && sleep 1
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025uttnt\"/;" ~/.titan/config/app.toml
sed -i.bak -e "s%:1317%:${TITAN_PORT}317%g; s%:8080%:${TITAN_PORT}080%g; s%:9090%:${TITAN_PORT}090%g; s%:9091%:${TITAN_PORT}091%g; s%:8545%:${TITAN_PORT}545%g; s%:8546%:${TITAN_PORT}546%g; s%:6065%:${TITAN_PORT}065%g" $HOME/.titan/config/app.toml
# Configure P2P and ports
sed -i.bak -e "s%:26658%:${TITAN_PORT}658%g; s%:26657%:${TITAN_PORT}657%g; s%:6060%:${TITAN_PORT}060%g; s%:26656%:${TITAN_PORT}656%g; s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${TITAN_PORT}656\"%" $HOME/.titan/config/config.toml
# Set up seeds and peers
printGreen "10. Setting up peers and seeds..." && sleep 1
SEEDS="[email protected]:26656"
PEERS="[email protected]:26656"
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.titan/config/config.toml
# Pruning Settings
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.titan/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.titan/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.titan/config/app.toml
# Download the snapshot
# printGreen "12. Downloading snapshot and starting node..." && sleep 1
# Start the node
printGreen "13. Starting the node..."
sudo systemctl restart titan
# Check node status
printGreen "14. Checking node status..."
sudo journalctl -u titan -f --no-hostname -o cat
# Verify if the node is running
if systemctl is-active --quiet titan; then
echo "The node is running successfully! Logs can be found at /var/log/titan_node_install.log"
else
echo "The node failed to start. Logs can be found at /var/log/titan_node_install.log"
fi