Архитектура
graph TD
%% Главные подсистемы
subgraph "MONO"
subgraph "Клиентский уровень"
F["SDK"]
G["Рабочий стол"]
H["Расширения"]
end
subgraph "GraphQL-API"
E["Контроллер"]
end
subgraph "Реестры и Хранилище"
C["Фабрика документов"]
B["Парсер"]
D["База данных"]
end
end
subgraph "Блокчейн"
A1["Смарт-контракты"] --> A2["Нода блокчейна"]
end
%% Взаимодействие между блоками
A2 -->|Читает транзакции| B
B -->|Сохраняет события| D
C -->|Извлекает данные| D
C -->|Сохраняет документы| D
E -->|Вызывает генерацию документов| C
D -->|Предоставляет доступ| E
E -->|Обрабатывает API-запросы| F
E -->|Обрабатывает API-запросы| G
E -->|Расширяется с| H
E -->|Отправляет транзакции| A2
MONO
состоит из следующих архитектурных компонент:
-
Парсер. Считывает данные о произведенных действиях из транзакций блокчейна и сохраняет их для дальнейшего извлечения.
-
Фабрика. Генерирует документы на основе шаблонов и произведенных действий, извлеченных из блокчейна. Сохраняет документы и предоставляет доступ к ним.
-
Контроллер. Обеспечивает контроль доступа к фабрике, действиям блокчейна, мутациям, запросам и подпискам через GraphQL-API.
-
SDK. Предоставляет набор инструментов для подключения к контроллеру, блокчейну, кошельку, и т.д.
-
Рабочий стол. Предоставляет пользовательские интерфейсы рабочих столов для пайщиков и администрации кооператива.
-
Блокчейн. Нода блокчейна подключается к общей сети нод и непрерывно синхронизирует информацию в распределенной базе данных.
-
Документация. Техническая документация к
MONO
,SDK
иGraphQL-API
-
Расширения. Программы, расширяющие функционал контроллера и рабочих столов.
-
База данных. Используется парсером, фабрикой и контроллером для хранения и извлечения информации.
-
Смарт-контракты. Хранят и исполняют целевые потребительские программы в блокчейне.
Стек¶
Блокчейн: ANTELOPE, C/C++
Смарт-контракты: C/C++
Рабочие столы: QUASAR, VueJS, Typescript
Контроллер MONO: NestJS, Typescript
SDK: Typescript
Парсер: Express, Typescript
Фабрика документов: Typescript
База данных: Mongo (legacy) & Postgres