-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathautodelegator.sh
More file actions
51 lines (48 loc) · 2.59 KB
/
autodelegator.sh
File metadata and controls
51 lines (48 loc) · 2.59 KB
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
#!/bin/bash
CONFIG_FILE="config.ini"
KEY_NAME=$(awk -F "=" '/KEY_NAME/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
CHAIN_ID=$(awk -F "=" '/CHAIN_ID/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
VALIDATOR_ADDRESS=$(awk -F "=" '/VALIDATOR_ADDRESS/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
DELEGATE_ADDRESS=$(awk -F "=" '/DELEGATE_ADDRESS/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
NODE_ADDRESS_PORT=$(awk -F "=" '/NODE_ADDRESS_PORT/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
CURRENCY=$(awk -F "=" '/CURRENCY/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
MINIMUM_BALANCE=$(awk -F "=" '/MINIMUM_BALANCE/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
TRANSACTION_FEES=$(awk -F "=" '/TRANSACTION_FEES/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
THRESHOLD_MOVEMENT_AMOUNT=$(awk -F "=" '/THRESHOLD_MOVEMENT_AMOUNT/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
REFRESH_TIME=$(awk -F "=" '/REFRESH_TIME/ {gsub(/[ \t]/, "", $2); print $2}' $CONFIG_FILE)
echo "Enter Desmos keyring passphrase (just this time, please ignore next output messages since they'll be managed by the bot):"
read -s PWD
while true
do
export KEY=$PWD
AVAILABLE=$(desmos q bank balances $DELEGATE_ADDRESS --node tcp://$NODE_ADDRESS_PORT -o json | jq -r ".balances[0].amount")
printf "Actually available %u %s\n" $AVAILABLE $CURRENCY
echo "WHITDRAW START"
expect -c "
spawn desmos tx distribution withdraw-rewards $VALIDATOR_ADDRESS --commission --from $KEY_NAME --fees ${TRANSACTION_FEES}${CURRENCY} --chain-id $CHAIN_ID --yes
expect \".*\"
send -- \"$::env(KEY)\r\"
expect eof
"
printf "WHITDRAW ENDED\t...checking new availability\n"
sleep 25
AVAILABLE=$(desmos q bank balances $DELEGATE_ADDRESS --node tcp://$NODE_ADDRESS_PORT -o json | jq -r ".balances[0].amount")
printf "Now available %s \n" $AVAILABLE
AMOUNT=$((AVAILABLE-MINIMUM_BALANCE-TRANSACTION_FEES))
if [[ $AMOUNT -ge $THRESHOLD_MOVEMENT_AMOUNT ]]
then
printf "DELEGATION START\t...of amount %s \n" $AMOUNT
expect -c "
spawn desmos tx staking delegate $VALIDATOR_ADDRESS --from $KEY_NAME ${AMOUNT}${CURRENCY} --fees ${TRANSACTION_FEES}${CURRENCY} --chain-id $CHAIN_ID --yes
expect \".*\"
send -- \"$::env(KEY)\r\"
expect eof
"
printf "DELEGATION ENDED \n"
else
printf "DELEGATION SKIPPED this time. Available amount %s is lower than the threshold %s\n" $AMOUNT $THRESHOLD_MOVEMENT_AMOUNT
fi
unset KEY
printf "...GO SLEEPING for %s \n" $REFRESH_TIME
sleep $REFRESH_TIME
done