Построение нового протокола на блокчейне VIZ

12.02.2020 12:05:24

Поговорим о проблеме связанности данных.

В распределенном реестре построенном на согласовании блоков всё просто. Блок за блоком строится согласованность общего состояния системы. Действие вида: Пользователь 1 перевел токены пользователю 2 — записывается в транзакцию, делегат складывает транзакции от разных пользователей в блок, ссылаясь на предыдущий и отправляет его в сеть. Другие делегаты подтверждают, что всё правильно — своим участием.

Блоки нужны чтобы согласовать состояние системы: балансы пользователей, статус их социального капитала, голоса в комитете за разные инициативы, состояние платных подписок и соглашений. А что делать с социальной связанностью?

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

Кто будет хранить «лайк» одного пользователя и комментарий под фото другого пользователя? Кто будет держать в уме, что пользователь выложил статью, чтобы её могли найти в блокчейне?

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

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

Термин сущности, которая будет проверять соответствие операций протоколу уже существует. Этот термин — Оракул. Любой независимый участник может создать любой протокол, любую структуру данных и следить за ней в блокчейне.

Как пример — медиа-платформа (media). Да, в VIZ уже действует один дополнительный протокол, который основан на правилах заложенных в Steem. В нем присутствует 2 действия: content и delete_content для создания контента и его удаления, соответственно.

Есть дополнительное расширение для протокола media: follow. В нем есть 2 действия, первое — одноименный follow для подписки на блог, игнорирования или удаление из списка для следования. Второе действие — reblog, для репоста контента.

Мне не нравится эта структура данных, она кажется... сломанной и не продуманной. Но она досталась нам в наследство от блокчейн медиа-платформы Steem и просто осталась.

Эти 2 протокола дополняющих друг друга реализованы через операцию custom, которая позволяет записывать в блокчейн любые json данные. И control.viz.world/media как раз демо-приложение и оракул для этого протокола.

Приложение, так как предоставляет интерфейс для выполнения custom операции к блокчейну VIZ по протоколу media в виде действия content для создания постов или комментариев. И оракул, так как следит за появлением подобных действий в блокчейне VIZ, обрабатывая и связывая данные в нем по правилам протокола. Например, если оракул видит действие от пользователя reblog по протоколу follow, то проверяет наличие поста от указанного автора и добавляет её в ленту активности инициатора транзакции.

Оракул может следить и учитывать все действия пользователей, а может лишь за частью. Например в демо-приложении оракул проверяет наличие платной подписки инициатора на аккаунт viz.world.

Любой желающий может сам написать оракула, который будет обрабатывать VIZ блок за блоком и обрабатывать тот или иной протокол.

Протокол может быть как открытый (про который все знают), так и закрытый (правила и механики учета не ясны).

Что будет, если один из оракулов дополнит протокол новыми возможностями? Ничего существенного, просто другие оракулы не будут учитывать эти данные.

Что будет, если кто-то будет отправлять транзакции не соблюдая правила протокола? Ничего существенного, просто оракулы проигнорируют такие операции.

Как видите — использование протокола может добавить гибкости блокчейну. Можно придумать протокол магазина цифровых товаров, оценки музыки, реестр права собственности, механизм игрового процесса, списка точек для гео-позиционирования сети отелей. Можно заложить в протокол любые структуры и данные, которые позволяет хранить формат JSON. И, конечно же, протокол может содержать действия, подтвержденные криптографически инициатором транзакции, которые могут учитывать сторонние оракулы и следить за собственным состоянием отдельной системы по своим правилам.

В продолжении (ссылка на статью про протокол Голос Voice на VIZ) мы обсудим возможность создания протокола для децентрализованной социальной сети, где оракулами могут выступать сами пользователи, без необходимости доверять посреднику в виде отдельного сайта.


2
10 Awards
19.333982 Ƶ
Show comment form
Comments

12.02.2020 13:02:12

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

12.02.2020 15:43:36

В теории да, на практике 3 сервиса на том же Голосе не могли договориться как использовать гео метки. Так как протокол кастомный, то не обладает строгостью. Номер версии софт может не вводить, если будет дополнять протокол, а не вносить критичные изменения несовместимые с прошлой версией.