August 30

Elixir. Гайд по установке ноды

❗️У нас нет приваток, платных статей, рекламы или иных навязчивых способов заработка на аудитории. Поэтому рассчитываю на Вашу поддержку путем подписки на наш ТГ канал Bit.Future и Youtube 👍

Полезные ссылки:

Подготовка кошельков и исходников

Для запуска ноды, нам потребуется 2 кошелька. Один (А) с которого будем запускать ноду, а другой (В) с которого будем минтить тестовые токены MOCK и делегировать их в нашу ноду.

Готовим кошелек (А) для ноды:

Создаем новый EVM кошелек и сохраняем его адрес и приватный ключ.

С сайта документации скачиваем файл validator.env

Сохраняем файл к себе на комп. Путь до папки должен быть простым, без пробелов в названии папок, без кирилицы и т.п. Например:

C:\Programs\Elixir-nodes\Node-2

Открываем скаченный validator.env с помощью блокнота и видим, какие данные нам нужно заполнить

IP_ADDRESS= IP адрес вашего VPS сервера [заполните чуть позже]
DISPLAY_NAME= любое имя вашей ноды
BENEFICIARY= адрес кошелька (А), на котором ставим ноду
PRIVATE_KEY= приватный ключ кошелька (А), на котором ставим ноду.
ВАЖНО: приватный ключ должен быть указан без в начале

После заполнения, получится примерно следующее:

Готовим кошелек (В) для делегации:

Создаем новый EVM кошелек и сохраняем его адрес и приватный ключ. Далее рекомендую работать в Rabby wallet.

Коннектим кошелек на сайт https://testnet-3.elixir.xyz/ после чего у нас сразу добавится сеть Sepolia Testnet

Далее нам нужно воспользоваться любым краном и получить тестовые Sepolia ETH в сумме, желательно, 0,05+ ETH:
- https://cloud.google.com/application/web3/faucet/ethereum/sepolia - предварительно на кошельке должно быть 0,001 ETH в ERC20 (сразу насыпет нужные 0,05+ ETH)
- https://www.sepoliafaucet.io/
- любой другой кран из Гугл-поиска по слову Sepolia faucet.

СПРАВОЧНО: Параметры Sepolia сети
chain ID:  11155111
Network name:  Sepolia
RPC URL:  https://rpc.sepolia.org
Currency symbol:  ETH
Block explorer URL:  https://sepolia.etherscan.io

После получения тестовых Sepolia ETH, на сайте https://testnet-3.elixir.xyz/ минтим 1000 MOCK. При желании, можно минтить MOCK по 1000 штук сколько угодно раз, но смотрите чтобы не потратить весь тестовый ЕТН на газ.

Делаем Approve и затем Stake наших 1000 MOCK

Нажимаем Custom Validator:

В появившемся окне вводим кошелька (А) нашей ноды и жмем Delegate. Ничего страшного, что к созданию ноды мы даже еще не приступали.

Установка ноды Elixir

В соответствии с официальной документацией, требования к ноде следующие:

  • 8 GB of RAM
  • 100+ Mb/s internet
  • 100 GB of free storage (без детализации HDD, SDD, NVME и т.п.)
  • Кол-во ядер CPU не регламентировано, но 4 хватит более чем.

Нода не очень требовательна к ресурсам, поэтому можно пробовать ставить на виртуальных VPS серверах, вместо чуть более дорогих VDS.

Рекомендуемые мной сервера:

  • xorek.cloud VPS сервер DE-R9-8 | 4 CPU + 8 RAM + 120 Gb | 749 р / мес
  • hshp VPS сервер MSK-4 | 4 CPU + 8 RAM + 120 Gb | 1100 р / мес
  • cloud4box VPS сервер RUS | 4 CPU + 8 RAM + 100 Gb | 935 р / мес

На всех сервисах есть дополнительные скидки при аренде на срок свыше 3 мес.

Я воспользуюсь привычным уже Хорьком, к тому же он и самый дешевый из тех что я нашел. Подробно как заказать сервер на Хорьке, расписывал в гайде по ноде Farcaster.
В конечном счете, после покупки VPS сервера, мы должны получить IP адрес, логин (как правило root) и пароль. Сразу же заполните IP адрес в файл validator.env, который мы скачали ранее.

После работы через PuTTY терминал, он меня реально начал бесить. Поизучав тему, решил перейти на работу с VPS серверами через терминал MobaXterm. Скачивайте и запускайте, реально гораздо удобнее.

