Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
goloscore
5 лет назад

CyberWay. Событийная модель. Часть 1

Уважаемые пользователи!

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

Чтобы лучше понять возможности (новизну) Событийной модели, в первой публикации мы описываем решения данной задачи в блокчейне Голос, а также приводим причины, побудившие к разработке и создание качественно нового решения в блокчейне CyberWay.

Полное описание Событийной модели вы можете найти на github.com.

Существующее решение в блокчейне Голос

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

Для того, чтобы пользователь получал актуальную информацию о голосованиях за пост, выплатах вознаграждений, трансферных операциях, для блокчейна Голос создана сервисная библиотека Призма. С помощью данной библиотеки реализован интерфейс между блокчейном и веб-сайтом приложения GolosIO. Пользователь, обращаясь к веб-сайту, получает необходимую информацию о событиях, происходящих в блокчейне (рис. 1).


Рис. 1 — Структурная схема обработки транзакций в блокчейне Голос


Условные обозначения, используемые на структурной схеме

  • Trx — транзакция;
  • ПУ — панель управления веб-сайта GolosIO, предоставляет интерфейс пользователю для формирования транзакций, содержит необходимые для этого клавиши и настройки;
  • БД — хранилище событий (база данных библиотеки Призма);
  • Блокчейн Golos:
    • Плагины — программные компоненты, используемые для обработки операций в транзакциях;
    • БД — внутреннее хранилище блокчейна;
  • Блок-лог — цепочка блоков с упакованными в них транзакциями;
  • Призма — сервисная библиотека, анализатор состояния блок-лога.

На схеме синим цветом выделено решение обработки событий, происходящих в блокчейне.

Библиотека Призма постоянно обращается в БД блокчейна для получения актуальных данных о результатах выполняемых операций. Призма также анализирует состояние блоков и информирует GolosIO о событиях, происходящих в цепочке блоков. Внутри GolosIO находится приложение, которое сохраняет в своей БД всю поступающую от Призмы информацию. Призма имеет настройки и может быть сконфигурирована для передачи на веб-сайт только интересующая пользователей информации (например, получать информацию только о трансферных операциях, только о вознаграждениях кураторов).

Недостатки решения обработки событий в блокчейне Голос

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

Сложность в реализации операции по закрытию поста

Эта операция создается в блокчейне как виртуальная и в поэтому в транзакциях появиться не может. Следовательно, Призма не может получать информацию о времени закрытия поста.

Соответственно, в блокчейне Голос решение задачи по определению времени закрытия поста основывается на воспроизведении цепочки блоков. По информации, полученной из транзакции открытия поста, восстанавливается ход событий, по которому и определяется время закрытия поста. Эта процедура требует значительных затрат ресурсов памяти и времени процессора.

Длительная процедура в определении времени закрытия поста усложняет логику расчета выплаты вознаграждений за пост. Основной расчет выплаты вознаграждений выполняется в плагинах блокчейна сразу после закрытия поста. Поскольку Призма не получает информацию о закрытии поста, она вынуждена постоянно обращаться за информацией в БД блокчейна, чтобы определить состояние поста. При этом, если у Призмы недостаточно данных, она вынуждена выполнять свой расчет выплаты вознаграждений, то есть дублировать его. Более того, логика Призмы реализована не на языке плагинов (С++), а на языке JavaScript. Результаты расчета Призмы попадают на веб-сайт GolosIO и они могут отличаться от результатов, полученных в плагинах, которые являются аутентичными (подлинными).

Выполнение операций по переводу средств между балансами пользователей

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

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

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

Cерия статей, раскрывающих идею и принципы функционирования блокчейна 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.

40
103.877 GOLOS
На Golos с August 2017
Комментарии (10)
Сортировать по:
Сначала старые