Общая архитектура блокчейна Minter

Материал из Minter Wiki

Общая архитектура сети Minter

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

Такая же задача стояла и перед разработчиками блокчейна Minter. Однако, если все эти задачи возложить на ноды, то это сильно повлияет на работоспособность и быстродействие сети. Поэтому было принято решение разработать отдельный сервис - Minter Explorer, но в процессе разработки проекта требования усложнились и проводник перерос в программный комплекс-шлюз для взаимодействия блокчейн-сети с другими приложениями.

Ekosistema minter, блок - схема взаимодействия составляющих.jpg

Общая архитектура блокчейна Минтер представлена на схеме и имеет следующие компоненты:

  • DB - база данных(БД). Основное хранилище информации в блокчейне.
  • Client - пользователь или программное обеспечение, взаимодействующее с блокчейном Minter.
  • Minter Node - полные узлы сети - ноды, обладающие правом производить валидацию и формирование блоков, за что их владельцы получают вознаграждения. Любой желающий может создать и запустить полный узел и объявить себя кандидатом в валидаторы.
  • Extender - вспомогательный сервис, отвечающий за наполнение базы данных и уменьшающий нагрузку на ноду. Получает данные от ноды и сохраняет их в БД, параллельно отправляя эти данные сокет-серверу, который в свою очередь оповещает всех заинтересованных клиентов.
  • Gate - работает напрямую с нодой, получая от нее данные, которые необходимы клиенту для создания новой или отправки уже сформированной транзакции.

Explorer API - сервис имеет API, позволяющий:

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

Centrifuge - оповещение клиентов в реальном времени. Для сокращения запросов к БД от Explorer API было добавлено оповещение клиентов с помощью WebSocket — появление новых блоков и транзакций транслируется в момент их сохранения.

В итоге была получена архитектура из минимально связанных сервисов, отвечающих за узкие направления, выполняющая все поставленные перед ней задачи и способная подключиться к сети в любой момент и синхронизироваться с ней в довольно короткие сроки.

Сервисы для взаимодействия пользователя с блокчейном Minter

Блокчейн создан максимально понятным для пользователей. Поэтому, еще до запуска, были разработаны все необходимые пользователям сервисы и кошельки.

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

Кошельки

Кошельки созданы для Web, Telegram, iOS, Android, а также для сервисов Explorer, Status и Gate. Все кошельки приведены к одному стандарту. Кошельки общаются с блокчейном через сервисы Gate и Explorer, чтобы можно было быстро масштабировать систему при нагрузке.

Кошельки используют BIP32/BIP44 для генерации приватных ключей и кошельков пользователей. Приватный ключ во всех кошельках генерируется из seed фразы из 12 слов.

Minter Console

Консоль - основной веб-сервис, имеющий расширенный функционал, с помощью которого пользователи могут взаимодействовать с блокчейном Minter. Имеет удобный и дружественный интерфейс.
Console работает в двух режимах:
- Авторизация по логину-паролю и хранение приватного ключа на сервере
- Авторизация по сид-фразе, в этом режиме приватные данные никогда не покидают локальной машины пользователя и не сохраняются на серверах

В Консоли доступны все основные функции, отправка всех видов транзакций:

  • пересылка, конвертация и создание монет
  • регистрация и редактирование мастерноды
  • делегирование и анбондинг монет
  • создание и обналичивание чеков
  • просмотр своего баланса, последних транзакций и вознаграждений от делегирования

Существует также десктоп-версия Консоли, которую можно скачать из репозитория на Github

Explorer

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

API блокчейна Minter

API Minter был сделан максимально простым, чтобы не перегружать ноды лишней работой. Поэтому в API лишь базовые методы: просмотр блоков, транзакций, и балансов пользователей.

Отсутствуют сортировка и поиск. Агрегация и анализ данных - это задача сторонних сервисов.

Пользователи

Каждый пользователь может исполнять любую из трех ролей, доступных в сети Minter:

  • Валидатор - подтверждает (подписывает) транзакции и получает награды за блоки
  • Коинер - создаёт кастомные монеты и использует сеть в качестве бэкенда для достижения своих бизнес-целей
  • Делегатор - пользуется простотой и высокой скоростью подтверждения транзакций, а также абсолютной ликвидностью монет.

Делегаторы доверяют Валидаторам свои средства посредством процесса, именуемого bonding («привязка»)

Источники

1. "История разработки блокчейна Minter." Даниил Лашин
2. "Локальная консоль." Minter Team
3. "Разработка Explorer для блокчейн-сети Minter." Minter Team
4. "Что такое мастернода Minter?" Minter