docs(blockchain): актуализировать MVP-формат и правила изменения протокола
This commit is contained in:
parent
c27da63a3e
commit
b85643ca33
@ -13,6 +13,8 @@
|
|||||||
- Это точка входа (оглавление), рядом расположены детальные файлы по форматам, типам каналов и командным сообщениям.
|
- Это точка входа (оглавление), рядом расположены детальные файлы по форматам, типам каналов и командным сообщениям.
|
||||||
- При любом изменении кода, связанного с блокчейном (формат блока, типы каналов, правила чтения/записи, команды), обязательно обновлять соответствующие документы в `Dev_Docs/Blockchain/`.
|
- При любом изменении кода, связанного с блокчейном (формат блока, типы каналов, правила чтения/записи, команды), обязательно обновлять соответствующие документы в `Dev_Docs/Blockchain/`.
|
||||||
- Дополнительно обязательно вести `Dev_Docs/Blockchain/CHANGELOG.md`: дописывать изменения построчно с указанием даты/времени и хэша коммита, после которого внесено изменение.
|
- Дополнительно обязательно вести `Dev_Docs/Blockchain/CHANGELOG.md`: дописывать изменения построчно с указанием даты/времени и хэша коммита, после которого внесено изменение.
|
||||||
|
- Перед любым изменением формата блокчейна обязательно заранее предупреждать пользователя, что формат будет изменён.
|
||||||
|
- Изменять формат блокчейна можно только после явного подтверждения пользователя (без подтверждения формат не менять).
|
||||||
|
|
||||||
## Версионирование
|
## Версионирование
|
||||||
- Единый файл версий проекта: `VERSION.properties` (в корне репозитория).
|
- Единый файл версий проекта: `VERSION.properties` (в корне репозитория).
|
||||||
|
|||||||
@ -16,8 +16,8 @@
|
|||||||
|
|
||||||
- `type=0` — TECH: HEADER, CREATE_CHANNEL.
|
- `type=0` — TECH: HEADER, CREATE_CHANNEL.
|
||||||
- `type=1` — TEXT: POST/EDIT_POST/REPLY/EDIT_REPLY.
|
- `type=1` — TEXT: POST/EDIT_POST/REPLY/EDIT_REPLY.
|
||||||
- `type=2` — REACTION: LIKE.
|
- `type=2` — REACTION: LIKE/UNLIKE.
|
||||||
- `type=3` — CONNECTION: FRIEND/CONTACT/FOLLOW и обратные операции.
|
- `type=3` — CONNECTION: FRIEND/CONTACT/FOLLOW/SPOUSE/PARENT/CHILD/SIBLING и обратные операции.
|
||||||
- `type=4` — USER_PARAM: key/value-параметры пользователя.
|
- `type=4` — USER_PARAM: key/value-параметры пользователя.
|
||||||
|
|
||||||
## Примечание
|
## Примечание
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# Типы каналов и CreateChannel
|
# Типы каналов и CreateChannel
|
||||||
|
|
||||||
## 1. Формат `CreateChannelBody`
|
## 1. Формат `CreateChannelBody` (`msg_type=0`, `subType=1`, `version=1`)
|
||||||
Формат `TECH_CREATE_CHANNEL` поддерживает единственный текущий `version=1` и включает:
|
Payload включает:
|
||||||
|
|
||||||
1. line-поля канала (`lineCode`, `prevLineNumber`, `prevLineHash32`, `thisLineNumber`);
|
1. line-поля канала (`lineCode`, `prevLineNumber`, `prevLineHash32`, `thisLineNumber`);
|
||||||
2. `channelName`;
|
2. `channelName`;
|
||||||
@ -17,6 +17,10 @@
|
|||||||
|
|
||||||
Версия типа (`channelTypeVersion`) сейчас используется со значением `1`.
|
Версия типа (`channelTypeVersion`) сейчас используется со значением `1`.
|
||||||
|
|
||||||
|
Важно для MVP:
|
||||||
|
- `100` и `200` в формате поддерживаются, но в текущем UI не используются.
|
||||||
|
- В MVP рабочий UI-флоу — каналы `0` и `1`.
|
||||||
|
|
||||||
## 3. Имя root-канала
|
## 3. Имя root-канала
|
||||||
- Root-канал (`line_code = 0`) в API/чтении отображается как `stories`.
|
- Root-канал (`line_code = 0`) в API/чтении отображается как `stories`.
|
||||||
- Публикации в `stories` разрешены владельцу собственного блокчейна.
|
- Публикации в `stories` разрешены владельцу собственного блокчейна.
|
||||||
|
|||||||
@ -24,7 +24,21 @@
|
|||||||
- связей и подписок;
|
- связей и подписок;
|
||||||
- пользовательских параметров.
|
- пользовательских параметров.
|
||||||
|
|
||||||
## 3. Root-идея для каналов и подписок
|
## 3. Правила line-полей (фактическая серверная валидация)
|
||||||
|
|
||||||
|
Line-поля: `lineCode`, `prevLineNumber`, `prevLineHash32`, `thisLineNumber`.
|
||||||
|
|
||||||
|
- Line-поля разрешены только для `msg_type`: `0`, `1`, `3`, `4`.
|
||||||
|
- Если передано хотя бы одно line-поле, должны быть переданы все 4.
|
||||||
|
- `prevLineNumber/prevLineHash32` должны указывать на существующий блок этой же цепочки.
|
||||||
|
- Для первого шага после root (`prevLineNumber == lineCode`):
|
||||||
|
- `TEXT (msg_type=1)`: `thisLineNumber = 0`;
|
||||||
|
- `TECH/CONNECTION/USER_PARAM (0/3/4)`: `thisLineNumber = 1`.
|
||||||
|
- Для обычного шага:
|
||||||
|
- `TEXT`: `thisLineNumber` допускает `same` или `+1` от предыдущего блока линии;
|
||||||
|
- `TECH/CONNECTION/USER_PARAM`: строго `+1`.
|
||||||
|
|
||||||
|
## 4. Root-идея для каналов и подписок
|
||||||
|
|
||||||
Для ссылок вида follow/friend/contact принято ссылаться на корневые блоки:
|
Для ссылок вида follow/friend/contact принято ссылаться на корневые блоки:
|
||||||
- `HEADER` для базовой сущности пользователя/канала `0`;
|
- `HEADER` для базовой сущности пользователя/канала `0`;
|
||||||
|
|||||||
@ -27,3 +27,7 @@
|
|||||||
- Команды передаются как обычные `TEXT_POST` сообщения.
|
- Команды передаются как обычные `TEXT_POST` сообщения.
|
||||||
- Сервер уже применяет `/.desc` при вычислении актуального описания канала.
|
- Сервер уже применяет `/.desc` при вычислении актуального описания канала.
|
||||||
- Команды `/.add` и `/.remove` зарезервированы под расширенную модель участников `type=200` на уровне UI/агрегации.
|
- Команды `/.add` и `/.remove` зарезервированы под расширенную модель участников `type=200` на уровне UI/агрегации.
|
||||||
|
|
||||||
|
## 4. Статус для MVP
|
||||||
|
- В текущем UI каналы `type=100` и `type=200` не используются.
|
||||||
|
- Соответственно, `/.add` и `/.remove` считаются запланированными и пока не участвуют в рабочем UI-сценарии.
|
||||||
|
|||||||
@ -10,7 +10,7 @@ TECH-тип покрывает системные записи цепочки.
|
|||||||
|
|
||||||
2. `subType=1` — `TECH_CREATE_CHANNEL`
|
2. `subType=1` — `TECH_CREATE_CHANNEL`
|
||||||
- создание нового канала;
|
- создание нового канала;
|
||||||
- хранит line-поля + `channelName`.
|
- хранит line-поля + `channelName` + `channelDescription` + `channelType` + `channelTypeVersion`.
|
||||||
|
|
||||||
## Назначение
|
## Назначение
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,9 @@
|
|||||||
1. `subType=1` — `REACTION_LIKE`
|
1. `subType=1` — `REACTION_LIKE`
|
||||||
- лайк на целевой блок;
|
- лайк на целевой блок;
|
||||||
- хранит target: `toBlockchainName`, `toBlockGlobalNumber`, `toBlockHash32`.
|
- хранит target: `toBlockchainName`, `toBlockGlobalNumber`, `toBlockHash32`.
|
||||||
|
2. `subType=2` — `REACTION_UNLIKE`
|
||||||
|
- снятие лайка с целевого блока;
|
||||||
|
- хранит target: `toBlockchainName`, `toBlockGlobalNumber`, `toBlockHash32`.
|
||||||
|
|
||||||
## Назначение
|
## Назначение
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,14 @@ CONNECTION-тип описывает социальные связи и подп
|
|||||||
4. `subType=21` — `CONNECTION_UNCONTACT`
|
4. `subType=21` — `CONNECTION_UNCONTACT`
|
||||||
5. `subType=30` — `CONNECTION_FOLLOW`
|
5. `subType=30` — `CONNECTION_FOLLOW`
|
||||||
6. `subType=31` — `CONNECTION_UNFOLLOW`
|
6. `subType=31` — `CONNECTION_UNFOLLOW`
|
||||||
|
7. `subType=40` — `CONNECTION_SPOUSE`
|
||||||
|
8. `subType=41` — `CONNECTION_UNSPOUSE`
|
||||||
|
9. `subType=50` — `CONNECTION_PARENT`
|
||||||
|
10. `subType=51` — `CONNECTION_UNPARENT`
|
||||||
|
11. `subType=52` — `CONNECTION_CHILD`
|
||||||
|
12. `subType=53` — `CONNECTION_UNCHILD`
|
||||||
|
13. `subType=54` — `CONNECTION_SIBLING`
|
||||||
|
14. `subType=55` — `CONNECTION_UNSIBLING`
|
||||||
|
|
||||||
## Общий формат payload
|
## Общий формат payload
|
||||||
|
|
||||||
@ -22,3 +30,4 @@ CONNECTION-тип описывает социальные связи и подп
|
|||||||
- FOLLOW указывает на root канала:
|
- FOLLOW указывает на root канала:
|
||||||
- `HEADER` для канала `0`;
|
- `HEADER` для канала `0`;
|
||||||
- `CREATE_CHANNEL` для пользовательского канала.
|
- `CREATE_CHANNEL` для пользовательского канала.
|
||||||
|
- Для остальных типов связи (`SPOUSE/PARENT/CHILD/SIBLING`) используется тот же target-формат.
|
||||||
|
|||||||
@ -1,5 +1,14 @@
|
|||||||
# История изменений документации блокчейна
|
# История изменений документации блокчейна
|
||||||
|
|
||||||
|
## 2026-05-19 00:22:46 +0300
|
||||||
|
- Базовый коммит-ориентир: `c27da63a3e65`.
|
||||||
|
- Актуализирован `README.md` как точка входа для MVP-документации по протоколу.
|
||||||
|
- В документации явно зафиксировано, что `channelType=100` и `channelType=200` присутствуют в формате, но пока не используются в UI.
|
||||||
|
- Актуализирован перечень REACTION-подтипов: добавлен `REACTION_UNLIKE (subType=2)`.
|
||||||
|
- Актуализирован перечень CONNECTION-подтипов: добавлены `SPOUSE/PARENT/CHILD/SIBLING` и обратные операции.
|
||||||
|
- В документ `02_Blockchain_Kinds_and_Lines.md` добавлены фактические серверные правила валидации line-полей.
|
||||||
|
- Обновлён корневой `AGENTS.md`: формат блокчейна менять только после явного подтверждения пользователя и с предварительным предупреждением.
|
||||||
|
|
||||||
## 2026-05-13 00:02:32 +0300
|
## 2026-05-13 00:02:32 +0300
|
||||||
- Базовый коммит-ориентир: `f63f40f1eb2f`.
|
- Базовый коммит-ориентир: `f63f40f1eb2f`.
|
||||||
- Добавлен текущий формат `CreateChannelBody` с полями `channelType (2 байта)` и `channelTypeVersion (2 байта)`.
|
- Добавлен текущий формат `CreateChannelBody` с полями `channelType (2 байта)` и `channelTypeVersion (2 байта)`.
|
||||||
|
|||||||
@ -1,16 +1,33 @@
|
|||||||
# Blockchain Docs (Актуально)
|
# Документация блокчейна SHiNE (MVP)
|
||||||
|
|
||||||
## Назначение
|
Этот каталог описывает только текущий рабочий формат протокола для MVP.
|
||||||
Этот набор файлов — актуальная документация по текущему формату блокчейна SHiNE для каналов, их типов и командных сообщений.
|
|
||||||
|
|
||||||
## Оглавление
|
## Основные документы
|
||||||
1. [01_Channel_Types_and_CreateChannel.md](./01_Channel_Types_and_CreateChannel.md)
|
1. [01_Common_Block_Format.md](./01_Common_Block_Format.md)
|
||||||
Текущий формат `CreateChannelBody`, типы каналов, уникальность имён и правила `stories`.
|
Единый бинарный формат блока (Frame v0), подпись, базовые проверки.
|
||||||
2. [02_Channel_Commands.md](./02_Channel_Commands.md)
|
2. [02_Blockchain_Kinds_and_Lines.md](./02_Blockchain_Kinds_and_Lines.md)
|
||||||
Командные сообщения в каналах: `/.desc`, `/.add`, `/.remove`.
|
Виды цепочек и правила line-полей.
|
||||||
3. [CHANGELOG.md](./CHANGELOG.md)
|
3. [10_TECH_Blocks.md](./10_TECH_Blocks.md)
|
||||||
История изменений документации и блокчейн-правил.
|
Системные блоки (`msg_type=0`).
|
||||||
|
4. [11_TEXT_Blocks.md](./11_TEXT_Blocks.md)
|
||||||
|
Текстовые блоки (`msg_type=1`).
|
||||||
|
5. [12_REACTION_Blocks.md](./12_REACTION_Blocks.md)
|
||||||
|
Реакции (`msg_type=2`).
|
||||||
|
6. [13_CONNECTION_Blocks.md](./13_CONNECTION_Blocks.md)
|
||||||
|
Социальные связи (`msg_type=3`).
|
||||||
|
7. [14_USER_PARAM_Blocks.md](./14_USER_PARAM_Blocks.md)
|
||||||
|
Параметры пользователя (`msg_type=4`).
|
||||||
|
8. [01_Channel_Types_and_CreateChannel.md](./01_Channel_Types_and_CreateChannel.md)
|
||||||
|
Типы каналов и формат `CreateChannelBody`.
|
||||||
|
9. [02_Channel_Commands.md](./02_Channel_Commands.md)
|
||||||
|
Команды в текстовых сообщениях каналов.
|
||||||
|
10. [CHANGELOG.md](./CHANGELOG.md)
|
||||||
|
Журнал изменений документации.
|
||||||
|
|
||||||
## Обязательное правило сопровождения
|
## Важные ограничения MVP
|
||||||
- Любое изменение блокчейн-кода (форматы, типы, правила чтения/записи, команды) должно сопровождаться обновлением файлов из этого каталога.
|
- Каналы `type=100` и `type=200` присутствуют в формате, но сейчас не используются в UI.
|
||||||
- Изменение обязательно фиксируется в `CHANGELOG.md` с датой/временем и хэшем коммита-основания.
|
- Поддерживаемый рабочий сценарий UI на текущем этапе: `stories (type=0)` и `public (type=1)`.
|
||||||
|
|
||||||
|
## Обязательное сопровождение
|
||||||
|
- При любом изменении формата/правил блокчейна в коде документы этого каталога обновляются в том же наборе изменений.
|
||||||
|
- Каждое обновление документов фиксируется в `CHANGELOG.md` с датой/временем и хэшем коммита-основания.
|
||||||
|
|||||||
@ -1,2 +1,2 @@
|
|||||||
client.version=1.2.59
|
client.version=1.2.60
|
||||||
server.version=1.2.53
|
server.version=1.2.54
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user