Гайд по установке микснет ноды Nym

Гайд по установке микснет ноды Nym
Photo by GuerrillaBuzz / Unsplash

ВНИМАНИЕ! С 20 января 2025 данный гайд обновляться не будет!

Дата Изменения
09 Мая 2024 Статья опубликована
13 Мая 2024 Изменена папка установки ноды
28 Мая 2024 Бинарник ноды обновился до версии 1.1.2 v2024.5-ragusa
29 Июня 2024 Бинарник ноды обновился до версии 1.1.3 v2024.6-chomp
10 Июля 2024 Бинарник был обновлен до версии 1.1.4 v2024.7-doubledecker
24 Июля 2024 Бинарник был обновлен до версии 1.1.5 v2024.8-wispa
12 Августа 2024 Бинарник был обновлен до версии 1.1.6 v2024.9-topdeck
11 Сентября 2024 Бинарник был обновлен до версии 1.1.7 v2024.10-caramello
25 Октября 2024 Бинарник был обновлен до версии 1.1.9 v2024.12-aero
19 Ноября 2024 Бинарник был обновлен до версии 1.1.10 v2024.13-magura
22 Ноября 2024 Бинарник был обновлен до версии 1.1.11 v2024.13-magura-patched
02 Декабря 2024 Бинарник был обновлен до версии 1.1.12 v2024.13-magura-drift
16 Декабря 2024 Бинарник был обновлен до версии 1.2.0 v2024.14-crunch
18 Декабря 2024 Бинарник был обновлен до версии 1.2.1 v2024.14-crunch-patched

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

А пока буквально в трех словах, что такое нода (или узел)? Это просто сетевое устройство, соединенное с другим устройством, будь то мобильный телефон, роутер, компьютер, сервер, или даже кофеварка. Главное - наличие софта и подключение к интернету. Таким образом, мы получаем распределенную сеть без единой точки отказа. Думаю, вы уже слышали об этом. Сатоши предложил это в 2009, но мы не об этом. Ноду можно развернуть дома, но это сопряжено с рядом проблем, которые лучше описать в отдельной статье. Я настоятельно рекомендую воздержаться от этого и вообще забыть о запуске ноды в домашних условиях. Единственное исключение - тестирование и обучение. Поэтому обычно все просто арендуют подходящие им сервера на разных сервисах. В сообществе NYM опубликовали минимальные требования для их нод (только если вы принимаете участие в программе делегации):

4 cores CPU, 4GB RAM, 40GB storage, IPv4 and IPv6, 1TB bandwidth and 1Gbps port speed

Тут есть ряд нюансов, но пока давайте не будем думать о них. Нам нужно найти сервер, который будет соответствовать данным требованиям. И желательно, чтобы этот сервер был не от Hetzner, Contabo, AWS и тому подобных, ведь NYM выступают за децентрализацию и делают это довольно убедительно. Поэтому здесь необходим баланс между нестандартным провайдером и сервером, который удовлетворит минимуму требований. В качестве операционной системы устанавливайте Ubuntu 22, на худой конец Ubuntu 20. Можно также выбрать Debian 11-12, но данный гайд предполагает использование именно Ubuntu 22 (24 так же подойдет).

Выбрали, оплатили, получили данные сервера, что дальше? Нам нужно подключиться к серверу. Если это ваш первый опыт, то будет непросто, предупреждаю заранее. Но ничего страшного, никто еще не умирал от учебы. Существует множество приложений для работы с удаленными серверами, лично я предпочитаю PuTTY. Далее мы пойдем пошагово. Этот гайд предполагает, что у вас новый, чистый сервер.

  1. Качаем клиент тут
  1. Запускаем Putty, вписываем IP вашего сервера и нажимаем Open
  1. Вписываем root как на скрине и жмакаем enter.
  1. Пароль обычно генерируется сложный, поэтому советую его скопировать и нажать ПРАВОЙ кнопкой мыши на окне. Пароль не появится на экране, но будет введен, просто жмите Enter. Если все правильно, то появится приветствие и командная строка.
  1. Теперь будет немного больно, так как взаимодействие операционной системой линукс в основном происходит через командную строку. В идеале, команды желательно знать, понимать что они делают и уметь читать то, что они пишут. Опять же, не ленитесь учиться. Начнем с самого начала - скачаем файл самой ноды.

Иногда просто говорят - "скачать ноду", "скачать бинарник". Бинарник называется из-за английского слова Binary, то есть, двоичный, вы ведь помните, что современные компьютеры понимают двоичный язык, где 1 и 0...скачать бинарник можно несколькими способами, мы воспользуемся командой

Здесь есть важный момент, бинарник часто обновляется и данная версия вышла 8 мая 2024. Если вы читаете эту замечательную статью намного позже, то версия, вероятно, обновилась. Просто заходим сюда и находим последнюю версию по дате. Кошелек на данный момент не нужен, скипаем. Копируем ссылку именно на nym-node и заменяем ее в команде выше.

wget https://github.com/nymtech/nym/releases/download/nym-binaries-v2024.14-crunch-patched/nym-node
  1. Если у вас что-то такое, то все верно. По размеру (подчеркнуто) можно понять что скачался нужный файл. Часто видел в группе, что новички скачивают не тот файл, обращайте внимание на размер.
  1. Файл скачан, но у него нет прав на запуск. Выдаем права командой
chmod +x nym-node 

Если все правильно, то команда ничего не выдаст на экране.

  1. Теперь давайте переместим бинарник в системную папку, где обычно хранятся бинарники. Для этого используем следующую команду:
mv nym-node /usr/local/bin

Команда ничего не выдаст, значит все правильно. Папка /usr/local/bin является одной из нескольких, куда обычно устанавливают бинарники.

  1. Для проверки вводим следующую команду. Если у вас как на скриншоте, то все хорошо.
which nym-node
  1. Далее ноду необходимо инициализировать. Проще говоря, нужно ее настроить. Данный бинарник может работать в нескольких режимах, но нас интересует mixnode. Итак, команда следующая
nym-node run --id <ID> --init-only --mode mixnode --verloc-bind-address 0.0.0.0:1790 --public-ips "$(curl -4 https://ifconfig.me)" --accept-operator-terms-and-conditions

Теперь пояснительная часть:

run - запуск бинарника

--id <ID> здесь необходимо указать название ноды, это просто имя папки, в которой нода будет находиться. Можно ввести любое имя, для примера я укажу имя ноды sunny, поэтому данная опция будет выглядеть как --id sunny

--init-only - данная опция не запускает ноду, а только лишь инициализирует (настраивает) ее. Запустим ее потом.

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

--verloc-bind-address 0.0.0.0:1790 - привязка сервиса определения географии ноды к порту 1790. Порт - это что-то вроде отдельной двери на сервере, если говорить простым языком. Оставьте данную команду без изменений.

--public-ips "$(curl -4 https://ifconfig.me)" - данная команда проверяет внешний адрес вашего сервера и вставляет его в файл настроек ноды. Оставьте ее без изменений. Если у вас все так, как на скриншоте, то все в порядке.

--accept-operator-terms-and-conditions - новый флаг, который появился недавно и означается, что вы соглашаетесь с условиями запуска ноды. С условиями на английском языке можно ознакомиться тут.

  1. Можете не верить, но нода настроена! Теперь необходимо ее запустить так, чтобы она работала в фоновом режиме и всегда стартовала вместе с системой (аналог автозапуска в Windows). Для этого нам необходимо создать сервисный файл и активировать его. Вот команда:
echo '[Unit]
Description=Nym Node 1.2.1
StartLimitInterval=350
StartLimitBurst=10

[Service]
User=root
LimitNOFILE=65536
ExecStart=/usr/local/bin/nym-node run --id sunny --deny-init --mode mixnode --accept-operator-terms-and-conditions
KillSignal=SIGINT
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target' | tee /etc/systemd/system/nym-node.service

Поясню самые важные моменты.

User=root - здесь мы указываем имя пользователя от имени которого будет работать нода. ВАЖНО!!! Это очень плохая практика запускать ноды от имени root. Я это вижу постоянно, почти у каждого пользователя и я призываю вас не запускать данную ноду от имени root. Но почему же мы делаем наоборот, спросит пытливый читатель? Все потому, что данный гайд расчитан на начинающих пользователей и упор идет больше на то, как запустить работающую ноду. Дальше можно будет говорить о том, как улучшить безопасность ноды. На самом деле, это очень важный момент, и я прошу вас не игнорировать его.

ExecStart=/usr/local/bin/nym-node run --id sunny --deny-init --mode mixnode - эта строка указывает путь к бинарнику. Очень часто ошибки возникают, когда этот путь указан неверно, и система просто не понимает что запускать.

Сюда можно дописать различные опции запуска ноды. На данный момент установлены минимальные опции:

Run (запуск ноды)

--id sunny (указывает название ноды. ВНИМАНИЕ! Вписывайте ВАШЕ название, а не копируйте мое)

--deny-init (запрещает ноде проводить настройку, мы ведь настроили ее!)

--mode mixnode (режим миксноды).

--accept-operator-terms-and-conditions - согласие с условиями, этот флаг обязателен начиная с версии 1.1.3.

Так же обратите внимание на команды помеченные красным

Это интересная фишка. Фактически, мы создаем файл для автозапуска ноды со всем содержимым, кладем его в нужную папку и делаем это одной командой прямо в терминале. Круто, правда?

  1. Если все верно, то команды просто продублируются, как на скриншоте

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

systemctl enable nym-node

Если все верно, то увидите вот такое.

  1. Ура, можно запускать ноду! Сделать это очень просто - командой
systemctl start nym-node

команда ничего не выдаст на экран.

  1. Проверяем состояние запущенного бинарника. Если горит зеленая надпись active (running) и логи похожи на те, которые на скриншоте, то все хорошо.
  1. Дополнительно можно проверить логи ноды. Для это вводим команду. Остановить логи можно комбинацией ctrl+c. Если есть ERROR, то нужно разбираться. Если INFO или WARN, то ничего страшного.
journalctl -u nym-node -f
В данном случае нода отключена, у вас, скорее всего, будут другие логи
  1. Далее нам необходимо записать информацию о нашей ноде в смарт-контракт. Для этого вам понадобится минимум 100 NYM для "заморозке" на смарт-контракте ("разморозка" может занять до 1 часа), а также немного токенов NYM для оплаты комиссии (газа). Так как это блокчейн Cosmos, транзакции очень дешевые, 1 NYM хватит с головой. Вы можете скачать официальный кошелек отсюда. На момент написания статьи последняя версия кошелька - 1.2.15 от 18 ноября 2024, обязательно качайте последнюю версию для вашей ОС, я выделил версию для Windows.

Качаем, устанавливаем - тут ничего необычного. При создании кошелька вас попросят сохранить сид-фразу. Какое первое правило криптана? Всегда сохраняйте сид фразу! Как и где хранить - это отдельная тема. Далее, на данный кошелек необходимо отправить 102 NYM. Не забываем, что токен NYM существует на 2-х блокчейнах - Ethereum как ERC-20 токен и в родной сети космоса (Nyx). Первый торгуется на многих биржах, второй только на Kraken...кажется, еще была CEX биржа, но я не уверен. Так же нативный токен торгуется на Osmosis. Нам нужен именно нативный токен, так как именно он используется в кошельке для работы с нодой. Пытливый читать наверняка уже хочет спросить: "А зачем тогда ERC-20 токен, газ дорогой и все дела?" Вот пишу статью, а газ - 5 гвей, красота...но такое будет не всегда. А ответ очень простой - ERC-20 токен намного проще листить на биржу, вот и все. Команда работает над простым способом перекидывания токенов из Ethereum в Nyx, но релиз данного решения был недавно отложен на неопределенное время. Итак, нам необходимо отправить токены на адрес кошелька.

  1. Далее заходим в кошельке в раздел Bonding и нажимаем кнопку Bond

ВНИМАНИЕ! С выходом обновления 1.1.10 шаги ниже изменились, будет новый гайд.

Появляется следующее окно

  1. Поясняю. Нам необходимо выбрать Mixnode, у нас же микснода, не забыли? В поле Identity Key необходимо указать публичный ключ ноды. Возвращаемся в терминал Putty и пишем
nym-node bonding-information --id sunny

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

Далее необходимо скопировать каждое поле и вставить его в соответствующее поле в кошельке. Расскажу еще одну фишку - текст в Putty можно выделять мышкой и по щелчку правой кнопкой текст будет копироваться в буфер обмена и в командную строку. Не беда, просто нажмите enter в конце, ОС выдаст ошибку и очистит командную строку, выглядит это вот так

Если у вас что-то такое, то все хорошо. Возвращаемся к кошельку, выглядит все у меня вот так, у вас должно быть похоже. В поле Host укажите IP адрес вашего сервера, с точками между блоками. В поле Version пишем актуальную версию бинарника (на данный момент - 1.1.9). Обязательно установите галочку Show advanced options и замените порт 8000 на 8080, это баг в кошельке, будет исправлен в следующей версии.

  1. Жмакаем Next и видим следующий экран

Рассказываю.

"Amount" - это количество токенов, которое вы "замораживаете" для запуска ноды. Минимальное количество - 100 токенов NYM. "А зачем больше, если можно меньше?" - уже спешишь задать вопрос ты, мой любимый читатель. Отвечаю: чем больше токенов в заморозке, тем больше доверия к оператору ноды.

"Operating Cost" - это интересная опция, которая вызвала некоторое обсуждение в сообществе. Тут необходимо указать стоимость вашего сервера за 1 месяц в пересчете на токены NYM. Это немного сложно делать, так как курс токена может меняться, но все же необходимо сюда вписать приблизительное значение. Оговорюсь, что если у вас возник соблазн вписать сюда 1000 токенов, это работает не совсем так. Поэтому не пытайтесь обмануть систему. Максимальное значение - 2000 токенов, в некоторых странах цены на аренду серверов достаточно высокие. Если вы учавствуете в программе делегаций, то максимум можно установить 1000 токенов.

"Profit Margin" - фактически, это ваша маржа, как оператора ноды. Ваш заработок, прежде чем токены будут распределены стейкерам (тем, кто делегировал токены в вашу ноду). Максимальное значение - 80, что очень много. Некоторые не совсем "чистые" операторы устанавливают данное значение в 0, привлекают делегации токенов от трудового народа, а потом резко увеличивают данный параметр до 15-20%. Данная практика будет в будущем наказываться, поэтому не злоупотребляйте. На данный момент идет голосование о минимальной марже для операторов, подробности на английском тут. Голосование окончилось 2 июня 2024. P.S. от 11 сентября 2024 - был установлен минимальный порог в 20%.

  1. Далее нажимаем Next. Появляется окно с командой и какой-то фигней. Что тут делать? Все просто, ваша нода должна совершить подпись. Все ж помнят как сайты просят наш кошелек подписать транзакцию? Делается это для того, чтобы доказать, что именно вы оператор данной ноды.

Выделяем мышкой и копируем команду

nym-node sign --id <your-node-id> --contract-msg

вставляем ее в блокнот, заменяем <your-node-id> на наш id и нажимаем на кнопку Copy Message в кошельке

Вставляем данную фигню в блокнот в самом конце.

В блокноте копируем всю команду целиком и вставляем в терминал, запускаем. У меня получилось вот так

Тут терминал покажет вам параметры ноды, которые мы вписавали в кошельке чуть раньше. Нас интересует ответ, его я выделали красной стрелкой выше. Копируем его полностью и вставляем в нижнее поле кошелька. Получилось вот так

  1. Прожимаем Next и попадаем на финальный экран.

Видим тут публичный ключ ноды, количество токенов для заморозки и стоимость транзакции (газ), 0.008273 NYM, это прямо ну очень дешево, 0.0013 USD на текущий момент.

  1. Нажимаем Confirm. Если все правильно - видим это

Иногда бывают ошибки, тут необходимо смотреть индивидуально.

  1. Перейдите в любой другой раздел кошельки и сразу вернитесь в Bonding. Будет видно следующее
  1. Штош, все отлично, все работает. Но нам необходимо следить за нодой. У меня есть несколько статей на эту тему на английском языке, но мы пока будем использовать то, что нам предоставляет сам Nym. На той же страничке кошелька нажимаем на еле-еле заметную ссылку.
  1. Откроется страничка в эксплорере, где будет видна главная информация о ноде. В самом низу странички будет рисоваться график аптайма ноды, кол-во обработанных пакетов и другая инфа.

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

В принципе, на сегодня это все. Не забывайте, что эта нода не из тех где "установил и забыл". Тут есть свои нюансы, обновления выходят часто, относительно активное комьюнити. До связи!

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

journalctl -u nym-node.service -f - проверка логов ноды, выход по ctrl+c

service nym-node restart - перезагрузка ноды (осторожно, аптайм очень сильно упадет после перезагрузки, но постепенно восстановится!)

P.S. Если у вас очень много токенов, то можете часть делегировать в мою ноду, ключ 8Busix2zATF8ssoD6jxLz4ZetMkD5jvqwrBKdbCgXTpb У меня крутые провайдеры, защищенные сервера и я оперативно реагирую на обновления.