Massa — как «прикурится» от ноды друга

Лирическое отступление
В тысячный раз повторюсь — что бы у вас не было проблем с бутстрапом нужно всего два условия.
Более менее нормальное железо и минимально гарантированный внешний канал.
Если хотя бы одно из условий будет нарушено — нода не будет работать. И если у вас нода не бутстрапится — значит наверняка не выполняется одно из условий озвученных выше.
Что с этим делать? Вариантов танцев с бубнами великое множество.
Первое и наиболее эффективное — это попробовать стартовать от другой, работающей ноды. (вариант со сменой хостера в данном тексте мы намеренно опускаем).
Как показала практика, если нода забустрапилась, то какое то время она вполне может работать.
Следующий вариант — соберитесь 3-4 человека, у которых есть такая проблема, и просто обменяйтесь данными друг с другом.
Стартанет одна из нод — остальные «подкурятся» от нее.
Если вы интроверт и общение с подобными себе вам в тягость можно просто на любом хостинге с почасовой оплатой, например на том же Хецнере, взять на час себе сервер с завышенными параметрами. Запустить там ноду,  и потом уже от нее запустить свою основную. Как только основная стартанула — удаляете сервер с почасовой оплатой.
Для совсем уж извращенцев — есть же exe-файлы ноды под Windows. Скачайте их, запустите ноду у себя на домашнем компьютере и попробуйте запустится от домашнего компьютера.
Ну и если с бутстрапом проблемы — никаких других нод рядом.

Итак, начиная с 16 эпизода разработчики ввели новшество.
Если раньше вы свою ноду могли запустить не только от серверов разработчиков, но и от любой другой ноды работающей в сети — то теперь эту возможность прикрыли
Теперь или только официальные сервера, или так называемый «белый список» Объясняется это тем что злоумышленник может подсунуть свой сервер для бутстрапа и «украсть все ваши деньги»

В рамках этой статьи рассмотрим подробней что это такое и как сделать WL самому.
Как по задумке разработчиков должен работать WL?
Все очень просто — у вас в ноде есть файл в котором вы указываете ip адреса тех нод которым разрешаете запустится от своей.
Естественно что бы кто то смог предпринять такую попытку — он должен знать и прописать у себя в соответствующем файле ваш ip адрес и node id.
И тогда если соблюдены оба условия (вы разрешили ему подключится для старта и передали ему нужные данные, а удаленная сторона все правильно прописала), то нода вашего друга сможет стартануть от вашей ноды практически мгновенно.

Тут как в сексе — желательно что бы было два участника. Один из которых страстно жаждет секса, а второй не против что бы его поимели, в надежде на взаимность.
К чему это я? Все дело в том что как и в сексе мы хотим получить примерно столько же как и отдаем. А не только что бы удаленная сторона удовлетворила свои насущные потребности.
Возвращаясь к нодам это звучит так — давать возможность запустится от себя всяким хитросделанным товарищам с 2/4 с практически невозможностью сделать то же самое от них — удовольствие ниже среднего. 🙁
Это я предвосхищаю вопрос — а можно стартануть от твоих нод?
Можно. И в моей группе в телеграме сделаю такую возможность. Но как минимум на старте попрошу скрины с вашего сервера
Это теория в общих чертах, переходим к практике.

Те кто считают что резервные копии это только для трусов могут пропустить этот абзац и переходить к правке WL
Для остальных предлагаю сделать резервную копию, на случай если что то пойдет не так. Так как в итоге мы будем править два файла, то до начала правки сделаем резервные копии сразу обеих
Если вдруг что то пойдет не так мы всегда сможем вернуть конфиг в первоначальное состояние и попробовать еще раз.
cp $HOME/massa/massa-node/base_config/config.toml $HOME/massa/massa-node/base_config/config.toml.backup
cp $HOME/massa/massa-node/base_config/bootstrap_whitelist.json $HOME/massa/massa-node/base_config/bootstrap_whitelist.json.backup

