Работа с нодами

Cколько нод используем, для чего нужны запасные, как устроен мониторинг.

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

  • Bitcoin - используется официальная нода bitcoin-core, удовлетворяющая всем запросам для ввода/вывода/генерации адресов - https://github.com/bitcoin/bitcoin

  • Ethereum - на данной ноде у нас также подключены Midex токен и NANJ. Раньше использовали официальный клиент, написанный на языке go - go-ethereum. Однако ПО достаточно нестабильное, может месяц работать и сломаться. В итоге используется проверенная временем нода от parity - https://github.com/paritytech/parity-ethereum

  • Neo - для валюты neo (токены не используются в системе) используется официальный клиент без веб-интерфейса - https://github.com/neo-project/neo-cli

  • Destream - для валюты dst используется официальный клиент, который работает стабильно, несмотря на некоторые перебои у майнинг-нод - https://git.poka.website/destream-public/destream-blockchain

  • ADA (Cardano) - клиент для работы с ADA, используется официальный клиент - https://github.com/input-output-hk/cardano-sl Одно время были большие утечки память, последние полгода работает без перебоев (на основе мониторинга)

  • USDT - для работы с данной валюты используется OmniCore, ответвленный от bitcoin core версии 13. Работает адекватно только без интерфейса и на Ubuntu, сам клиент - https://github.com/OmniLayer/omnicore

Криптовалютные ноды

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

Две ноды может понадобиться для таких валют как Bitcoin, Litecoin, Dash, Bitcoin Cash, Cardano, Tether, DeStream. Это нужно потому, что нода является сама по себе кошельком и не смешивает входящие платежи с исходящими. Есть четкое разделение входящего и исходящего кошелька, что позволяет нам при взломе системе не потерять входящие платежи и свести потери к минимуму.

Однако есть ноды типа Ethereum, Neo, Tron, в которых сам клиент не содержит кошелька с приватными ключами, поэтому для запуска валют на этих нода достаточно одной ноды. Но нужно иметь ввиду, что у криптовалют программное обеспечение достаточно нестабильное, поэтому лучше всегда резервировать ноды и иметь в запасе хотя бы по одной запасной ноде. Запасные ноды не держать в том же месте, а иметь отдельный сервер, где они будут развернуты.

Мониторинг нод

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

Для нод семейства Bitcoin, куда входит Litecoin, Dash, Bitcoin cash есть метрики, которые проверяют насколько сильно нода отстает, также строятся различные графики загрузки блоков. Мониторинг также считает, было ли изменение блоков за последние полчаса. Ниже представлен пример графика скачивания блоков Bitcoin.

Такой же график можно увидеть и для ethereum:

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

Естественно никто не держит открытым вкладку с панелью Zabbix, это неудобно и можно что-то пропустить. Все важные уведомления отправляются в telegram канал разработчиков и также дублируется на электронную почту.