Архитектура

Платформа Waves Enterprise построена на базе технологии распределенного реестра и представляет собой фрактальную сеть, состоящую из:

  • мастер-блокчейна (Waves Enterprise Mainnet), который обеспечивает работу сети в целом, выступая в качестве глобального арбитра и опорной цепи, и ряда пользовательских;

  • отдельных сайдчейнов, легко настраиваемых в соответствии с конкретной бизнес-задачей.

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

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

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

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

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

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

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

  • Корпоративный клиент - веб-приложение, предоставляющее современный и многофункциональный интерфейс для взаимодействия с блокчейном.

  • Среда разработки смарт-контрактов - среда для развёртывания и выполнения Тьюринг-полных 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 является ПО с открытым исходным кодом и устанавливается клиентом отдельно.