September 28, 2023

Гайд - установка ноды валидатора в проекте ZetaChain

Website - Discord - Twitter - Github - Zealy

Обновлено - 24.01.2024

RU | ENG

Содержание:

  1. Небольшое введение
  2. Подготовка рабочего места
  3. Аренда сервера
  4. Подключение к серверу
  5. Установка ноды
  6. Создаём кошелёк
  7. Создаём валидатора!
  8. Работа с нодой
  9. Обновление ноды
  10. Резервное копирование
  11. Восстановление из резервной копии
  12. Slem :)

Небольшое введение

На просторах интернета почти нет гайда по установке ноды этого проекта и уж тем более нет таких подробных гайдов для совсем начинающих:)

Я постараюсь достаточно подробно пройти все шаги от подготовки рабочего места до установки самой ноды.

Подготовка рабочего места

В качестве операционной системы будет использоваться Windows, так что всё ПО будет именно для этой ОС, если будет такая потребность расскажу какое ПО можно использовать на MacOS.

Скачиваем по ссылке программу MobaXterm - выбираем версию Portable, если не хотите устанавливать ПО на ваш ПК.

Эта программа нам нужна для удалённого подключения по протоколу SSH к арендованному нами серверу (сервер мы арендуем позже).

После того как мы распакуем скачанный нами архив с программой, в папке необходимо запустить исполняемый файл MobaXterm_Personal_23.2.exe

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

Включаем параметр Remote-monitoring (experimental)

После нажимаем кнопку ОК.

На этом этапе подготовку рабочего места мы завершаем.

Теперь нам нужно арендовать удалённый сервер для нашей ноды.

Аренда сервера

Сервер будем арендовать на Hezner - немецкая компания, цена/качество на текущий момент. При этом не ограничивает регистрации для санкционных стран:)

Так же можно арендовать сервера у компаний которые работают в вашей стране, подскажу, пишите:)

Проходим по моей реферальной ссылке и регистрируемся на Hezner.

Нужно заполнить ФИО и страну по вашему местному паспорту или загран паспорту, так как придётся подтверждать личность.

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

У кого с картами всё хорошо, просто привязываем к аккаунту:)

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

Проходим по ссылке и нажимаем создать проект и вводим любое имя.

Нажимаем на блок с нашим проектом

Нажимаем кнопку добавить сервер

Небольшое отступление: на Hezner за аренду сервера мы платим по схеме сколько пользовались, столько и заплатили, цена стоит за месяц непрерывного пользования. К примеру если сервер стоит 15 евро в месяц, а мы пользовались сервером 10 дней и удалили его, то счёт в конце месяца нам придёт только за эти 10 дней - примерно 5 евро. И да, тут приходят счета на почту где расписано сколько и за что мы должны и через пару дней автоматические списывается эта сумма с привязанной карты.

Теперь давайте посмотрим какие же требования к серверу у нас написаны в официальной документации на сайте ZetaChain.

Так как мы будет устанавливать ноду валидатора, то нам нужны вот такие характеристики VPS сервера - процессор с 4-мя ядрами, 16 гигабайт оперативной памяти и 300 гигабайт места на диске, желательно чтобы диск был SSD а лучше NVME для лучшей скорости чтения/записи на диск.

Так же исходя из официальной документации нам нужно понимать какую операционную систему выбрать для установки на наш сервер.

С характеристиками сервера определились, идём выбирать сервер на Hezner.

Мы уже нажали кнопку "Add Server" ранее, выбираем месторасположение нашего сервера и операционную систему.

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

Как вы видим цена в месяц такого сервера будет нам стоить 16.32 евро в месяц, если у вас на карте доллары, они будут конвертированы в евро автоматически.

Нажимаем "Create & Buy now"

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

Далее мы идём на нашу почту и смотрим письмо от Hezner где нам прислали все реквизиты доступа для подключения к нашему серверу по протоколу SSH.

Подключение к серверу

Теперь у нас есть всё чтобы подключиться к нашему серверу по SSH.

Открываем нашу программу MobaXterm

И создаём наше SSH подключение.

В поле "Remote host" мы вставляем IPv4 адрес из письма.

В поле пользователя мы нажимаем галочку "Specify username" и справа в поле удаляем выделенное и пишем "root" - после всего нажимаем кнопку "OK"

Слева у нас появилось наше подключение, а справа мы видим что мы подключились к серверу и осталось ввести только пароль из письма.

Копируем пароль и ВАЖНО - чтобы вставить пароль необходимо просто нажать один раз правой кнопкой мыши вот в этом место.

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

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

Вводим ещё раз текущий пароль с помощью которого мы вошли, напоминаю на удалённом сервера вставляем мы все команды одним щелчком правой мыши в поле куда требуется что-то ввести, а как копировать я вам покажу дальше:)

После того как вставили свой пароль правой кнопкой мыши вы не увидите что там что-то изменилось, просто нажимаем клавишу "Enter" и теперь уже придумываем свой новый пароль, вы можете начать вводить его просто с клавиатуры а можете так же где-то его написать и скопировать и вставить. Фишка в том в целях безопасности на Linux/Unix операционных системах когда мы вводим пароль он никак не отображается и при наборе мы не должны допускать ошибок даже в одном символе, так как стереть мы неправильно набранный символ не сможем, так как не видим что набираем:) Если неправильно ввели руками, просто нажмите клавишу "Enter" и начните ввод заново. Но чтобы избегать ошибок и ручного ввода, просто копируйте откуда-нибудь и вставляйте:)

Вводим новый пароль и повторяем его ещё раз.

И вот мы наконец то на нашем сервере и может начинать творить:)

Но для начала давайте переподключимся к нашему серверу ещё раз.

Так как мы сменили пароль, при следующем подключении программа будет пытаться авторизоваться на сервере с нашим сохранённым старым паролем.

Давайте закроем подключение нажав на крестик вверху

После мы просто нажимаем два раза левой кнопкой мыши по нашему созданному уже подключению.

И видим что доступ нам запрещён и требуется ввести актуальный пароль.

Вводим актуальный пароль который мы придумали сами и сохраняем его ещё раз в мастере паролей программы MobaXterm.

Теперь уже точно всё:) Можно начинать творить:)

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

Можно пойти сложным путём и начать установку ноды используя официальный гайд с сайта ZetaChain, но мы немножечко схитрим и воспользуемся готовыми скриптами от ребят которые профессионально занимаются нодами:)

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

Копируем команду и вставляем правой кнопкой мыши.

apt update && apt upgrade -y

Везде где будут подобные окна, просто нажимает клавишу "Enter".

После завершения обновления у вас опять появится строка ввода команд.

Теперь переходим на сайт NodeJumper - у них мы и будет брать готовый код по установке ноды.

У них на сайте есть специальная кнопка, нажав на которую мы скопируем целый блок кода.

Нажимаем кнопку "Copy" и правой кнопкой мыши вставляем это блок кода в нашу командную строку и нажимаем "Enter".

Если будет появляться окно, нажимаем "Enter".

После того как обновление закончилось у нас опять появится строка ввода.

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

в поле "Node Name" - сейчас прописано моё имя ноды, не нужно писать при своей установке такое же, придумываем обязательно СВОЁ:)

На сайте сформируйте код ниже с именем вашей ноды, копируем большой нижний блок кода, вставляем в командную строку и нажимаем "Enter".

Буквально через 3-5 минут у нас скачаются все необходимые компоненты и пойдут логи уже запущенной ноды, где мы может увидеть что начинается синхронизация блоков самого блокчейна Zetachain.

Параметр "height" как раз и показывает нам какой сейчас блок синхронизируется, по другому это называется высотой блока.

Актуальный блок мы всегда можем посмотреть на сайте NodeJumper в шапке сайта.

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

На этом этапе мы установили ноду и теперь нам нужно создать свой кошелёк или же импортировать сид фразу с вашего Kepler или Leap кошелька:)

Я же покажу вам как создать новый кошелёк и дам команду как импортировать свой кошелёк через сид фразу.

Чтобы выйти из режима логирования где мы смотрим идут ли блоки и нет ли каких-либо ошибок нажимаем комбиницаю клавиш CTRL+C и мы опять попадаем в командную строку.

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

sudo journalctl -u zetacored -f --no-hostname -o cat

Создаём кошелёк

Почти все команды мы берём тут https://app.nodejumper.io/zetachain-testnet/cheat-sheet.

И так чтобы создать новый кошелёк, нам нужно выполнить вот такую команду.

zetacored keys add wallet

После выполнения этой команды нам будет показан наш кошелёк и сид фраза от него, это нужно скопировать себе куда-нибудь и бережно хранить:)

root@ubuntu-8gb-fsn1-1:~# zetacored keys add wallet

- address: zeta1v4eg64c8qahhywefa0ecl72njkmdthnv7lm2jc
  name: wallet
  pubkey: '{"@type":"/ethermint.crypto.v1.ethsecp256k1.PubKey","key":"Aw4zK6AP8mdlyYo7xzQHg3kh9KvbAmF98WNoq0ix/D65"}'
  type: local


**Important** write this mnemonic phrase in a safe place.
It is the only way to recover your account if you ever forget your password.

tower please minimum chimney state captain page hammer family erupt chef ribbon express gym enable peanut float educate road soon initial ride paddle thrive

Если мы забыли свой адрес кошелька то может посмотреть список созданных нами адресов вот такой командой.

zetacored keys list

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

Но для начала нам нужно импортировать наш адрес в кошелёк, я буду показывать на примере Kepler. Это нужно для того чтобы мы смогли запросить тестовые токены на EVM адрес нашего кошелька который имеет вот такой вид.

0x65728d5707076f723b29eBf38Ff95395B6D5de6C

В сети Zeta у нас же создаётся вот такой адрес.

zeta1v4eg64c8qahhywefa0ecl72njkmdthnv7lm2jc

На такой адрес мы запросить в дискорде токены не можем, так что идём добавлять тестовую сеть Zeta в Kepler и будем запрашивать токены:)

Думаю вас не составит труда установить сам кошелёк по этой ссылке если у вас ещё до сих порт нет.

Импортируем нашу сид фразу на этом этапе.

И так мы установили кошелёк и импортировали наш адрес созданный на сервере.

Давайте теперь добавим тестовую сеть ZetaChain Athens-3.

Идём на сайт https://chains.keplr.app/

Пишем в поиске Zeta и добавляем.

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

И как видим у нас так же теперь доступен и EVM адрес который связан с нашим IBC(Cosmos) кошельком, на него там мы и будет запрашивать тестовые токены в дискорде.

Копируем адрес и идём в дискорд.

Заходим в ветку zeta-faucet-athens-3 по этой ссылке

И пишем вот такой запрос боту.

zeta faucet drip 0x65728d5707076f723b29eBf38Ff95395B6D5de6C

Естественно вы подставляете свой адрес.

Не обращаем внимания на скрин ниже что там другой адрес:) Но бот должен вам ответить как на скрине и на кошельке у вас должно появится 3 монеты.

Теперь давайте проверим кол-во монет на нашем сервере.

Вводим вот такую команду, только вам нужно заменить мой адрес который начинается с "zeta" на свой такой же.

zetacored q bank balances zeta1ng3h0tr24vvsupg3r965jhw89sms8s5c5a0c6v --node https://zetachain-athens.blockpi.network:443/rpc/v1/public

В итоге сервер нам должен показать кол-во наших монет.

В поле "amount" мы видим кол-во наших токенов. В моём случае это чуть больше одного токена. По примеру 1 токен это 1 и 18 нулей. У вас же должно там быть 3 токена если не запрашивали токены раньше:)

Для тех у кого уже был создан свой адрес или вы импортировали в Kepler или Leap свою сид фразу.

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

zetacored keys add wallet --recover

После вам будет предложено ввести вашу сид фразу, вставляем её и нажимаем "Enter".

Если всё хорошо, то проверяем список наших кошельков командой.

zetacored keys list

Остальные действие такие же, добавить сеть в кошелёк и запросить токены.

И так, теперь мы переходим к самому главному этапу, создание валидатора!

Создаём валидатора!

И так, токены у нас есть, пора создать нашего валидатора.

Выполняем вот такую команду.

zetacored tx staking create-validator \
--amount=1000000000000000000azeta \
--pubkey=$(zetacored tendermint show-validator) \
--moniker="NameMyNode" \
--identity=FFB0AA51A2DF5955 \
--details="velyar is the best" \
--chain-id=athens_7001-1 \
--commission-rate=0.10 \
--commission-max-rate=0.20 \
--commission-max-change-rate=0.01 \
--min-self-delegation=1 \
--from=wallet \
--gas-prices=0.1azeta \
--gas-adjustment=1.5 \
--gas=auto \
--node https://zetachain-athens.blockpi.network:443/rpc/v1/public \
-y 

Копируем себе эту команду всю полностью в блокнотик и меняем в поле moniker="NameMyNode" - значение NameMyNode на своё название ноды, которое вы указывали при установке ноды.

Если всё хорошо то сервер вам выдаст хэш вашей транзакции.

Валидатор создан, можно нас всех поздравить:)

Теперь давайте проверим, а действительно ли мы создали валидатора и на каком мы месте:)

Идём на сайт https://zetachain.exploreme.pro/validators

И ищем имя нашего валидатора, есть две вкладки.

Можно нажать на имя своё и посмотреть все подробности.

Здесь мы видим наш адрес кошелька, valoper адрес нашего узла по которому мы можем делегировать токены или сообщить его кому-либо чтобы делегировали нам:) Вот мой на всякий случай:)

zetavaloper1ng3h0tr24vvsupg3r965jhw89sms8s5csahyh6

Так же мы может видеть тут кол-во токенов делегированных нам.

И обращаем внимание на статус нашей ноды. Тут показывает в активных мы валидаторах или нет, а так же в тюрьме мы или нет.

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

zetacored tx slashing unjail --from wallet --chain-id athens_7001-1 --gas-prices 0.1azeta --gas-adjustment 1.5 --gas auto --node https://zetachain-athens.blockpi.network:443/rpc/v1/public -y

После обновить страницу и проверить статус. Естественно у вас должны быть токены чтобы выполнить любую подобную транзакцию:)

Давайте теперь попробуем делегировать себе ещё 1 токен.

Выполняем вот такую команду.

zetacored tx staking delegate $(zetacored keys show wallet --bech val -a) 1000000000000000000azeta --from wallet --chain-id athens_7001-1 --gas-prices 0.1azeta --gas-adjustment 1.5 --gas auto --node https://zetachain-athens.blockpi.network:443/rpc/v1/public -y 

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

zetacored tx staking delegate zetavaloper1mvjy7qa5lh5s7667t0wupmk8zcczrer2xa42fr 1000000000000000000azeta --from wallet --chain-id athens_7001-1 --gas-prices 0.1azeta --gas-adjustment 1.5 --gas auto -y --node https://zetachain-athens.blockpi.network:443/rpc/v1/public -y

После слова delegate стоит valoper адрес того кому мы делегируем токены. Меняем его на нужный вам и тут стоит так же 1 токен, если нужно больше, так же меняем цифру.

На этом наше испытание подошло к концу.

Дальше я покажу где можно брать другие команды для работы с нашей нодой:)

Работа с нодой

В этом разделе можно найти все полезные команды.

Давайте например проверим, синхронизировалась ли наша нода полностью, если после выполнения команды у нас выдаст значение "false", то значит синхронизация прошла полностью.

zetacored status 2>&1 | jq .SyncInfo.catching_up

Видим что значение у нас "false" значит всё в порядке.

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

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

В дискорде Zetachain в ветке #testnet-announcements публикуются новости об обновлениях. Там обычно указано на каком блоке необходимо обновиться на актуальную версию.

Как только мы дошли до нужного нам блока начинаем обновление.

Переходим в раздел Upgrade и копируем весь код полностью из раздела Manual Upgrade.

После успешного обновления у нас пойдут логи.

Обязательно проверяем версию zetacored после обновления.

zetacored version

Резервное копирование

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

Вот какие файлы нам понадобятся:

1. Самый важный файл priv_validator_key.json, он находится вот в по этому пути, так как мы работает через приложение MobaXterm у нас есть удобный доступ к файлам сервера, просто выбираем нужный нам файл и нажимаем скачать его себе на компьютер.

2. Так же из этой же папки нам нужно сохранить два файла addrbook.json и node_key.json.

3. И ещё важны файлы нашего адреса.

Эти два файла находятся тут, сохраняем оба.

Восстановление из резервной копии

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

1. Первый шаг это установка ноды на наш новый сервер и ожидание когда нода полностью синхронизируется до актуального блока.

2. На втором шаге мы останавливаем процесс zetacored на новом сервере командой.

sudo systemctl stop zetacored

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

4. Теперь очень важный шаг, полностью останавливаем наш старый сервер, выключаем физически наш сервер у провайдера VPS, убедитесь что он не доступен и только после этого приступайте к следующему шагу.

5. Запускам наш новый сервер командой.

sudo systemctl restart zetacored

После этого у нас должны пойти стабильные логи и будут показаны зелёные блоки.

Спасибо всем кто дошёл до конца!

На этом пока всё...:)

P.S. Влад (Slem) спасибо большое за терпение и твою непосильную помощь! Ценю :)