February 4, 2023

Установка ноды Massa 23.0

Общая информация

информационный сайт https://massa.net/
официальная документация https://docs.massa.net/en/latest/testnet/running.html
гитхаб https://github.com/massalabs/massa
дискорд https://discord.com/invite/massa
телеграмм официальный https://t.me/massanetwork
телеграмм рус https://t.me/massa_ru
крутой гайд #1 https://galayda.com/ustanovka-nody-massa-iz-oficialnyx-binarnikov/
крутой гайд #2 https://teletype.in/@yurally/massa_guide
статья+крутой гайд #3
статья+гайд от lets node https://blog.letsnode.io/Massa

Системные требования

4cpu, 8ram, <40ssd, >120 мбит сеть, public ip.

Подготовка сервера к установке

sudo apt update && apt dist-upgrade -y
sudo apt install wget curl jq git build-essential pkg-config libssl-dev libclang-dev -y
sudo apt install screen nmon htop net-tools -y

Удаляем старую ноду (если была установлена)

sudo systemctl stop massad
killall massa-client
killall massa-node
rm -rf $HOME/massa
rm -rf /etc/systemd/system/massad.service
rm -rf /etc/systemd/system/multi-user.target.wants/massad.service

Установка

Переходим в root директорию и скачаем бинарные файлы с GitHub Massa

cd /root
wget https://github.com/massalabs/massa/releases/download/TEST.23.0/massa_TEST.23.0_release_linux.tar.gz

Распакуем скачанный архив

tar zxvf massa_TEST.23.0_release_linux.tar.gz

Создадим файл конфигурации с нашим ip адресом:

sudo tee <<EOF >/dev/null $HOME/massa/massa-node/config/config.toml
[network]
routable_ip = "`wget -qO- eth0.me`"
EOF

Запускаем ноду и задаем пароль

cd $HOME/massa/massa-node/
./massa-node

Дожидаемся, что нода запустилась, затем прерываем сочетанием клавиш ctrl+c

Далее создаем сервисный файл службы (не забываем заменить ВАШ_ПАРОЛЬ)

printf "[Unit]
Description=Massa Node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/massa/massa-node
ExecStart=$HOME/massa/massa-node/massa-node -p ВАШ_ПАРОЛЬ
Restart=on-failure
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target" > /etc/systemd/system/massad.service

Запускаем ноду как службу

sudo systemctl daemon-reload
sudo systemctl enable massad
sudo systemctl restart massad

Проверим, что нода загрузилась и работает

sudo journalctl -f -n 100 -u massad

Выход из логов сочетанием ctrl+c

*Если увидели ошибки bootstrap, просто ждем загрузки ноды и подключения к сети. Если ошибки bootstrap наблюдаете более 1 часа, вероятнее всего с Вашим сервером что то не так, загляните в главу "проверка работы сервера" и выполните рекомендации.

Запускаем клиента в первый раз. Пароль теперь просит не при заходе в клиент, а при выполнении команд взаимодействия с кошельком.

cd $HOME/massa/massa-client/
./massa-client

Генерируем новый кошелек

wallet_generate_secret_key

Узнаем <адрес_вашего_кошелька>

wallet_info

Включаем стейкинг

node_start_staking <адрес_вашего_кошелька>

Выходим из клиента сочетанием ctrl+c

Покупка роллов

Входим в клиент одной командой

cd /$HOME/massa/massa-client/ && ./massa-client -p ВАШ_ПАРОЛЬ

Узнаем адрес кошелька

wallet_info

Идем в дискорд в раздел #testnet-faucet и запрашиваем себе монеты на адрес кошелька

Секунд через 20 пишем команду покупки роллов в клиенте

buy_rolls <адрес_вашего_кошелька> 1 0

Ждем ~01:40:00 пока ролл станет активный и начнется стейкинг монет

Регистрация ноды в дискорде

Узнаем ip адрес нашего сервера из параметров подключения или командой

wget -qO- eth0.me

