Шпаргалка по Массе
Данный недоFAQ - основан на личном опыте и не претендует на 100% правильность и точность. (на данный момент это какая-то шпаргалка, выложенная в виде черновика.)
Некоторые моменты упрощены, упущены или имеют вольную интерпретацию для простоты описания (можете встретить что-то похожее на то что земля плоская и стоит на 3х слонах... бла-бла-бла )) )
Небольшое введение: поскольку основным результатом нормальной работы Массы являются очки, которые начисляет бот в Дискорде, то для начала нужно понимать как и за что они начисляются. Для этого достаточно потратить 5 минут на изучение формулы которую можно увидеть у бота Массы в Дискорде по команде info, вот она:
score = 50 * (produced_blocks/selected_slots) * (active_cycles/nb_cycles_episode) * (1 + routable_samples/routability_trials + total_maxim_factor/routability_trials)
*формула может немного изменяться от эпизода к эпизоду, но основной принцип начисления остается тот-же.
Здесь условно 2а типа параметров (обозначены + и -):
* (+) - параметр на который вы можете оказать воздействие
* (-) - параметр который ни от вас ни от вашей ноды никак не зависит
(+) active_cycles: - количество циклов, в которых ваша нода была настроена правильно и полноценно функционировала
(-) routability_trials: - количество циклов в эпизоде, за которые начислялись очки за routable_samples
(-) nb_cycles_episode: - общее количество циклов в данном эпизоде
(+) produced_blocks: - количество блоков которое смогла обработать ваша нода
(-) selected_slots: - количество слотов (блоков) которые были выделенные для обработки вашей нодой
(+) routable_samples: - количество циклов которые ваша нода была в сети и была доступна для других нод
(+) total_maxim_factor: - коэффициент т.н. "децентрализации"
Также недавно добавили информативную строку, для удобства:
Up to now, there were XXX cycles scored for staking and YYY cycles scored for routability and maxim factor in this episode.
XXX - количество завершенных циклов в данном эпизоде
YYY - это тот-же самый routability_trials
А теперь чуть поподробнее о тех параметрах на которые вы можете оказывать влияние:
active_cycles - наверное это САМЫЙ ВАЖНЫЙ параметр, который будет увеличиваться каждый цикл на 1 если: у вас последняя версия ноды, она нормально стартовала и работает, есть активный ролл, кошелек зарегистрирован в стейкинге, нода правильно зарегистрирована у бота в дискорде.
produced_blocks - в идеале этот параметр всегда должен быть равным параметру selected_slots, т.е. ваша нода должна обработать такое-же количество блоков, которое ей было выделено.
routable_samples - в идеале должен быть равен значению YYY, т.е. ваша нода всегда в сети и всегда доступна для входящих подключений от других нод.
total_maxim_factor - в идеале должен увеличиваться на 1 каждый цикл и быть равным значению routable_samples. Условно говоря, этот коэффициент отображает "плотность заселения нод с Массой на квадратный километр датацентра". Т.е. если вы держите ноду с массой в одном из популярных датацентров, то рассчитывать на коэффициент total_maxim_factor который будет увеличиваться каждый цикла на 1 - не стоит. Скорее всего он будет где-то в районе 0,1. От total_maxim_factor будет зависеть 1/3 (33,3%) от максимально возможного количества поинтов, которое можно заработать в текущем эпизоде.
Продолжение следует.... (возможно)
Еще немного о бутстрапе (bootstrap).
Здесь не будет лишних (на мой взгляд) слов, а многие моменты будут опущены.
Итак, бутстрап. Простыми словами Вашей ноде нужно получить начальную информацию для того чтобы дальше взаимодействовать с другими нодами в сети, для этих целей разрабы выделили (на данный момент) 8 нод, но они очень часто перегружены и просто "футболят" Вас по таймауту. В результате - Ваша нода не работает. Чтобы избежать всех этих проблем я, еще с февраля 22 года, загружаюсь (бутстраплюсь, прикуриваю) со свох нод, тех которые уже успешно стартовали.
Обычно в самом начале эпизода, когда кол-во нод в сети не большое, проблем с бутстрапом нет.
Итак, нам нужно настроить и подготовить наши ноды, для того чтобы мы имели возможность с них стартовать.
1. Сперва готовим список дополнительных нод с которых мы будем стартовать. Для этого нам нужно знать (и выписать) связку IP адрес + ID ноды всех ваших нод с массой, выглядит это так:
Каждая строка должна быть формате ["IP:порт", "ID"], где:
["149.202.86.103:31245", "P12UbyLJDS7zimGWf3LTHe8hYY67RdLke1iDRZqJbQQLHQSKPW8j"],
IP и ID проще всего узнать в клиенте (clientw
) через командуget_status
Выписываете все IP и ID, формируете в такой же список как на скриншоте, потом получившийся список вставляете после строки bootstrap_list = [
в секции [bootstrap]
, в файле /root/massa/massa-node/base_config/config.toml
.
До 15 или 16 этапа, на этом можно было бы и закончить, но теперь разарбы добавили вайтлист файл.
2 . Вайтлист файл bootstrap_whitelist.json
, расположен в папке /root/massa/massa-node/base_config
. В нем содержится список тех IP адресов, которые могут подключиться и загружаться с Вашей ноды. Для себя я добавляю все IP адреса, всех своих серверов, т.е. формирую список вообще всех серверов которые арендую и на которые потенциально могу поставить ноду массы. Выглядит это примерно так:
Здесь формат попроще, две квадратные скобки, IP адрес заключенный в кавычки, в конце каждой строки запятая. Последняя строка без запятой.
После того как отредактировали эти 2а файла - перезапустите ноду. (После правки конфига я бы рекомендовал делать не рестарт а стоп/старт. Насколько я помню, по крайней мере раньше, при рестарте не перечитывался конфиг файл).
Вайтлист файл просто закидываем (копируем) на каждый сервер где работает масса, а конфиг файл уже редактируем отдельно.
В 18 этапе появился небольшой "ньюанс".
Теперь некоторые ноды (даже если восстанавливать из бекапа) - получают префикс N в названии ноды (вместо P как было раньше).
Глобально вроде бы как это ни начто не влияет, НО!!! влияет на бутстрап.
Т.е. если вы добавляете в свой конфиг свои ноды, и одна из них будет начинатся на N - тогда нода не запуститься вообще, будут ошибки.
Выход простой - поменять в конфиг файле (в разделе бутстрапа) буковку N на P.
И есть еще ньюанс, если по команде get_status вы получаете имя ноды которая начинается на N, то после node_testnet_rewards_program_ownership_proof вы получите имя ноды котрая будет начинаться на P, соответсвенно при регистрации в дискорде у вас ID ноды тоже будет начинаться на P.
Т.е. будет ситуация когда нод ID будет отличаться первой буквой в get_status и у дискорд бота.
В конфиг файле можно уменьшить время ожидания для подключения к следующей ноде: параметрretry_delay = 6000
в той же секцииbootstrap
. (по дефолту он стоит 60000 = 1 минуте, убираем ноль = 6 секунд)
чтобы мониторить ноды я пользуюсь ботом https://t.me/hekumatiarubot (добавить ноду /add адрес_кошелька)