October 10, 2022

Автоделегирование

Чтобы ваш валидатор получал награды он должен быть в активном сете валидаторов, существует стандарт , который говорит о том, что последний по количеству токенов валидатор выбывает из активного сета( т.е. и перестает получать награды) если за место него пришел другой валидатор у которого сумма токенов в стейке больше чем у предыдущего. Давайте конечно же разберем на примере:

# перевести реварды и комиссию на основной баланс кошелька
archwayd tx distribution withdraw-rewards <archwayvaloper..> --from <name_wallet> --chain-id torii-1 --fees 5utorii --commission -y
# делегировать доступные средства в своего валидатора
archwayd tx staking delegate <archwayvaloper..> 1000000utorii --from <name_wallet> --fees 5utorii --chain-id torii-1 -y

Конечно в командах выше необходимо использовать свои параметры - меняя адрес валидатора, имя кошелька, сумму и при использовании другой сети название монеты и chain-id. Ниже я опишу один из вариантов использования автоматического автоделегирования с помощью скрипта

Заранее скажем спасибо за скрипт keupsonite . Данный скрипт подходит для любого блокчейна экосистемы Cosmos и в официальном репозитории уже есть шаблоны для многих проектов. Для Archway и тестовой сети torii-1 я подготовил шаблон, который можно скачать отсюда или скопировать ниже. Необходимо внести свои данные в PASSWD="" ; DELEGATOR_NAME="" ; DELEGATOR="" ; VALIDATOR="" ; BINARY=""

# Archway Keyring Backend ("test", "file", "os" or "memory")
# Example: KEYRING_BACKEND="test"
# You can reimport your wallet with desired backend-type
# (`archwayd keys add name_wallet --recover`)
KEYRING_BACKEND="os"

# Password
# Required if keyring-backend is "file" or "os"
PASSWD=""

# Archway Wallet Name (`archwayd keys list`)
# Example: DELEGATOR_NAME="name_wallet"
DELEGATOR_NAME=""

# Archway Wallet Address (`archwayd keys show name_wallet -a`)
# Example: DELEGATOR="archway1le23uxah00r8aajzfhh30et5ek2kxvfpyqp5jd"
DELEGATOR=""

# Archway Validator Address
# Example: VALIDATOR="archwayvaloper1msnjlmuas6hxh5xml952snjayxlm4f2k3etu0v"
VALIDATOR=""

# Current Archway Chain ID
CHAIN_ID="torii-1"

#########################################################
# In case you customized the Archway Node configuration, #
# you will want to edit this below parameters.           #
#########################################################

# The IP of your Archway Node
NODE_IP="127.0.0.1"

# The port of your Archway Node
NODE_PORT="26657"

# The home of your Archway Node
NODE_HOME="$HOME/.archway"

# The path to your Archway binary
# To get the full path to your archway binary you can use `whereis archwayd` and replace the below value by.
# Example: BINARY="$HOME/go/bin/archwayd"
BINARY=""

####################
# MODIFY FOR TESTS #
####################

# Time to sleep in sec between two delegations
# Example: SLEEPING_TIME=$((5*60))
# Example: SLEEPING_TIME="30"
SLEEPING_TIME=$((30*60))

DENOM="utorii"
GAS_PRICES="--fees 26${DENOM}"

##################
# DO NOT MODIFY! #
##################

# Depending on Cosmos SDK version
# - ACCOUNT     $binary query account
# - BANK        $binary query bank balances
BALANCES_FROM="BANK"

SDETAILS="--chain-id ${CHAIN_ID} --node tcp://${NODE_IP}:${NODE_PORT} --home ${NODE_HOME}"
DETAILS="${SDETAILS} --keyring-backend ${KEYRING_BACKEND}"

Приступаем к установке

1. Устанавливаем tmux и expect

sudo apt install tmux expect -y

2. Клонируем репозиторий и переходим в нужную папку

git clone https://github.com/zlounes/cosmos-autostaking.git $HOME/cosmos-autostaking && cd $HOME/cosmos-autostaking

3. Даем права на выполнение

chmod +x $HOME/cosmos-autostaking/*delegate*

4. Создаем файл .archway и копируем в него шаблон выше (внося нужные изменения)

nano $HOME/cosmos-autostaking/profiles/.archway

5. Запускаем команду ниже находясь в каталоге cd $HOME/cosmos-autostaking

tmux new-session -s autoDelegate $HOME/cosmos-autostaking/auto_delegate.sh -p $HOME/cosmos-autostaking/profiles/.archway

6. Сворчачиваем окно tmux нажав CTRL+B D

7. Смотрим логи

tail -f $HOME/cosmos-autostaking/auto_delegate.log

Остановить работу скрипта можно вернувшись в окно tmux введя команду tmux attach и нажав CTRL+C