Как запустить ноду Komodo?

В прошлой статье Как собрать Komodo из исходников? мы рассмотрели процесс сборки KomodoOcean (Komodo-Qt) из исходных кодов на ПК под управлением Windows 10, с использованием WSL (Windows Subsystem for Linux). В этой статье мы чуть более подробнее остановимся на процессе запуска ноды (не путать с нотариальными нодами) Komodo, т.к. этот момент иногда вызывает затруднения. Также мы попробуем сэкономить время на синхронизации с сетью за счет использования bootstrap'а, т.к. синхронизация "с нуля" обычно занимает довольно продолжительное время (более суток) и в некоторых случаях имеет смысл ускорить этот процесс.

Скачиваем или компилируем бинарные файлы

Итак, мы предполагаем что у вас уже есть бинарные файлы KomodoOcean (Komodo-Qt). Вы могли собрать их из исходников, как мы и делали в предыдущей статье, или просто скачать с официального сайта KomodoPlatform из раздела Explore -> Wallets, находим в нем Ocean Qt Wallet и кликаем по соответствующей плитке:

Ocean Qt Wallet в разделе Wallets на KomodoPlatform

После чего нас перебросил на GitHub в раздел releases, где нам нужно прокрутить страницу чуть ниже до раздела Assets и выбрать нужный нам архив с исполняемыми файлами:

Komodo-Qt представлен для всех ОС (Windows, Linux, OSX)

Подготовка к запуску

Т.к. у нас используется операционная система Windows, то нам необходимо будет выбрать архив с именем komodo-qt-install.exe или komodo-qt-win.zip . Поясним в чем разница. Для начала нам необходимо вспомнить, что Komodo - это форк ZCash (ZEC) в прошлом, а следовательно для работы ему нужны файлы ZCashParams:

Файлы ZCashParams, необходимые для работы Komodo

Эти файлы в ОС Windows должны располагаться в папке %APPDATA%\ZcashParams и включать в себя следующие файлы:

  • sprout-groth16.params
  • sapling-output.params
  • sapling-spend.params
  • sprout-verifying.key
  • sprout-proving.key

Их можно скачать как вручную с сайта ZCash, так и используя скрипт fetch-params.bat из архива komodo-qt-win.zip , т.е. просто распаковываем архив komodo-qt-win.zip, запускаем  fetch-params.bat и ждем пока 1.68 Gb файлов скачаются в нужную папку. Скрипт выполняет все действия автоматически. Более простой вариант с использованием komodo-qt-install.exe . В этом случае инсталлятор скачает нужные файлы автоматически:

Инсталлятор Komodo-Qt (KomodoOcean)

Напомним также, что эти файлы имеют разное расположение для разных операционных систем, если для Windows путь к ним имеет вид %APPDATA%\ZcashParams , то для Linux это будет ~/.zcash-params, а для MacOS - ~/Library/Application Support/ZcashParams .

Наконец, последним шагом, который необходимо выполнить перед запуском ноды Komodo - это создать конфигурационный файл komodo.conf . Иначе при запуске вы получите ошибку:

Ошибка. Не создан файл komodo.conf

Этот файл также имеет разное местоположение для разных ОС:

  • Linux - ~/.komodo/komodo.conf
  • Windows - %APPDATA%\Komodo\komodo.conf
  • MacOS - ~/Library/Application Support/Komodo/komodo.conf

Открываем блокнот и копируем в него следующий текст:

txindex=1
onlynet=ipv4
# rpcuser=komodo
# rpcpassword=local321
rpcallowip=127.0.0.1
rpcbind=127.0.0.1
server=1

После чего сохраняем файл как %APPDATA%\Komodo\komodo.conf (прямо так и набираем в строке с именем файла):

Сохраняем файл komodo.conf в нужную папку

Запуск

После этого можно запускать Komodo-Qt (KomodoOcean):

Окно запуска (Splash Screen) Komodo-Qt (KomodoOcean)