Проверим что резервные копия создались и нам будет из чего восстанавливать, если вдруг накосячим.
cat $HOME/massa/massa-node/base_config/config.toml.backup
cat $HOME/massa/massa-node/base_config/bootstrap_whitelist.json.backup

Сразу предупреждаю что ip адреса бывают двух видов ipv4 и ipv6. На это необходимо обратить внимание. И прописываются они немного по другому
Итак, предположим два человека решили обменятся возможностью стартовать друг от друга.
Удаленная сторона должна предоставить вам свой ip адрес. (В конкретном примере удаленная сторона предоставили ip адрес формата ipv6  2001:470:66:28b::2)
Это тот ip который удаленная сторона скармливает боту в дискорде.
Вы должны этот ip адрес прописать у себя, тем самым сказав своей ноде что «если нода с такого ip попросится стартануть от вас — позволить ей это сделать»
Дальше я на шел 2 способа это сделать.
1 в клиенте есть соответствующая команда.
2. прописать ручками в файл
Поскольку начиная с 18 эпизода разработчики наконец добавили вменяемую команду, которая не теряла результаты после перезагрузки ноды, то второй вариант практически утрачивает свою актуальность. Но я оставлю его, если вдруг через первый способ что то пойдет не так.
Итак, прежде чем добавить ip адрес той ноды которую вы хотите «подкурить» от своей в свой белый список — убедимся что ее там нет

cat $HOME/massa/massa-node/base_config/bootstrap_whitelist.json

По умолчанию в этом файле прописано два ip адреса. Один в формате ipv4, второй в формате ipv6. Думаю что чисто для примера.

Если вы не планируете разрешать «подкуриваться» от своей ноды кому то другому, а только хотите запустить свою ноду от чужой, то пререходите сразу к пункту «Что нужно сделать на удаленной (плохой) ноде«

Способ первый
Заходим в клиент
cd /$HOME/massa/massa-client/ && ./massa-client
и даем следующую команду:
node_bootstrap_whitelist add IP_АДРЕС_НОДЫ_КОТОРУЮ_ПРИКУРИВАЕТЕ


Обращаю еще раз внимание — ибо многие путаются. Сюда мы вписываем ip адрес той ноды которая у вас не бутстрапится и которую вы собираетесь запустить от текущей.
На примере ip адрес 100.100.100.100. Вы меняете на свой.
После ввода команды нажимаем Enter, что бы она вступила в силу и выходим из клиента стандартной командой Ctrl+C
И проверяем что ip адрес добавился в наш белый список

cat $HOME/massa/massa-node/base_config/bootstrap_whitelist.json

Как видим ip адрес теперь в списке.
Есть один непроверенный вопрос — нужно ли перегружать ноду после данной операции? Не знаю.
Скорее всего что нет. Это я оставлю вам. Если нода работает стабильно, то перегрузка ей ни как не навредит. Если же она сама еле-еле дышит, или вы идете на топ50, то попробуйте не перегружать
Результаты можете сообщить мне в телеграм-канале и мы вместе подправим этот раздел.
Теперь опускаемся и продолжим гайд с раздела:
«Что нужно сделать на удаленной (плохой) ноде »

Способ второй
Открываем файл WL

nano $HOME/massa/massa-node/base_config/bootstrap_whitelist.json

и дописываем в него ip адрес который предоставила удаленная сторона. Для этого просто опускаем курсор вниз на любую из строчек кроме первой и последней и нажимаем Enter

Поднимаем курсор на одну строчку верх, на пустую строчку. В это место  вставляем ip адрес который нам дали


Обратите внимание — ip адрес добавляем в кавычках и в конце строки должна стоять запятая.

Осталось сохранить наши изменения. (Раскладка на клавиатуре должна быть установлена ENG )
Выходим из редактора с сохранением результатов в том же файле.
Для этого нажимаем сочетание клавиш Ctrl+X

В нижней части редактора появится меню уточняющее хотим ли мы сохранить изменения сделанные в файле.
Подтверждаем нажав клавишу «Y»
Следующее меню информирует нас что будет перезаписан текущий файл.

Для подтверждения просто нажимаем клавишу «Enter» и выходим с консоль.

И теоретически с вашей конкретной нодой больше ничего делать не нужно — она готова принять запрос от ноды друга.
Если друг — оказался вдруг и не дал вам в замен своего ip и id своей ноды, то все  перестартовывайте ноду  что бы изменения в ступили в силу
sudo systemctl restart massad
Если же у вас равноправный обмен, то читаем гайд дальше

Что нужно сделать на удаленной (плохой) ноде

Что бы удаленная сторона смогла «постучаться» с запросом к вашей ноде вы должны предоставить человеку некоторые свои данные.
А именно — ip адрес вашей ноды и ее id. ip адрес — это тот же который вы скармливаете боту в дискорде, id ноды можно посмотреть так:
Заходим внутрь клиента
cd $HOME/massa/massa-client/; ./massa-client; cd
Внутри клиента:
get_status

Тут нам понадобится выделенная строчка.
Внимание! С 18 эпизода Node id теперь начинается с буквы N. При добавлении в конфигурационный файл нужно заменить букву N на P

Если вы уже привязали свою ноду к дискорду то node id можно посмотреть и там дав боту команду info

Удаленная сторона из этих ваших двух параметров создает строчку и добавляет ее к уже имеющимся серверам в файле
Вид строчки должен быть такой. Все скобочки, пробелы, запятые — Обязательны!
Если у вас ipv4 адрес:
["94.176.198.106:31245", "P1NyoMpkVPVeeMA1EBS5pY5UxfMGvPpoYfAfvfBrRjtaL"],
Если у вас ipv6 адрес:
["[2a00:ae40:1815:a00:8a8:aaff:fe7d:8c66]:31245", "P1iVgdGUM6RKLBZ7K6aYZwtjyLTnkPmcYx2d6xnUPKATC1KRrEi"],
Открываем второй файл
nano $HOME/massa/massa-node/base_config/config.toml

При помощи клавиш клавиатуры вверх и вниз опускаемся к разделу [bootstrap].
По аналогии с тем как мы правили первый файл устанавливаем курсор на строчке с первым адресом и нажимаем Enter

Поднимаемся на одну строчку вверх и прописываем ip адрес и node id которые нам прислала удаленная сторона

Строчка не обязательно должна быть первой. Желательно не последней, так как если присмотритесь, то в конце последней сточки нет запятой и что бы не запутаться…
Дальше выходим из редактора с сохранением как и в первом случае:
нажимаем сочетание клавиш Ctrl+X
нажимаем Y
нажимаем Enter

Перезапускаем ноду
sudo systemctl restart massad

Если все прошло нормально и на той и на другой стороне — то в результате в логах вы увидите как после неудачных попыток стартовать от серверов по умолчанию, как только нода дойдет до сервера вашего друга она сразу же запустится.

Если что то пошло не так на этапе редактирования
Можно выйти из редактора без сохранения результатов и потом попробовать еще раз. Для этого мы нажимаем сочетание клавиш Ctrl+X
И на вопрос — хотим ли мы сохранить изменения в файле нажимаем клавишу «N»
Как вернуться к бекапу конфигурационных файлов?
cp $HOME/massa/massa-node/base_config/config.toml.backup $HOME/massa/massa-node/base_config/config.toml
cp $HOME/massa/massa-node/base_config/bootstrap_whitelist.json.backup $HOME/massa/massa-node/base_config/bootstrap_whitelist.json

sudo systemctl restart massad

(хочу высказать благодарность человеку из телеграмма с ником Сергей Г. @kertio за то что сэкономил мне невероятную кучу времени предоставив готовый формат строчки для ipv6 адресов)

Что еще почитать по ноде Massa:
Контроль за падением rolls и автоматическая их покупка
Утечка памяти — определяем — перегружаем ноду
Как следить за своими сайтами и нодами
Костыль для 8 эпизода ноды massa
Как настроить ipv6 для massa

Если у вас есть что сказать по тексту статьи или «напихать» автору — добро пожаловать в мой телеграм-канал