События в протоколе Голос

22.09.2021 08:49:06

Общество сильно привыкло к изменяемым данным. В блокчейне это невозможно. Данные в блоке валидированы криптографией и неизменны. Но можно расширить протокол гибкими событиями.

В социальной сети на VIZ (Readdle.me) используется протокол Голос (Voice) и там не предусмотрено изменение данных. Если пользователь захочет скрыть запись из своей ленты активности или отредактировать текст, прикрепить файлы — он просто ничего не сможет сделать. Для решения этой проблемы, а по действующим пользовательским нормам удалить или отредактировать сообщение — вполне естественный порядок вещей, необходимо расширить оригинальный протокол дополнительным.

Voice Events (События Голоса, коротко VE) — расширение протокола Голос, призванное добавить модификаторы для уже существующей записи. Параметры для исполнения: номер блока с предыдущим событием (previous/p), номер блока, в котором есть объект (block/b) в протоколе Голос, действие (action/a) над ним (d/delete, e/edit) и непосредственно данные самого изменения (data/d).

Записи Событий Голоса тоже строятся на обратной связанности, поэтому нужно воссоздавать цепочку действий в базе данных и применять их как отдельные последовательные изменения. Конечно же, загрузка Событий Голоса должна происходить после загрузки самих объектов, после чего обрабатываться друг за другом, модифицируя оригинальные объекты.

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

P.S. Пример расширения: события могут содержать также список рекомендаций других аккаунтов для чтения.


2
4 Awards
55.0779 Ƶ
Show comment form
Comments

22.12.2021 04:57:48

Существует проблема с линейностью данных. Что если событий несколько и они к одному объекту. Как дать на него ссылку?
Если вы подписаны на аккаунт, то это итерационная петля с загрузкой новых объектов и событий. А если вам дали ссылку? На номер блока с аккаунтом на который вы не подписаны? Вы увидите оригинальный объект, без изменений. Единственный вариант - формировать ссылки с номерами блоков, где есть события. Для этого достаточно расширить стандартными GET параметрами схему описанную в https://control.viz.world/media/@on1x/ru-protocol-golos-blockchain-viz/

Добавляя для ссылки на объект массив событий с номерами блоков ?events=1,4,7,1003

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

21.01.2022 05:32:18

События реализованы и описаны в the Free Speech Project https://github.com/VIZ-Blockchain/Free-Speech-Project/blob/master/events-specification-ru.md