Как устроена платформа
Архитектура¶
Устройство платформы¶
Платформа Waves Enterprise построена на базе технологии распределенного реестра и представляет собой фрактальную сеть, состоящую из двух элементов:
мастер-блокчейна (Waves Enterprise Mainnet), который обеспечивает работу сети в целом и выступает в качестве глобального арбитра как для опорной сети, так и для множества пользовательских;
отдельных сайдчейнов, создаваемых для решения конкретных бизнес-задач.
Взаимодействие между мастер-блокчейном и сайдчейнами обеспечивается при помощи механизма анкоринга сетей, который помещает криптографические доказательства транзакций в основную блокчейн-сеть. Механизм анкоринга позволяет свободно конфигурировать сайдчейны и использовать любой алгоритм консенсуса без потери связи с мастер-блокчейном. Например, мастер-блокчейн Waves Enterprise базируется на алгоритме консенсуса Proof-of-Stake, так как поддерживается независимыми участниками. В то же время корпоративные сайдчейны, в которых нет необходимости стимуляции майнеров за счёт комиссий за транзакции, могут использовать алгоритмы Proof-of-Authority или Crash Fault Tolerance.
Такой двухчастный принцип построения позволяет оптимизировать блокчейн-сеть для высоких вычислительных нагрузок, увеличить скорость передачи информации, а также повысить согласованность и доступность данных. Применение механизма анкоринга повышает доверие к данным в сайдчейнах, поскольку они валидируются в мастер-блокчейне.
Схематичное изображение архитектуры платформы:
Устройство ноды и дополнительных сервисов¶
Каждая нода блокчейна – это самостоятельный участник сети, имеющий ПО для работы в ней. Нода состоит из следующих компонентов:
Сервисы консенсуса и криптографические библиотеки (Consensus and cryptolibraries) – компоненты, отвечающие за механизм достижения согласия между узлами, а также за криптографические алгоритмы.
API-интерфейсы ноды (Node API) – интерфейсы gRPC и REST API ноды, позволяющие получать данные из блокчейна, подписывать и отправлять транзакции, отправлять конфиденциальные данные, создавать и выполнять смарт-контракты и др.
Пул неподтвержденных транзакций (Unconfirmed transaction pool, UTX pool) – компонент, обеспечивающий хранение неподтвержденных транзакций до момента их проверки и отправки в блокчейн.
Майнер (Miner) – компонент, отвечающий за формирование блоков транзакций для записи в блокчейн, а также за взаимодействие со смарт-контрактами.
Хранилище ключей (Key store) – хранилище ключевых пар ноды и пользователей. Все ключи защищены паролем.
Сетевой слой (Network layer) – слой логики, обеспечивающий взаимодействие нод на прикладном уровне по сетевому протоколу поверх TCP.
Хранилище ноды (Node storage) – компонент системы на базе RockDB, обеспечивающий хранение пар ключ-значение для полного набора проверенных и подтверждённых транзакций и блоков, а также текущего состояния блокчейна.
Логика валидации (Validation logic) – слой логики, содержащий такие правила проверки транзакций, как базовая проверка подписи и расширенная проверка по сценарию.
Конфигурация (Config) – конфигурационные параметры ноды, задаваемые в файле node-name.conf.
Для каждой ноды предусмотрен набор дополнительных сервисов:
Сервис авторизации – сервис обеспечения авторизации для всех компонентов.
Дата-краулер – сервис извлечения данных с ноды и загрузки извлечённых данных в дата-сервис.
Генератор – сервис генерации ключевых пар для новых аккаунтов и создания
api-key-hash
.Сервис мониторинга – внешний сервис мониторинга, использующий базу данных InfluxDB для хранения временных рядов с данными и метриками приложения.
Установка дополнительных сервисов не обязательна, однако они облегчают взаимодействие пользователя с блокчейн-сетью. Помимо готовых сервисов, в зависимости от поставленных задач, могут разрабатываться интеграционные адаптеры, предназначенные для доставки транзакций от клиентских приложений в сеть, а также обмена данными между нодой и прикладными сервисами заказчика.
Схематичное изображение устройства отдельной ноды и дополнительных сервисов: