POLKADOT
September 22

Crunch bot - автоматические выплаты наград

🪓 Telegram канал UTSA 🪓 Telegram чат UTSA

GitHub


Crunch - это интерфейс командной строки (CLI) для простой автоматизации выплат вознаграждений за стейкинг в цепочках на основе Substrate

Crunch позволяет:

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

Со всеми возможностями Crunch можно ознакомиться на официальной странице github

Установка crunch-bot

Создаем каталог и скачиваем бинарный файл

mkdir $HOME/.kusama/crunch-bot && cd $HOME/.kusama/crunch-bot
wget https://github.com/turboflakes/crunch/releases/download/v0.18.1/crunch
chmod +x $HOME/.kusama/crunch-bot/crunch
cp $HOME/.kusama/crunch-bot/crunch /usr/local/bin/
crunch --version
#crunch 0.18.1

При запуске на ubuntu 22.04 может возникнуть ошибка библиотеки openssl

Вы можете установить ее самостоятельно

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.23_amd64.deb
dpkg -i libssl1.1_1.1.1f-1ubuntu2.23_amd64.deb

Настройка .env

Создаем основной конфигурационный файл .env и настраиваем его. В примере ниже предоставлен упрощенный конфигурационный файл, в котором используется 1 кошелек stash валидатора Kusama. Вы можете ознакомиться с полной функциональностью здесь

По умолчанию crunch попытается подключиться к ws://IP:9944

Если Вы используете RPC для подключения, то добавьте следующий флаг CRUNCH_SUBSTRATE_WS_URL=ws://IP:9944

Замените:

  • CRUNCH_STASHES на stash Вашего валидатора
  • CRUNCH_MATRIX_USER на Ваш основной аккаунт matrix
  • CRUNCH_MATRIX_BOT_USER на Ваш дополнительный аккаунт matrix, который Вам необходимо будет создать заранее и от которого Вы будете получать сообщения
  • CRUNCH_MATRIX_BOT_PASSWORD на Ваш пароль от дополнительного аккаунта matrix
nano $HOME/.kusama/crunch-bot/.env
# ----------------------------------------------------------------
# crunch CLI configuration variables 
# ----------------------------------------------------------------
#
CRUNCH_STASHES=JHRygZAwLR5oScvgF6QcLLR3sFx9GFZWYzirx2cvgF6QcLL
CRUNCH_LIGHT_CLIENT_ENABLED=false
CRUNCH_MAXIMUM_PAYOUTS=4
CRUNCH_MAXIMUM_HISTORY_ERAS=4
CRUNCH_MAXIMUM_CALLS=3
#
# ----------------------------------------------------------------
# Matrix configuration variables
# ----------------------------------------------------------------
#
CRUNCH_MATRIX_DISABLED=false
CRUNCH_MATRIX_PUBLIC_ROOM_DISABLED=true
CRUNCH_MATRIX_USER=@matrix:matrix.org
CRUNCH_MATRIX_BOT_USER=@matrix_bot:matrix.org
CRUNCH_MATRIX_BOT_PASSWORD="password_bot"
#
# ----------------------------------------------------------------
# Nomination Pools configuration variables
# ----------------------------------------------------------------
CRUNCH_POOL_IDS=2
# 1 DOT = 10000000000 PLANCKS
# 1 KSM = 1000000000000 PLANCKS
CRUNCH_POOL_COMPOUND_THRESHOLD=1000000000000
CRUNCH_POOL_ONLY_OPERATOR_COMPOUND_ENABLED=true

Нам необходимо создать отдельный кошелек, с которого будет производиться оплата транзакций. Пополняем его и вписываем Seed фразу от кошелька в .private.seed

echo "utsa utsa utsa utsa utsa utsa utsa utsa utsa utsa utsa utsa">> .private.seed

Запуск crunch-bot

Теперь мы можем в информационном виде посмотреть какие награды из последних 84 эпох были востребованы, а какие не востребованы

# для Kusama
crunch kusama view
Примечание: crunch view режим только регистрирует информацию в терминале

Создаем сервисный файл

'era' - запуск crunch сразу после срабатывания события EraPaid в цепочке
'daily' - повторение задачи crunch каждые 24 часа
'turbo' - повторение задачи crunch каждые 6 часов
'once' - пытается выполнить выплату один раз и выйти

tee /etc/systemd/system/crunch.service > /dev/null <<EOF
[Unit]
Description=Kusama Crunch Bot

[Service]
User=$USER
ExecStart=/usr/local/bin/crunch kusama --config-path $HOME/.kusama/crunch-bot/.env rewards daily --seed-path $HOME/.kusama/crunch-bot/.private.seed
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable crunch
systemctl restart crunch && journalctl -u crunch -f -o cat

Полезные команды

Посмотреть логи

journalctl -u crunch -f -o cat

Удалить crunch-bot

systemctl stop crunch
systemctl disable crunch
rm /etc/systemd/system/crunch.service
systemctl daemon-reload
cd $HOME
rm -rf .kusama/crunch-bot
Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq