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

Гайд по установке микснет ноды Nym
Photo by GuerrillaBuzz / Unsplash
Дата Изменения
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

Итак, вы интересуетесь темой приватности и решили поддержать 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.10-caramello/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.1.7
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.13 от 8 мая 2024, обязательно качайте последнюю версию для вашей ОС, я выделил версию для Windows.

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

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

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

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

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

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

Если у вас что-то такое, то все хорошо. Возвращаемся к кошельку, выглядит все у меня вот так, у вас должно быть похоже. В поле Host укажите IP адрес вашего сервера, с точками между блоками. В поле Version пишем актуальную версию бинарника (на данный момент - 1.1.7). Обязательно установите галочку 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 У меня крутые провайдеры, защищенные сервера и я оперативно реагирую на обновления.