Здесь мы запускаем именно ноду с (GUI) графическим интерфейсом Qt, т.е. файл komodo-qt.exe . Если бы мы хотели запустить консольный демон komodod.exe, то порядок подготовительных шагов был бы абсолютно такой же, единственное, что после запуска вы бы не увидели никакого графического интерфейса, а все сообщения о своем состоянии демон выводил бы прямо в консоль. Мы рассмотрим работу с консольным демоном (CLI) в следующих статьях, т.к. это может быть полезно при работе на системах, которые не имеют графического интерфейса (например, выделенный сервер или VPS с ОС Linux).

Внимательные читатели, которые дошли до этого момента вероятно хотят спросить, почему мы называем кошелек KomodoOcean (Komodo-Qt) нодой. Дело в том, что как мы и рассказывали ранее, Komodo-Qt является и нодой, и кошельком в "одном флаконе". Т.е. с одной стороны он является полноценным узлом сети Komodo, и выполняет все запланированные протоколом операции необходимые для поддержания работоспособности сети, например, валидацию транзакций, распространение и проверку новых сгенерированных блоков (к слову, нода Komodo имеет встроенный майнер и может самостоятельно генерировать новые блоки в сети, но т.к. сложность сети на текущий момент достаточно высока и для добычи Komodo используются в основном ASIC'и, то использование встроенного майнера потеряло свою актуальность) и т.п. функции. Помимо этого в Komodo-Qt встроен кошелек, который поддерживает все функции по отправке монет, выполняет работу по генерации и поддержке пула приватных ключей и другие аспекты, связанные с хранением ваших монет.

Окно информации ноды Komodo

Сразу после запуска ноды Komodo начнется процесс синхронизации с сетью:

Начальная синхронизация с сетью Komodo

Т.е. ваша нода Komodo соединится с другими узлами в сети по протоколу p2p Komodo и начнет синхронизировать блокчейн, т.е. создавать вашу собственную локальную копию блокчейна KMD. На данный момент (21 августа 2021 г.) размер блокчейна KMD составляет порядка ~30 Gb, однако, в связи со спецификой протокола p2p обмена в процессе начальной синхронизации может быть скачано до ~600 Gb данных, а сам процесс может занять более суток (все зависит от скорости вашего интернет-соединения). Процесс скачивания блокчейна чем-то напоминает работу торрент-клиента, ваша нода выходит в сеть и сообщает другим участникам сети свое состояние: "всем привет, я новый узел, у меня на данный момент синхронизировано 0 блоков, дайте мне заголовки начиная с нулевого". При этом другие узлы начинают активно отвечать ему. Т.к. размер заголовка блока в Komodo значительно больше чем в Bitcoin, плюс на запрос заголовков может ответить сразу несколько других узлов - отсюда и получается такая разница в цифрах, т.е. что при размере блокчейна в 30 Gb, фактически может быть скачано гораздо больше информации. Сначала нода скачает все заголовки блоков от нулевого до последнего, а затем перейдет к скачиванию самих блоков. Как только этот процесс завершится, вы сможете полноценно пользоваться кошельком.

Как ускорить процесс первоначальной синхронизации?

Существует способ значительно ускорить процесс первоначальной синхронизации и миновать процесс p2p общения с узлами. Для этого можно скачать заранее подготовленный образ блокчейна (bootstrap) со специального сайта. Для этого перейдем на сайт dexstats.info и в разделе Bootstraps for chains скачаем bootstrap для KMD:

Bootstrap для KMD на dexstats.info

После чего полученный архив с помощью 7-Zip или WinRar одной из новых версий (если вы не уверены что у вас установлен свежий архиватор, скачайте последнюю с официального сайта) распаковываем в папку %APPDATA%\Komodo, т.е. в ту же самую папку где мы создавали файл komodo.conf , после чего перезапускаем Komodo-Qt. Обратите внимание, что папка %APPDATA%\Komodo в этом случае должна содержать файл komodo.conf, который вы создали ранее и две папки blocks и chainstate из архива:

Содержимое архива с bootstrap'ом

После запуска нода "подцепит" распакованный вами заранее подготовленный блокчейн и ей останется лишь синхронизировать последние несколько дней / часов, т.к. архив с bootstrap'ом обновляется практически ежедневно. Описанный способ является самым быстрым вариантом получить рабочую ноду / native кошелек Komodo в кратчайшие сроки.