February 13, 2022

Ноды от 0 до 0,01 или первый опыт настройки

Благодарим за материал нашего автора - _truNodes

Привет, меня зовут Сергей и я алкоголик поклонник мира криптовалют! Хотя углубляться в этот мир я начал не так давно, где-то полгода назад, но этого времени мне хватило, чтобы проникнуться идеями децентрализации. Плюс, активно вникать в саму механику работы криптовалют я начал не больше месяца назад. Короче, нубас я ещё тот:)

И вот я решил изучать что-то действительно интересное и значимое, а не просто участвовать в Airdrop и токенсейлах на Coinlist. Кстати, за полгода участия удача улыбнулась лишь однажды, и я получил аллокацию.

Здесь хочу описать свой короткий путь поднятия 2-х простых по установке нод, чтобы вы поняли, что практически любой может начать этим заниматься. Главное — это упорство, энтузиазм и последовательность. К слову, поставил я эти ноды на третий день своего знакомства с этим направлениям, хотя можно было и в первый.

Дисклеймер:

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

Содержание

Что такое нода?

Я опишу своими словами!

Нода — это узел сети, а именно компьютер, на котором постоянно работает определенная программа. Под компьютером нужно понимать необязательно ваш домашний ПК, в основном ноды запускают (поднимают) на серверах.

Зачем нужна нода? Она связана с другими нодами (пирами), цель этой связи — прийти к консенсусу. Это специальный механизм, который исключает повторную трату криптовалюты, которая была задействована в транзакции.

Более детально останавливаться на разновидностях нод я не буду, так как эта информация лучше подойдет для неспешного и самостоятельно изучения.

Почему из всей крипты я выбрал ноды — плюсы и минусы

К содержанию

Потому что это самый лучший вид инвестирования в сфере криптовалют!

Да-да, я действительно так считаю. Не говорю, что это легкие и быстрые (даже наоборот) деньги, но в плане инвестирования — это настоящий гем в крипте!

Но сейчас я многих разочарую, а кому-то такое положение дел только добавит азарта и энтузиазма. Дело в том, что если в нодах выбрать путь сложнее (про это будет ниже), то со временем всё окупиться с лихвой, так как вы инвестируете в свои знания и будете развиваться в правильном техническом направлении. Со временем вас могут взять валидатором в майннет, а там можно будет зарабатывать даже пассивно.

Теперь о двух режимах сложности, которые я для себя выделил:

  1. Лайт мод — это просто копипаст гайдов без попытки разобраться, как и что работает внутри. Например, во многих гайдах nods guru ноды ставятся чуть-ли не однострочным скриптом. Я не говорю, что это плохой подход, каждый выбирает комфортный для себя вариант, но мы ведь тут хотим быть трушными нодраннерами:)))
  2. Хард мод — это то, что вам нужно! Ставить ноды и попутно проходить этот бесплатный курс, который познакомит вас с основами работы командной строки. Пытаться решать проблемы с установкой нод при помощи поиска в тематических и официальных чатах проектов, а не задавать 100-й раз вопрос, ответ на который есть даже в закрепе.

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

Это один из минусов поднятия нод, но тут главное — это правильный настрой и подход к делу.

Ноды — марафон, а не спринт!

Начиная изучать и устанавливать ноды, будьте готовы, что довольно длительное время вы будете работать без прибыли. Знатоки на стримах говорят, что это 3-4 месяца, а парни с тематических чатов менее оптимистичны — 4-8 месяцев. Но ведь есть ещё аренда серверов... А это может быть 50-200 долларов в месяц и даже больше, смотря сколько нод вы готовы держать.

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

Выбор сервера под требования ноды

К содержанию

Часто видел вопрос к спецам: "Можно ли ставить ноду на свой домашний компьютер делая из него сервер?". Ответ спецов был всегда один: "Можно, но не нужно!". У облачного сервера есть неоспоримое преимущество — он в работе 24/7, так как вероятность поломки и перебоев с электричеством или интернетом сведена к минимуму.

Серверы делятся на два типа — VPS и VDS (Virtual Private Server и Virtual Dedicated Server соответственно). Разницу между ними постараюсь объяснить при помощи следующей аналогии. Представьте, что физический сервер, на котором стоят VPS и VDS, это город. Панельные многоэтажки в нём — это VPS, а элитные районы с частным сектором — это VDS. В панельках квартиры разделены тонкими стенами — это виртуализация сервера на уровне операционной системы, в таких квартирах всем приходиться уживаться между собой. К примеру, сосед врубил утром перфоратор и все вокруг страдают. В нашем же случае, соседи по VPS страдают, если кто-то подрубил майнер, тогда производительность падает у всех.

Запомните! Если вы устанавливаете ноду-майнер, то нужно брать хороший VDS сервер! В противном случае это почти 100% бан от хостинга!

Что же касается элитных районов с частным сектором, то там дома огорожены большими и крепкими заборами — это виртуализация сервера на аппаратном уровне, то есть полная изоляция от соседних VDS. По этой причине, такие сервера имеют выше стоимость, чем VPS.

Вот мой субъективный рейтинг хостингов, это выжимка из полученной информации от спецов в области поднятия нод (ссылки НЕ рефки):

Хорошие 🌟🌟🌟🌟🌟

Нормальные 🌟🌟🌟

Не рекомендуются 🌟

  • Русские хостинги (кроме указанных Selectel и VDSina)
  • Webtropia (постоянные баны)

Еще в чате один пользователь после двухмесячного пользования очень хорошо отзывался о Perfect Quality, но это на свой страх и риск.

Итак, вы посмотрели в гайде требования к ноде — CPU, RAM, объем памяти жесткого диска и, исходя из этой информации, выбрали подходящий сервер на понравившемся хостинге. А как вообще подключиться к этому серверу? Для этого существуют специальные программы, которые позволяют удаленно администрировать компьютеры и серверы. Вот одну из таких утилит мы и рассмотрим ниже.

Программа MobaXterm — первое подключение к серверу

К содержанию

Сразу скажу, что есть аналоги, но я попробовал эту программу и она меня полностью устраивает. Я уверен, что эта утилита имеет более широкий функционал, но я пока её использую только для подключения к серверу. Итак, устанавливаем программу с официального сайта MobaXterm. Там обычный процесс скачивание и установки, выбираете бесплатную версию и вперед!

Я первым делом настроил внешний вид, так как по умолчанию интерфейс белого цвета, а мне такой не по душе. Переходите в Settings > Configuration > Display и настраивайте на свой вкус и цвет.

Просто скриншот

Во вкладке SSH нажимаем галочку напротив Remote-monitoring. Эта функция позволяет отслеживать нагрузку на сервер в режиме реального времени:

Ещё один просто скриншот

Создаём папку с названием ноды или тестнета, в котором мы хотим участвовать, кликнув правой кнопкой мыши по пустому месту. Я так и назвал "Massa" и "Minima"

Как-то так

Далее клацаем правой кнопкой мыши по созданной папке, создаём новую сессию и выбираем её тип в зависимости от ПО на сервере:

При подключении к серверу с Windows OS — выбираем RDP.
При подключении к Linux OS с графической оболочкой — VNC.
При подключении к Linux OS без графической оболочки — SSH.

У меня Linux OS без графической оболочки, поэтому выбираю SSH. А в поле Remote Host прописываем IP вашего сервера, который можно посмотреть в настройках или личном кабинете хостера. Во вкладке Bookmark settings прописываем информативное и понятное название сессии, также можно сменить иконку и добавить ярлык сессии на рабочий стол.

Красненьким это я сделал

Когда все пропишите, то нажимаете OK. Откроется наш терминал, в котором мы и будем прописывать все команды для запуска ноды:

Вводим логин (обычно root) и пароль.

Пароль лучше скопировать из информации о сервере и просто вставить в терминал.

Чтобы вставить какой-либо текст в терминал, нужно нажать колёсико мыши. «Ctrl + V» в MobaXterm не является сочетанием клавиш для вставки текста. По умолчанию, за эту функцию отвечает колёсико мыши.
Пароль не отображается при вводе в терминал. Вставили с помощью щелчка колёсиком, нажали Enter. Всё, вы залогинились.

При долгом отсутствии взаимодействия с окном терминала, будет обрываться сессия. Чтобы её перезапустить, нажимаем клавишу «R».

Терминал вышел из чата

Первый опыт: Massa

К содержанию

Установка данной ноды была актуальна на начало февраля 2022 года! Проверяете, на какой стадии находится тестнет, какова версия ноды на данный момент и не поздно ли вообще поднимать эту ноду!

Итак, устанавливал я Massa на сервер contabo с параметрами:

  • 4 vCPU Cores
  • 8 GB RAM
  • 200 GB SSD

Для поднятия ноды пользовался гайдом от парней с канала Let's Node!, поскольку я ещё ничего не смыслю в этих командах, то делал Ctrl+C → Ctrl+V. И вам сейчас просто пошагово скопирую гайд.

Запуск

  1. Подготовка

Обновить пакеты

sudo apt update && sudo apt upgrade -y

Установить необходимые пакеты

sudo apt install wget jq git build-essential pkg-config libssl-dev -y

Скачать и распаковать бинарные файлы

massa_version=`wget -qO- https://api.github.com/repos/massalabs/massa/releases/latest | jq -r ".tag_name"`; \
wget -qO $HOME/massa.tar.gz "https://github.com/massalabs/massa/releases/download/${massa_version}/massa_${massa_version}_release_linux.tar.gz"; \
tar -xvf $HOME/massa.tar.gz; \
rm -rf $HOME/massa.tar.gz

Сделать бинарные файлы исполняемыми

Добавить команды в систему в виде переменных:

  • Просмотр лога ноды;
  • Запуск клиента;
  • Просмотр информации о ноде;
  • Просмотр информации о кошельке;
  • Покупка ROLL’ов.
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Massa/main/insert_variables.sh)

2. Запуск ноды

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

printf "[Unit]
Description=Massa Node
After=network-online.target

[Service]
User=$USER
WorkingDirectory=$HOME/massa/massa-node
ExecStart=$HOME/massa/massa-node/massa-node
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

3. Создание кошелька

Запустить клиент

massa_client
Так вот ты какая MASSA...

Сгенерировать новый кошелёк (использовать внутри клиента)

wallet_generate_private_key

⠀Проверить адрес созданного кошелька (использовать внутри клиента)

wallet_info

⠀Выйти из клиента командой (использовать внутри клиента)

exit

4. Пополнение кошелька

Присоединиться к Discord серверу, пройти верификацию и перейти в канал #⌠💸⌡testnet-faucet

Отправить в него адрес кошелька, который найти в выводе команды

massa_wallet_info

Обычно токены приходят быстро, в редких случаях в течение 15 минут. Если по какой-то причине они не начислились, необходимо написать в один из каналов: #general, #testnet или администраторам в личные сообщения.

Проверить получение токенов можно командой

massa_wallet_info

5. Стейкинг

Для участия в тестовой сети необходимо купить как минимум 1 ROLL и застейкать его. Курс обмена: 1 ROLL = 100 MAS.

massa_buy_rolls -mb

Необходимо подождать 0.5-10 минут и проверить, появились ли купленные ROLL’ы командой

massa_wallet_info

Далее необходимо включить возможность стейкинга для кошелька командой

massa_cli_client -a node_add_staking_private_keys

После регистрации ключа для стейкинга нужно подождать около 1 часа 40 минут, пока ROLL станет активным.

После этого, через некоторое время, начнут накапливаться токены за стейкинг — за каждый обработанный блок даётся 1 MAS.

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

Информацию о ноде можно посмотреть командой

massa_node_info

На этом гайд заканчивается и дальше снова моя отсебятина.

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

Состояние ноды нужно переодически проверять, так как есть такая штука, как autosell ролла. Коллега по цеху вот нарыл в официальном чате по этому поводу: "Когда плохое соединение и теряется 70% информации блока, ролы автоматически продаются чтобы исключить вас из стейкинга и не останавливать ноду".

Но есть хорошая новость! А именно скрипт, который автоматически покупает роллы.

Важно! Для того, чтобы скрипт смог купить ролл, у вас на балансе должны всегда быть свободные токены — минимум 100 штук. Получить их можно в официальном дискорде один раз в сутки — канал с краном. Но получать их каждый день нет необходимости, просто держите на балансе минимум 100 токенов.

Для установки скрипта вводим команду

cd /root

Копируем блок текста расположенный ниже и вставляем весь в командную строку

sudo tee /root/rollsup.sh > /dev/null <<EOF
#!/bin/bash
#Версия 0.05
cd /root/massa/massa-client
#Задаем переменные
candidat=\$(./massa-client wallet_info |grep 'Candidate rolls'|awk '{print \$3}')
massa_wallet_address=\$(./massa-client wallet_info |grep 'Address'|awk '{print \$2}')
tmp_final_balans=\$(./massa-client wallet_info |grep 'Final balance'|awk '{print \$3}')
final_balans=\${tmp_final_balans%%.*}
if [ -z "\$candidat" ];then
echo \`/bin/date |awk '{print \$2,\$3,\$5}'\` "Нода в данный момент не в сети" >> /root/rolls.log
elif [ \$candidat -gt "0" ];then
echo "Ok" > /dev/null
elif [ \$final_balans -gt "99" ]; then
echo \`/bin/date |awk '{print \$2,\$3,\$5}'\` "Ролл слетел, проверяем количество монеток и пробуем купить" >> /root/rolls.log
resp=\$(./massa-client buy_rolls \$massa_wallet_address 1 0)
echo \`/bin/date |awk '{print \$2,\$3,\$5}'\` Был куплен 1 rolss >> /root/rolls.log
else
echo \`/bin/date |awk '{print \$2,\$3,\$5}'\` Недостаточно монет для покупки ролла у вас \$final_balans, необходимо минимум 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

На этом собственно все. Скрипт будет работать до конца 7 периода.

Также можно мониторить ноду с помощью бота в телеге @hekumatiarubot. Чтобы добавить в него свою ноду, нужно после запуска бота прописать /add <адрес_вашего_кошелька>.

Далее прописываем /my, если бот выдает что-то типа такого, то нода работает нормально:

Rolls (active / candidate / final): 1 / 1 / 1
Balance (final / locked / candidate): 30.459333328 / 0 / 30.459333328
Staker stats
cycle 201 (produced / miss): 1 / 0
cycle 202 (produced / miss): 0 / 0
cycle 203 (produced / miss): 3 / 0

Второй опыт: Minima

К содержанию

Установка данной ноды была актуальна на начало февраля 2022 года! Проверяете, на какой стадии находится тестнет, какова версия ноды на данный момент и не поздно ли вообще поднимать эту ноду!

Minima ещё менее требовательна, чем Massa. Поэтому для неё подойдёт самый дешевый сервер с хостинга DigitalOcean. Хотя эту ноду можно ставить и на телефон, но такие эксперементы я ещё не проводил.

Эту ноду поднимем по аналогии с предыдущей, а именно при помощи гайда от парней с канала Let's Node! Да, сейчас вновь будет пошаговое копирования гайда.

Регистрация

  1. Перейти на сайт.
  2. Ввести код страны и номер телефона.
  3. Нажать «Send Verification Code».
  4. После получения СМС с кодом ввести его в соответствующее поле.
  5. Заполнить остальные данные.
  6. Нажать «Register».
  7. После этого в письме от [email protected] нужно подтвердить регистрацию, нажав на кнопку «Complete registration».

Запуск

Удаляем предыдущую версию, если была установлена

wget -O minima_cleanup_v98.sh https://raw.githubusercontent.com/minima-global/Minima/master/scripts/minima_cleanup_v98.sh && chmod +x minima_cleanup_v98.sh && sudo ./minima_cleanup_v98.sh

Устанавливаем ноду

wget -O minima_setup.sh https://raw.githubusercontent.com/minima-global/Minima/master/scripts/minima_setup.sh && chmod +x minima_setup.sh && sudo ./minima_setup.sh -r 9002 -p 9001

Устанавливаем необходимые пакеты

apt install curl jq -y

Общее

  • Перейти на сайт.
  • Авторизоваться.
  • Скопировать ID ноды

Выполнить команду и вставить ID ноды

curl 127.0.0.1:9002/incentivecash+uid:ID_НОДЫ | jq

Пример с ID: 00F3E50D-5A52-444B-8F1A-0DA72D6CAA84.

Команда ниже ТОЛЬКО ДЛЯ ПРИМЕРА

curl 127.0.0.1:9002/incentivecash+uid:00F3E50D-5A52-444B-8F1A-0DA72D6CAA84 | jq

Проверка

Вернуться на сайт и удостовериться, что в графе LAST PING примерно текущее время.

Информация о ноде

Добавить команду для просмотра информации о ноде в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n minima_node_info -v ". <(wget -qO- https://raw.githubusercontent.com/SecorD0/Minima/main/node_info.sh) -l RU 2> /dev/null" -a

⠀Посмотреть информацию о ноде

minima_node_info
Последний скрин, так ещё и чужой...

Обновление

На 11.02.2022 года вышло обновления до версии v0.100.32, чтобы обновить свою ноду, просто пропишите этот скрипт

wget -O minima_setup.sh https://raw.githubusercontent.com/minima-global/Minima/master/scripts/minima_setup.sh && chmod +x minima_setup.sh && sudo ./minima_setup.sh -r 9002 -p 9001

Заключение

К содержанию

Вот такое начало моего пути в поднятии нод. Сейчас вроде нет хороших новых проектов или туда не берут таких нубасов, как я. Поэтому стараюсь не терять время и понемногу обучаюсь, смотрю видео о нодах, прохожу курс на Хекслете по командной строке (выше была ссылка и вот ещё одна), участвую в функциональных тестнетах. Если моя писанина замотивирует кого-то податься в эту сферу, то я буду искренне рад и пожелаю удачи!

Не опускайте руки, ставьте перед собой цель и идите к ним. И не забывайте, что деньги переходят от нетерпеливых к терпеливым;)