Написал спецификацию для протокола Voice на блокчейне VIZ.
— Русская версия: https://github.com/Hackathon-on-Internet-freedom/Free-Speech-Project/blob/master/specification-ru.md
— Английская версия: https://github.com/Hackathon-on-Internet-freedom/Free-Speech-Project/blob/master/specification.md
Спецификация протокола
- Тип протокола: Custom (Гибкий)
- Название протокола: Voice (Голос)
- Наименование протокола: V
- Тип доступа: Обычный
- Описание протокола: Открытый протокол для обратно-связанных JSON объектов в блокчейне VIZ, созданный для активности аккаунтов с настраиваемыми типами данных.
Аккаунт создаёт операцию гибкого протокола (custom) и записывает JSON объект с обратной связанность на предыдущий объект в истории. Если блокчейн двигается поступательно вперёд, то протокол Голос может быть прочитан в обратном порядке. Это возможно если блокчейн нода хранит номер блока который содержит последнюю запись гибкого протокола (доступно в плагине
custom_protocol_api
).
Пример: Аккаунт А записал гибкую операцию в блоки: 100, 150, 200. Блокчейн хранит, что у аккаунта А последняя гибкая операция в блоке под номером 200. Мы можем достать операции из этого блока и найти там активность аккаунта А. Операция содержит JSON объект с атрибутом, который ссылается на предыдущий блок с аналогичной активностью: 150. Мы можем шаг за шагом спускаться и парсить обратно-связанные JSON объекты для получения всей активности аккаунта А. Вот и все! Лента активности в «прошлое» доступная в поступательной блокчейн архитектуре.
URL Схема
Используется новая схема url с форматом:
viz://@account/block-number/*protocol-shortname/
Такой формат предоставляет простой доступ к конкретной информации от аккаунта в нужном блоке. Наименование протокола опционально.
Структура объектов
Гибкий протокол позволяет оперировать любыми данными в формате JSON. Слабая типизация по своей структуре обозначает зависимость от версии протокола для внедрения новых возможностей. Если новая возможность ломает обратную совместимость, то версия должна быть увеличена. Если атрибут используется по умолчанию, то нет необходимости его нахождения в объекте. Короткие имена атрибутов требуются для минимизации размера транзакций.
Пример: Версия по умолчанию: 1. Атрибут опционален, если отмечен звёздочкой
*
.
Атрибут коротко | Атрибут полный | Описание |
---|---|---|
v* | version | Increase if back compatibility is broken. |
p | previous | Block number for previous account activity in current protocol scope. |
t | type | Contains type of object. Default value: t (text). |
d | data | Contains data of object. |
Структура данных для типа text
Описание типа: Простая короткая текстовая заметка без какой-либо разметки.
Атрибут коротко | Атрибут полный | Описание |
---|---|---|
t | text | Простая текстовая заметка. |
r* | reply | Ссылка на отвечаемый контекст в формате
viz://
url схемы. |
s* | share | Ссылка на контекст которым делятся в любой url схеме. |
b* | beneficiaries | Массив объектов содержащих аккаунт и вес
{account,weight}
для деталей награждений с бенефициарами. |
Структура данных для типа publication
Type description: Extended text with voice markdown markup.
Атрибут коротко | Атрибут полный | Описание |
---|---|---|
t | title | Заголовок публикации. |
m | markdown | Текст публикации в формате разметки voice markdown. |
d* | description | Короткое описание пубилкации для предосмотра. |
i* | image | Ссылка на изображение публикации для миниатюры в предосмотре. |
r* | reply | Ссылка на отвечаемый контекст в формате
viz://
url схемы. |
s* | share | Ссылка на контекст которым делятся в любой url схеме. |
b* | beneficiaries | Массив объектов содержащих аккаунт и вес
{account,weight}
для деталей награждений с бенефициарами. |
Наградить автора поста