CyberWay. Событийная модель. Часть 1
Уважаемые пользователи!
В этой и последующих публикациях мы знакомим вас с Событийной моделью блокчейна CyberWay, представляющей собой отдельную сервисную подсистему, обеспечивающую взаимодействие пользователей с блокчейном в части сбора информации о всех событиях, происходящих внутри блокчейна.
Чтобы лучше понять возможности (новизну) Событийной модели, в первой публикации мы описываем решения данной задачи в блокчейне Голос, а также приводим причины, побудившие к разработке и создание качественно нового решения в блокчейне CyberWay.
Полное описание Событийной модели вы можете найти на github.com.
Существующее решение в блокчейне Голос
Пользователь может создать и отправить транзакцию в блокчейн как самостоятельно, так и воспользовавшись сервисом веб-сайта. Операции, содержащиеся в транзакциях (например, переводы средств, начисление вознаграждений и пр.), обрабатываются в методах плагинов блокчейна и частично в его ядре. Блокчейн формирует цепочку блоков, в которые упаковывает поступающие на его вход транзакции. Каждый сформированный блок добавляется в цепочку, образуя блок-лог. Во время обработки операций могут создаваться также виртуальные операции (например, операция закрытия поста), которые не добавляются в транзакции и поэтому в блоках не появляются. Вся информация о состоянии системы сохраняется в БД блокчейна.
Для того, чтобы пользователь получал актуальную информацию о голосованиях за пост, выплатах вознаграждений, трансферных операциях, для блокчейна Голос создана сервисная библиотека Призма. С помощью данной библиотеки реализован интерфейс между блокчейном и веб-сайтом приложения GolosIO. Пользователь, обращаясь к веб-сайту, получает необходимую информацию о событиях, происходящих в блокчейне (рис. 1).
Условные обозначения, используемые на структурной схеме
- Trx — транзакция;
- ПУ — панель управления веб-сайта GolosIO, предоставляет интерфейс пользователю для формирования транзакций, содержит необходимые для этого клавиши и настройки;
- БД — хранилище событий (база данных библиотеки Призма);
- Блокчейн Golos:
- Плагины — программные компоненты, используемые для обработки операций в транзакциях;
- БД — внутреннее хранилище блокчейна;
- Блок-лог — цепочка блоков с упакованными в них транзакциями;
- Призма — сервисная библиотека, анализатор состояния блок-лога.
На схеме синим цветом выделено решение обработки событий, происходящих в блокчейне.
Библиотека Призма постоянно обращается в БД блокчейна для получения актуальных данных о результатах выполняемых операций. Призма также анализирует состояние блоков и информирует GolosIO о событиях, происходящих в цепочке блоков. Внутри GolosIO находится приложение, которое сохраняет в своей БД всю поступающую от Призмы информацию. Призма имеет настройки и может быть сконфигурирована для передачи на веб-сайт только интересующая пользователей информации (например, получать информацию только о трансферных операциях, только о вознаграждениях кураторов).
Недостатки решения обработки событий в блокчейне Голос
В процессе выполнения операций, указанных в транзакции, в блокчейне создаются дополнительные операции. Информация о результатах выполнения таких, неявно заданных операций, остается внутри блокчейна, не выходя за его рамки. В этом случае блокчейн является как бы замкнутым пространством, и информация о всех событиях, происходящих внутри него в результате выполнения дополнительно создаются операций, не поступает внешним потребителям.
Сложность в реализации операции по закрытию поста
Эта операция создается в блокчейне как виртуальная и в поэтому в транзакциях появиться не может. Следовательно, Призма не может получать информацию о времени закрытия поста.
Соответственно, в блокчейне Голос решение задачи по определению времени закрытия поста основывается на воспроизведении цепочки блоков. По информации, полученной из транзакции открытия поста, восстанавливается ход событий, по которому и определяется время закрытия поста. Эта процедура требует значительных затрат ресурсов памяти и времени процессора.
Длительная процедура в определении времени закрытия поста усложняет логику расчета выплаты вознаграждений за пост. Основной расчет выплаты вознаграждений выполняется в плагинах блокчейна сразу после закрытия поста. Поскольку Призма не получает информацию о закрытии поста, она вынуждена постоянно обращаться за информацией в БД блокчейна, чтобы определить состояние поста. При этом, если у Призмы недостаточно данных, она вынуждена выполнять свой расчет выплаты вознаграждений, то есть дублировать его. Более того, логика Призмы реализована не на языке плагинов (С++), а на языке JavaScript. Результаты расчета Призмы попадают на веб-сайт GolosIO и они могут отличаться от результатов, полученных в плагинах, которые являются аутентичными (подлинными).
Выполнение операций по переводу средств между балансами пользователей
Эта операция требует постоянных обращений Призмы в БД блокчейна для получения актуальных данных о состоянии балансов пользователей.
Основной причиной появления существующих недостатков в решении обработки событий, происходящих в блокчейне Голос, является отсутствие возможности передавать в Призму информацию о событиях в полном объеме. Такие события, как результаты выполнения неявно заданных или выполненных неявным образом операций, не могут быть переданы библиотеке Призма.
В блокчейне CyberWay реализована иная событийная модель, с которой мы познакомим вас в следующей статье. На сегодня все. Ждем ваших вопросов и комментариев.
Cерия статей, раскрывающих идею и принципы функционирования блокчейна CyberWay и приложения Голос:
- Ответы на вопросы о CyberWay часть 4
- Ответы на вопросы о CyberWay. Часть 3
- Ответы на вопросы о CyberWay. Часть 2
- Ответы на вопросы о CyberWay. Часть 1
- Golos.io: Адаптация к блокчейну CyberWay
- Основные положения CyberWay
- CyberWay: предпосылки создания платформы. Основные отличия от EOS
- Разработка новой блокчейн-платформы CyberWay. Дорожная карта проекта
- Функционирование смарт-контрактов приложения Голос на платформе БЧ CyberWay
- Техническая реализация bandwidth на платформе CyberWay
- Testnet: Экспериментальная версия
- Кошелек golos_wallet для Bittrex на платформе CyberWay
- Общее о структуре таблиц в MongoDB
- Коллекции таблиц (документов) в MongoDB, используемых в системных контрактах
- Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекция контракта golos.charge
- Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекция контракта golos.publication
- Коллекции таблиц (документов) в MongoDB, используемых в контрактах приложения Голос - коллекции контракта golos.vesting
- CyberWay. Доменные имена и имена пользователей
Каналы коммуникации с Golos•Core
- https://t.me/goloscoretc (решение технических вопросов, связанных с работой блокчейн, нод, api и др.)
- https://t.me/joinchat/BLwf_A118xQ57nsM1Q4MPA (канал для вноса предложений от комьюнити, обсуждение перехода на кодовую базу EOS)
- https://t.me/golos_tools (решение вопросов по различным интерфейсам и дополнительным инструментам, создаваемым Golos•Core)
- https://t.me/goloscore_analytics (решение вопросов по работе экономики блокчейн, статистическим экономическим данным, аналитике данных)
- https://t.me/goloscoretech (новостной канал, с актуальной информацией от Golos•Core)
Мы будем очень рады, если вы поддержите делегата @goloscore. Заходите на страничку https://golos.io/~witnesses голосуйте за делегата Golos•Core!
Спасибо за внимание и хорошего дня!
С уважением,
команда Golos•Core: @andreypf, @korpusenko, @maslenitsa, @muhazokotuha, @zxcat, @annaeq, @anazarov79, @kaynarov, @s-medvedev, @eugin, @dedbaraded, @jimak.