Архитектура¶
Платформа Waves Enterprise построена на базе технологии распределенного реестра и представляет собой фрактальную сеть, состоящую из:
мастер-блокчейна (Waves Enterprise Mainnet), который обеспечивает работу сети в целом, выступая в качестве глобального арбитра и опорной цепи, и ряда пользовательских;
отдельных сайдчейнов, легко настраиваемых в соответствии с конкретной бизнес-задачей.
Применение такого принципа построения позволяет добиться оптимизации для более высоких скоростей или больших объемов вычислений, согласованности и доступности данных, а также устойчивости к злонамеренному изменению информации.
Также в Waves Enterprise реализован механизм анкоринга сетей, позволяющий создать конфигурацию сети, использующую сильные стороны обоих алгоритмов консенсуса. Например, основной блокчейн Waves Enterprise базируется на алгоритме консенсуса Proof-of-Stake, так как поддерживается независимыми участниками. В то же время корпоративные сайдчейны, в которых нет необходимости стимуляции майнеров за счёт комиссий за транзакции, могут использовать алгоритм Proof-of-Authority. Сайдчейны встраиваются в основной блокчейн с помощью механизма анкоринга (помещая криптографические доказательства транзакций в основную блокчейн-сеть).
Архитектура ноды и дополнительных сервисов¶
ПО ноды может быть установлено без дополнительных сервисов, поскольку оно обеспечивает функционирование и взаимодействие внутри блокчейн-сети. Другие компоненты облегчают и значительно упрощают взаимодействие пользователя с блокчейн-платформой. Платформа Waves Enterprise состоит из пяти основных модулей и нескольких дополнительных микросервисов. В состав основных модулей входят:
Нода - основное приложение, устанавливаемое на компьютер и настраиваемое для работы в блокчейне по любому сценарию.
Корпоративный клиент - веб-приложение, предоставляющее современный и многофункциональный интерфейс для взаимодействия с блокчейном.
Среда разработки смарт-контрактов - среда для развёртывания и выполнения Тьюринг-полных Docker смарт-контрактов. Разворачивание Docker-контейнеров со смарт-контрактами происходит на удалённой виртуальной машине для обеспечения дополнительной безопасности.
Дата-сервис - сервис агрегирует данные из блокчейна в хранилище RDBMS (PostrgreSQL) и обеспечивает полнотекстовый поиск по любой информации, содержащейся в блокчейне, через веб-сервис RESTfull.
Приватное хранилище - компонент обеспечивают обработку и хранение приватных данных, а также коммуникации через зашифрованное соединение peer-to-peer. Приватное хранилище реализуется на базе БД PostgreSQL или S3 на Minio.
Дополнительные микросервисы включают в себя:
Сервис авторизации - сервис обеспечения авторизации для всех компонентов.
Дата-краулер - сервис извлечения данных с ноды и загрузки извлечённых данных в Дата-сервис.
Генератор - сервис генерации ключевых пар для новых аккаунтов и создания
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 является ПО с открытым исходным кодом и устанавливается клиентом отдельно.