Архитектура

Платформа Vostok построена на базе технологии распределенного реестра и представляет собой фрактальную сеть, состоящую из мастер-блокчейна (Vostok Mainnet), который обеспечивает работу сети в целом, выступая в качестве глобального арбитра и опорной цепи, и ряда пользовательских, отдельных сайдченов, легко настраиваемых в соответствии с конкретной бизнес-задачей. Применение такого принципа построения позволяет добиться оптимизации для более высоких скоростей или больших объемов вычислений, согласованности и доступности данных, а также устойчивости к злонамеренному изменению информации.

Также в Vostok реализован механизм анкоринга сетей, позволяющий создать конфигурацию сети, использующую сильные стороны обоих алгоритмов консенсуса. Например, основной блокчейн Vostok базируется на алгоритме консенсуса Proof-of-Stake, так как поддерживается независимыми участниками. В тоже время корпоративные сайдчейны, в которых нет необходимости стимуляции майнеров за счёт комиссий за транзакции, могут использовать алгоритм Proof-of-Authority. Сайдчейны встраиваются в основной блокчейн с помощью механизма анкоринга (помещая криптографические доказательства транзакций в основную блокчейн-сеть).

Топология сети, включающая Vostok Mainnet и сайдчейны

Топология сети, включающая Vostok Mainnet и сайдчейны

Архитектура ноды и дополнительных сервисов

ПО ноды может быть установлено без дополнительных сервисов, поскольку оно обеспечивает функционирование и взаимодействие внутри блокчейн-сети. Другие компоненты облегчают и значительно упрощают взаимодействие пользователя с блокчейн-платформой. Платформа Vostok состоит из пяти основных модулей и нескольких дополнительных микросервисов. В состав основных модулей входят:

  • Нода - основное приложение, устанавливаемое на компьютер и настраиваемое для работы в блокчейне по любому сценарию.
  • Корпоративный клиент - веб-приложение, предоставляющее современный и многофункциональный интерфейс для взаимодействия с блокчейном.
  • Среда разработки смарт-контрактов - среда для развёртывания и выполнения Тьюринг-полных Docker смарт-контрактов. Разворачивание Docker-контейнеров со смарт-контрактами происходит на удалённой виртуальной машине для обеспечения дополнительной безопасности.
  • Дата-сервис - сервис агрегирует данные из блокчейна в хранилище RDBMS (PostrgreSQL) и обеспечивает полнотекстовый поиск по любой информации, содержащейся в блокчейне, через веб-сервис RESTfull.
  • Приватное хранилище - БД PostgreSQL обеспечивает обработку и хранение приватных данных, а также коммуникации через зашифрованное соединение peer-to-peer.

Дополнительные микросервисы включают в себя:

  • Сервис авторизации - сервис обеспечения авторизации для всех компонентов.
  • Дата-краулер - сервис извлечения данных с ноды и загрузки извлечённых данных в Дата-сервис.
  • Генератор - сервис генерации ключевых пар для новых аккаунтов и создания api-key-hash.
  • Плагины кастомизации данных - набор плагинов для обработки и кастомизации данных, передаваемых и принимаемых от внешних систем.
  • Сервис мониторинга - внешний сервис мониторинга, использующий базу данных (InfluxDB) для хранения временных рядов с данными и метриками приложения. БД InfluxDB является ПО с открытым исходным кодом и устанавливается клиентом отдельно.
Подробная схема архитектуры ноды и дополнительных микросервисов

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

Компоненты ноды

Нода имеет следующие внутренние компоненты:

  • Node API – интерфейс REST API ноды, позволяющий получать данные из блокчейна, подписывать и отправлять транзакции, отправлять конфиденциальные данные, создавать и выполнять смарт-контракты и др.
  • Node storage – компонент системы на базе LevelDB, обеспечивающий хранение пар ключ-значение для полного набора проверенных и подтверждённых транзакций и блоков, а также текущего состояния блокчейна.
  • Unconfirmed transaction pool – компонент, обеспечивающий хранение неподтвержденных транзакций до момента их проверки и отправки в блокчейн.
  • Consensus and cryptolibraries – компоненты, отвечающие за механизм достижения согласия между узлами, а также за криптографические алгоритмы.
  • Key store - хранилище ключевых пар ноды и пользователей, все ключи защищены паролем.
  • Miner – компонент, отвечающий за формирование блоков транзакций для записи в блокчейн, а также за взаимодействие с Docker смарт-контрактами.
  • Network layer – слой логики, обеспечивающий взаимодействие нод на прикладном уровне по сетевому протоколу поверх TCP.
  • Validation logic – слой логики, содержащий такие правила проверки транзакций, как базовая проверка подписи и расширенная проверка по сценарию.
  • Config – конфигурационные параметры ноды, задаваемые в файле node-name.conf.
  • Monitoring Service – внешний сервис мониторинга, использующий базу данных (InfluxDB) для хранения временных рядов с данными и метриками приложения. БД InfluxDB является ПО с открытым исходным кодом и устанавливается клиентом отдельно.