-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathpaloma.sh
390 lines (356 loc) · 20.3 KB
/
paloma.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
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
#!/bin/bash
echo ================================================================================
echo ================================================================================
echo ===========██████╗░██╗███╗░░░███╗░█████╗░██╗░░██╗██╗░░░██╗░██████╗==============
echo ===========██╔══██╗██║████╗░████║██╔══██╗██║░██╔╝██║░░░██║██╔════╝==============
echo ===========██║░░██║██║██╔████╔██║██║░░██║█████═╝░██║░░░██║╚█████╗░==============
echo ===========██║░░██║██║██║╚██╔╝██║██║░░██║██╔═██╗░██║░░░██║░╚═══██╗==============
echo ===========██████╔╝██║██║░╚═╝░██║╚█████╔╝██║░╚██╗╚██████╔╝██████╔╝==============
echo ===========╚═════╝░╚═╝╚═╝░░░░░╚═╝░╚════╝░╚═╝░░╚═╝░╚═════╝░╚═════╝░==============
echo ================================================================================
echo ============================= https://t.me/Dimokus =============================
echo ================================================================================
sleep 5
echo ================================================================================
echo ================================================================================
echo ██████╗░░█████╗░░██╗░░░░░░░██╗███████╗██████╗░███████╗██████╗░ ██████╗░██╗░░░██╗
echo ██╔══██╗██╔══██╗░██║░░██╗░░██║██╔════╝██╔══██╗██╔════╝██╔══██╗ ██╔══██╗╚██╗░██╔╝
echo ██████╔╝██║░░██║░╚██╗████╗██╔╝█████╗░░██████╔╝█████╗░░██║░░██║ ██████╦╝░╚████╔╝░
echo ██╔═══╝░██║░░██║░░████╔═████║░██╔══╝░░██╔══██╗██╔══╝░░██║░░██║ ██╔══██╗░░╚██╔╝░░
echo ██║░░░░░╚█████╔╝░░╚██╔╝░╚██╔╝░███████╗██║░░██║███████╗██████╔╝ ██████╦╝░░░██║░░░
echo ╚═╝░░░░░░╚════╝░░░░╚═╝░░░╚═╝░░╚══════╝╚═╝░░╚═╝╚══════╝╚═════╝░ ╚═════╝░░░░╚═╝░░░
sleep 1
echo ====================░█████╗░██╗░░██╗░█████╗░░██████╗██╗░░██╗=====================
echo ====================██╔══██╗██║░██╔╝██╔══██╗██╔════╝██║░░██║=====================
echo ====================███████║█████═╝░███████║╚█████╗░███████║=====================
echo ====================██╔══██║██╔═██╗░██╔══██║░╚═══██╗██╔══██║=====================
echo ====================██║░░██║██║░╚██╗██║░░██║██████╔╝██║░░██║=====================
echo ====================╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═════╝░╚═╝░░╚═╝=====================
sleep 10
binary="palomad"
folder=".paloma"
denom="grain"
chain="paloma"
gitrep=""
gitfold="paloma"
#vers="v0.1.0-alpha"
genesis="https://raw.githubusercontent.com/palomachain/testnet/master/passerina/genesis.json"
addrbook="https://raw.githubusercontent.com/palomachain/testnet/master/passerina/addrbook.json"
#PEER="[email protected]:26656, [email protected]:26656,[email protected]:26656,[email protected]:26656"
echo $PEER
sleep 10
SYNH(){
if [[ -z `ps -o pid= -p $nodepid` ]]
then
echo ===================================================================
echo ===Нода не работает, перезапускаю...Node not working, restart...===
echo ===================================================================
nohup $binary start > /dev/null 2>&1 & nodepid=`echo $!`
echo $nodepid
sleep 5
curl -s localhost:26657/status
synh=`curl -s localhost:26657/status | jq .result.sync_info.catching_up`
echo $synh
source $HOME/.bashrc
else
echo =================================
echo ===Нода работает.Node working.===
echo =================================
curl -s localhost:26657/status
synh=`curl -s localhost:26657/status | jq .result.sync_info.catching_up`
echo $nodepid
echo $synh
source $HOME/.bashrc
fi
echo =====Ваш адрес =====
echo ===Your address ====
echo $address
echo ==========================
echo =====Your valoper=====
echo ======Ваш valoper=====
echo $valoper
echo ===========================
date
source $HOME/.bashrc
}
#||||||||||||||||||||||||||||||||||||||
#*******************ФУНКЦИЯ РАБОЧЕГО РЕЖИМА НОДЫ|*************************
WORK (){
while [[ $synh == false ]]
do
sleep 5m
date
SYNH
echo =======================================================================
echo =============Check if the validator keys are correct! =================
echo =======================================================================
echo =======================================================================
echo =============Проверьте корректность ключей валидатора!=================
echo =======================================================================
cat /root/$folder/config/priv_validator_key.json
sleep 5
echo =================================================
echo ===============WALLET NAME and PASS==============
echo =================================================
echo =========== Name ${WALLET_NAME} Имя =============
echo ========== Pass ${PASSWALLET} Пароль ============
echo =================================================
echo =============Имя кошелька и его пароль===========
echo =================================================
sleep 5
echo =================================================
echo ===============Balance check...==================
echo =================================================
echo =================================================
echo =============Проверка баланса...=================
echo =================================================
#+++++++++++++++++++++++++++АВТОДЕЛЕГИРОВАНИЕ++++++++++++++++++++++++
balance=`$binary q bank balances $address -o json | jq -r .balances[].amount `
balance=`printf "%.f \n" $balance`
echo =========================
echo ==Ваш баланс: $balance ==
echo = Your balance $balance =
echo =========================
sleep 5
if [[ `echo $balance` -gt 1000000 ]]
then
echo ======================================================================
echo ============Balance = $balance . Delegate to validator================
echo ======================================================================
echo ======================================================================
echo =============Баланс = $balance . Делегирую валидатору=================
echo ======================================================================
stake=$(($balance-500000))
(echo ${PASSWALLET}) | $binary tx staking delegate $valoper ${stake}`echo $denom` --from $address --chain-id $chain --fees 5555$denom -y
sleep 5
stake=0
balance=0
fi
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#===============СБОР НАГРАД И КОМИССИОННЫХ===================
reward=`$binary query distribution rewards $address $valoper -o json | jq -r .rewards[].amount`
reward=`printf "%.f \n" $reward`
echo ==============================
echo ==Ваши награды: $reward $denom==
echo ===Your reward $reward $denom===
echo ==============================
sleep 5
if [[ `echo $reward` -gt 1000000 ]]
then
echo =============================================================
echo ============Rewards discovered, collecting...================
echo =============================================================
echo =============================================================
echo =============Обнаружены награды, собираю...==================
echo =============================================================
(echo ${PASSWALLET}) | $binary tx distribution withdraw-rewards $valoper --from $address --fees 5555$denom --commission -y
reward=0
sleep 5
fi
#============================================================
synh=`curl -s localhost:26657/status | jq .result.sync_info.catching_up`
#--------------------------ВЫХОД ИЗ ТЮРЬМЫ--------------------------
jailed=`$binary query staking validator $valoper -o json | jq -r .jailed`
while [[ $jailed == true ]]
do
echo ==Внимание! Валидатор в тюрьме, попытка выхода из тюрьмы произойдет через 30 минут==
echo =Attention! Validator in jail, attempt to get out of jail will happen in 30 minutes=
sleep 30m
(echo ${PASSWALLET}) | $binary tx slashing unjail --from $address --chain-id $chain --fees 5000$denom -y
sleep 10
jailed=`$binary query staking validator $valoper -o json | jq -r .jailed`
done
#-------------------------------------------------------------------
done
}
#************************************************************************************************************************
#======================================================== КОНЕЦ БЛОКА ФУНКЦИЙ ====================================================================================
wget -qO - https://github.com/palomachain/paloma/releases/download/v0.2.1-prealpha/paloma_0.2.1-prealpha_Linux_x86_64v3.tar.gz | \
sudo tar -C /usr/local/bin -xvzf - palomad
sudo chmod +x /usr/local/bin/palomad
sudo wget -P /usr/lib https://github.com/CosmWasm/wasmvm/raw/main/api/libwasmvm.x86_64.so
$binary version
echo 'export my_root_password='${my_root_password} >> $HOME/.bashrc
echo 'export MONIKER='${MONIKER} >> $HOME/.bashrc
echo 'export MNEMONIC='${MNEMONIC} >> $HOME/.bashrc
echo 'export WALLET_NAME='${WALLET_NAME} >> $HOME/.bashrc
echo 'export PASSWALLET='${PASSWALLET} >> $HOME/.bashrc
echo 'export LINK_SNAPSHOT='${LINK_SNAPSHOT} >> $HOME/.bashrc
echo 'export SNAP_RPC='${SNAP_RPC} >> $HOME/.bashrc
echo 'export LINK_KEY='${LINK_KEY} >> $HOME/.bashrc
PASSWALLET=$(openssl rand -hex 4)
WALLET_NAME=$(goxkcdpwgen -n 1)
echo ${PASSWALLET}
echo ${WALLET_NAME}
sleep 5
source $HOME/.bashrc
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
(echo ${my_root_password}; echo ${my_root_password}) | passwd root
service ssh restart
service nginx start
sleep 5
$binary version --long | head
sleep 10
#=======init ноды==========
echo =INIT=
$binary init "$MONIKER" --chain-id $chain
sleep 10
#==========================
#===========ДОБАВЛЕНИЕ КОШЕЛЬКА============
(echo "${MNEMONIC}"; echo ${PASSWALLET}; echo ${PASSWALLET}) | $binary keys add ${WALLET_NAME} --recover
address=`(echo ${PASSWALLET}) | $(which $binary) keys show $WALLET_NAME -a`
valoper=`(echo ${PASSWALLET}) | $(which $binary) keys show $WALLET_NAME --bech val -a`
echo =====Ваш адрес =====
echo ===Your address ====
echo $address
echo ==========================
echo =====Your valoper=====
echo ======Ваш valoper=====
echo $valoper
echo ===========================
#==================================
wget -O $HOME/$folder/config/genesis.json $genesis
sha256sum ~/$folder/config/genesis.json
cd && cat $folder/data/priv_validator_state.json
#==========================
rm $HOME/$folder/config/addrbook.json
wget -qO $HOME/$folder/config/addrbook.json $addrbook
mv /addrbook.json $HOME/$folder/config/
# ------ПРОВЕРКА НАЛИЧИЯ priv_validator_key--------
wget -O /var/www/html/priv_validator_key.json ${LINK_KEY}
file=/var/www/html/priv_validator_key.json
source $HOME/.bashrc
#---проверка наличия пользовательского priv_validator_key---
if [[ -f "$file" ]]
then
cd /
echo ==========priv_validator_key found==========
echo ========Обнаружен priv_validator_key========
cp /var/www/html/priv_validator_key.json /root/$folder/config/
echo ========Validate the priv_validator_key.json file=========
echo ==========Сверьте файл priv_validator_key.json============
cat /root/$folder/config/priv_validator_key.json
sleep 5
else
echo =====================================================================
echo =========== priv_validator_key not found, making a backup ===========
echo =====================================================================
echo =====================================================================
echo ====== priv_validator_key не обнаружен, создаю резервную копию ======
echo =====================================================================
sleep 2
cp /root/$folder/config/priv_validator_key.json /var/www/html/
echo =================================================================================================================================================
echo ======== priv_validator_key has been created! Go to the SHELL tab and run the command: cat /root/.paloma/config/priv_validator_key.json =========
echo ===== Save the output to a .json file on google drive. Place a direct link to download the file in the manifest and update the deployment! ======
echo ==========================================================Work has been suspended!===============================================================
echo =================================================================================================================================================
echo ========== priv_validator_key создан! Перейдите во вкладку SHELL и выполните команду: cat /root/.paloma/config/priv_validator_key.json ==========
echo == Сохраните вывод в файл с расширением .json на google диск. Разместите прямую ссылку на скачивание файла в манифесте и обновите деплоймент! ===
echo ==========================================================Работа приостановлена!=================================================================
sleep infinity
fi
# -----------------------------------------------------------
$binary config chain-id $chain
$binary config keyring-backend os
sleep 10
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025$denom\"/;" ~/$folder/config/app.toml
pruning="custom" && \
pruning_keep_recent="100" && \
pruning_keep_every="0" && \
pruning_interval="50" && \
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/$folder/config/app.toml && \
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/$folder/config/app.toml && \
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/$folder/config/app.toml && \
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/$folder/config/app.toml
peers="$PEER"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/$folder/config/config.toml
indexer="null" && \
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/$folder/config/config.toml
snapshot_interval="0" && \
sed -i.bak -e "s/^snapshot-interval *=.*/snapshot-interval = \"$snapshot_interval\"/" ~/$folder/config/app.toml
# enable prometheus
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/$folder/config/config.toml
# ||||||||||||||||||||||||||||||||||||||||||||||||Backup||||||||||||||||||||||||||||||||||||||||||||||||||||||
#=======Загрузка снепшота блокчейна===
if [[ -n $LINK_SNAPSHOT ]]
then
cd /root/$folder/
wget -O snap.tar $LINK_SNAPSHOT
tar xvf snap.tar
rm snap.tar
echo ===============================================
echo ===== Snapshot загружен!Snapshot loaded! ======
echo ===============================================
cd /
fi
#==================================
source $HOME/.bashrc
# ====================RPC======================
if [[ -n $SNAP_RPC ]]
then
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 10000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/$folder/config/config.toml
echo RPC
sleep 5
fi
#================================================
# |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
source $HOME/.bashrc
#===========ЗАПУСК НОДЫ============
$binary tendermint unsafe-reset-all
echo =Run node...=
nohup $binary start > /dev/null 2>&1 & nodepid=`echo $!`
source $HOME/.bashrc
echo =Node runing ! =
sleep 20
synh=`curl -s localhost:26657/status | jq .result.sync_info.catching_up`
echo $synh
sleep 2
#==================================
source $HOME/.bashrc
#=========Пока нода не синхронизирована - повторять===========
while [[ $synh == true ]]
do
sleep 5m
date
echo ==============================================
echo =Нода не синхронизирована! Node is not sync! =
echo ==============================================
SYNH
done
#=======Если нода синхронизирована - начинаем работу ==========
while [[ $synh == false ]]
do
sleep 5m
date
echo ================================================================
echo =Нода синхронизирована успешно! Node synchronized successfully!=
echo ================================================================
SYNH
val=`$binary query staking validator $valoper -o json | jq -r .description.moniker`
echo $val
synh=`curl -s localhost:26657/status | jq .result.sync_info.catching_up`
echo $synh
source $HOME/.bashrc
if [[ -z "$val" ]]
then
echo =Создание валидатора... Creating a validator...=
(echo ${PASSWALLET}) | $binary tx staking create-validator --amount="1000000$denom" --pubkey=$($binary tendermint show-validator) --moniker="$MONIKER" --chain-id="$chain" --commission-rate="0.10" --commission-max-rate="0.20" --commission-max-change-rate="0.01" --min-self-delegation="1000000" --gas="auto" --from="$address" --fees="5550$denom" -y
echo 'true' >> /var/validator
val=`$binary query staking validator $valoper -o json | jq -r .description.moniker`
echo $val
else
val=`$binary query staking validator $valoper -o json | jq -r .description.moniker`
echo $val
MONIKER=`echo $val`
WORK
fi
done