Идем в дискорд и пишем свой ip MassaBot (если бота нет, любое сообщение в ветке #testnet-rewards-registration и бот появится в DM)

Регистрируем ноду в rewards program:

node_testnet_rewards_program_ownership_proof <адрес_вашего_кошелька> <id из дискорда>

длинный ответ этой команды отправляем в дискорд MassaBot-у

Обновление ноды

sudo systemctl stop massad
cd $HOME && wget https://github.com/massalabs/massa/releases/download/TEST.23.0/massa_TEST.23.0_release_linux.tar.gz && tar zxvf massa_TEST.23.0_release_linux.tar.gz && sudo systemctl restart massad && sudo journalctl -f -n 100 -u massad

после запросить токены и купить роллы.

Скрипт автопокупки роллов

Единственная причина, по которой слетают роллы - сервер не тянет нагрузку. Ситуация может быть разовой или происходить постоянно. Не думайте, что при установке скрипта автопокупки на "плохом" сервере, нода будет работать как надо.

Скрипт полностью взял у Mutant

Переходим в root директорию

cd /root

Создаем скрипт

sudo tee /root/rollsup.sh > /dev/null <<EOF
#!/bin/sh
#Версия 0.14
cd /root/massa/massa-client
#Set variables
catt=/usr/bin/cat
passwd=\$(\$catt \$HOME/massapasswd)
candidat=\$(./massa-client wallet_info -p "\$passwd"|grep 'Rolls'|awk '{print \$4}'| sed 's/=/ /'|awk '{print \$2}')
massa_wallet_address=\$(./massa-client -p "\$passwd" wallet_info |grep 'Address'|awk '{print \$2}')
tmp_final_balans=\$(./massa-client -p "\$passwd" wallet_info |grep 'Balance'|awk '{print \$3}'| sed 's/=/ /'|sed 's/,/ /'|awk '{print \$2}')
final_balans=\${tmp_final_balans%%.*}
averagetmp=\$(\$catt /proc/loadavg | awk '{print \$1}')
node=\$(./massa-client -p "\$passwd" get_status |grep 'Error'|awk '{print \$1}')
if [ -z "\$node" ]&&[ -z "\$candidat" ];then
echo \`/bin/date +"%b %d %H:%M"\` "(rollsup) Node is currently offline" >> /root/rolls.log
elif [ \$candidat -gt "0" ];then
echo "Ok" > /dev/null
elif [ \$final_balans -gt "99" ]; then
echo \`/bin/date +"%b %d %H:%M"\` "(rollsup) The roll flew off, we check the number of coins and try to buy" >> /root/rolls.log
resp=\$(./massa-client -p "\$passwd" buy_rolls \$massa_wallet_address 1 0)
else
echo \`/bin/date +"%b %d %H:%M"\` "(rollsup) Not enough coins to buy a roll from you \$final_balans, minimum 100" >> /root/rolls.log
fi
EOF

Создаем планировщик

printf "SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/3 * * * * root /bin/bash /root/rollsup.sh > /dev/null 2>&1
" > /etc/cron.d/massarolls

Создаем файл с паролем

sudo tee $HOME/massapasswd > /dev/null <<EOF
ваш_пароль
EOF

Создаем файл журнала скрипта

sudo tee $HOME/rolls.log > /dev/null <<EOF
logs
EOF

Посмотреть последние 50 строк лога

tail -n50 /root/rolls.log

Очистить содержимое лога

cat /dev/null > /root/rolls.log

Мониторинг ноды через телеграмм бота

есть и такие возможности :)
я не делал, но многие пользуются двумя ботами:
1. https://t.me/hekumatiarubot
2. забыл (напишите мне плз)

Проверка работы сервера

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

wget -qO- bench.sh|bash

В результатах теста смотрим
- скорость записи на диски (хотя бы >300mb/s)
- скорость сети (>110 мбит как на прием, так и на отправку)

В случае не соответствия показателей с тарифом, который Вы арендовали - идем в поддержку хостинга и методично, аргументированно выносим поддержке мозг до тех пор, пока Ваш сервер не заработает должным образом. (к сожалению других вариантов нет)