После запуска создаем Session, выбираем формат через SSH, вводим выданный нам IP адрес, логин (username), нажимаем ОК и на следующем шаге вводим пароль.

После ввода пароля, рабочая область будет выглядеть следующим образом:

Создаем папку elxnode с помощью команды

mkdir elxnode

Теперь нам нужно перенести ранее скаченный и заполненный файл validator.env с рабочего ПК на удаленный сервер. Открываем Windows консоль, для этого нажимаем WIN+R и пишем cmd

В консоль вставляем команду копирования файла и нажимаем Enter.

scp C:\Programs\Elixir-nodes\Node\validator.env [email protected]:/root/elxnode/

Нас попросит ввести пароль и подтвердить первичное соединение с сервером написав "yes"

Файл скопируется

а в MobaXterm файл отобразится в папке Elxnode

Устанавливаем Docker, последовательно вводя команды в терминал:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Запустится процесс установки Docker. В процессе нас попросят выбрать сервис для перезагрузки, можно выбрать 7 "none of above":

Проверяем, что Docker установился успешно, с помощью команды

docker version

Появится информация об установленной версии Docker, значит все прошло успешно:

Скачиваем самый актуальный Docker image для Elixir ноды с помощью команды

docker pull elixirprotocol/validator:3.1.0

Запустится процесс установки:

❗️ Обратите внимание на наличие обновлений в конце данного гайда и Discord Elixir. Возможно последняя актуальная версия Doker Image изменилась.
Если версия Doker Image изменилась, переходи сразу в конец гайда и ставьте последнее обновление.


Теперь требуется установить политики для перезагрузки ноды, для этого последовательно пишем команды:

docker run -d \
--env-file /path/to/validator.env \
--name elixir \
--restart unless-stopped
elixirprotocol/validator:3.1.0

Обратите внимание, что путь /path/to/validator.env \ должен содержать путь до файла validator.env на VPS сервере. Т.е. в нашем случае команды будут следующие:

docker run -d \
--env-file /root/elxnode/validator.env \
--name elixir \
--restart unless-stopped
elixirprotocol/validator:3.1.0

После этого увидим примерно следующее:

Запускаем ноду Elixir в Docker с помощью команд. Обратите внимание, что я уже указал свой конечный путь до файла validator.env:

docker run -it \
--env-file /root/elxnode/validator.env \
--name elixir \
elixirprotocol/validator:3.1.0

После этого нода запустится, о и увидите такие, постоянно обновляюшиеся логи:

Проверить состояние ноды можно с помощью команды

sudo docker ps

Увидим ID Docker контейнера, версию ноды, когда нода она была создана, сколько времени активна:

Состояние работы (логи) ноды можно также просмотреть с помощью команды:

sudo docker logs elixir -f

Если видите, что нода работает и логи активно обновляются, значит все в порядке.
Можно полностью закрывать терминал, нода продолжит работать.

___________________________________________________________________________________________

❗️ Необходимо зайти в Discord Elixir и следить за ветками
#validator-announcements
#node-operators

Возможно в будущем потребуется обновить ноду, о чем будет сообщено.

Команды для обновления ноды (версия валидатора может быть изменена):

docker kill elixir
docker rm elixir
docker pull elixirprotocol/validator:3.1.0

Команды для перезапуска ноды

docker restart elixir

Теперь можно вернуться на сайт Elixir и подключить Кошелек (А), с которого мы делегировали MOCK в нашу ноду. Мы должны увидеть статус что наши средства успешно делегированы, активную кнопку Undelegate, а также область с наградами.

Награды пока не отображаются, их величина не известная. Возможно часть наград увидит Кошелек (B), с которого делалась делегация MOCK, а также и Кошелек (A), на котором запущена нода. Пока деталей никаких нет, ждем дальнейших анонсов.

На этом установка ноды закончена.

Обновление ноды

Останавливаем и удаляем текущую (старую) Doker сессию Elixir, с помощью поочередного выполнения команд:

docker kill elixir
docker rm elixir

(если у вас ошибка при удалении, то посмотрите как у вас назван Докер контейнер с помощью "sudo docker ps". Возможно он назван не Elexir, а как-то иначе (рандомно). Рандомное имя присваиваевается, если вы забыли вписать команду присвоения имени. В этом сучае удаляете контейнер с используемым именем)

Скачиваем самый последний Validator image, указанной в Дискорде::

docker pull elixirprotocol/validator:v3 --platform linux/amd64

Запустится процесс установки крайней актуальной версии Validator image, и увидите примерно следующее:

Запускаем Validator image c помощью команды, указанной в Дискорде:

docker run --env-file <path to env file> --platform linux/amd64 -p 17690:17690 elixirprotocol/validator:v3

Обратите внимание, что <path to env file> надо заменить на путь с вашим validator.env файлом. В нашем примере это был /root/elxnode/validator.env

Помимо замены <path to env file>, я также добавляю флаги (символы в коде):
1. Для запуска контейнера в фоновом (detached) режиме:

-d

2. Для присвоения имени нашему Докер контейнеру "Elexir":

--name elixir

3. Для задания политики автоматического перезапуска контейнера. Docker будет автоматически перезапускать контейнер, если он остановился по любой причине (например, из-за ошибки или перезапуска системы)

--restart unless-stopped


С учетом всех добавлений, моя итоговая команда для запуска будет выглядеть как:

docker run -d --env-file /root/elxnode/validator.env --platform linux/amd64 -p 17690:17690 --restart unless-stopped --name elixir elixirprotocol/validator:v3

Ожидайте запуска 1-2 мин.

Затем проверяем статус ноды с помощью уже привычной команды:

sudo docker ps

Аналогично же проверяем логи:

sudo docker logs elixir -f


Логи, подтверждающие, что ваш валидатор online и участвует в Elixir protocol network:

После этого можно закрывать терминал.

Через несколько минут можно переходить на сайт Elixir Testnet и подключать кошелек, с которого установлена нода. Вы должны Healthy статус ноды и постоянно увеличивающий UpTime, показывающий время успешной работы ноды.

Аналогичным образом будут делаться все другие обновления, команды которых нужно будет брать из ветки #validator-announcements в Discord Elixir


Запуск ноды в мейннете

Если вы ставите ноду с нуля, то проделываем все шаги до Раздела "Обновление ноды".
Если у вас есть уже работающая в тестнете нода, то останавливаем и удаляем текущую (старую) Doker сессию Elixir, с помощью поочередного выполнения команд:

docker kill elixir
docker rm elixir


Теперь нам надо внести корректировку в файл validator.env, который мы ранее загрузили на VDS сервер. Если работаете через MobaXterm, то просто находим его в папке elxnode и открываем с помощью текстового редактора

В первой строке: ENV=testnet-3 заменяем на ENV=prod. В остальной части файл не правим, сохраняем и закрываем.

Далее все шаги идентичны тем, что мы делали в разделе Обновление ноды, за исключением того, что в командах мы убираем слово testnet. Справочно, ниже я распишу подробно:

Скачиваем самый последний Validator image для мейннета, указанный в Дискорде::

docker pull elixirprotocol/validator --platform linux/amd64

Запустится процесс установки крайней актуальной версии Validator image, и увидите примерно следующее:

Запускаем Validator image c помощью команды, указанной в Дискорде:

docker run --env-file <path to env file> --platform linux/amd64 --name elixir -p 17690:17690 elixirprotocol/validator

Обратите внимание, что <path to env file> надо заменить на путь с вашим validator.env файлом. В нашем примере это был /root/elxnode/validator.env

Помимо замены <path to env file>, я также добавляю флаги (символы в коде):
1. Для запуска контейнера в фоновом (detached) режиме:

-d

2. Для присвоения имени нашему Докер контейнеру "Elexir":

--name elixir

3. Для задания политики автоматического перезапуска контейнера. Docker будет автоматически перезапускать контейнер, если он остановился по любой причине (например, из-за ошибки или перезапуска системы)

--restart unless-stopped


С учетом всех добавлений, моя итоговая команда для запуска будет выглядеть как:

docker run -d --env-file /root/elxnode/validator.env --platform linux/amd64 -p 17690:17690 --restart unless-stopped --name elixir elixirprotocol/validator

Ожидайте запуска 1-2 мин.

Затем проверяем статус ноды с помощью уже привычной команды:

sudo docker ps

Аналогично же проверяем логи:

sudo docker logs elixir -f


После запуска ноды, ждем 5-7 мин.
Закрываем терминал и переходим на сайт https://www.elixir.xyz/validators/

В поиске вводим адрес своей ноды и должны увидеть статус ее работы. Статус должен быть Online.