docs(blockchain): актуализировать MVP-формат и правила изменения протокола

This commit is contained in:
AidarKC 2026-05-19 00:23:10 +03:00
parent c27da63a3e
commit b85643ca33
17 changed files with 83 additions and 21 deletions

View File

@ -13,6 +13,8 @@
- Это точка входа (оглавление), рядом расположены детальные файлы по форматам, типам каналов и командным сообщениям. - Это точка входа (оглавление), рядом расположены детальные файлы по форматам, типам каналов и командным сообщениям.
- При любом изменении кода, связанного с блокчейном (формат блока, типы каналов, правила чтения/записи, команды), обязательно обновлять соответствующие документы в `Dev_Docs/Blockchain/`. - При любом изменении кода, связанного с блокчейном (формат блока, типы каналов, правила чтения/записи, команды), обязательно обновлять соответствующие документы в `Dev_Docs/Blockchain/`.
- Дополнительно обязательно вести `Dev_Docs/Blockchain/CHANGELOG.md`: дописывать изменения построчно с указанием даты/времени и хэша коммита, после которого внесено изменение. - Дополнительно обязательно вести `Dev_Docs/Blockchain/CHANGELOG.md`: дописывать изменения построчно с указанием даты/времени и хэша коммита, после которого внесено изменение.
- Перед любым изменением формата блокчейна обязательно заранее предупреждать пользователя, что формат будет изменён.
- Изменять формат блокчейна можно только после явного подтверждения пользователя (без подтверждения формат не менять).
## Версионирование ## Версионирование
- Единый файл версий проекта: `VERSION.properties` (в корне репозитория). - Единый файл версий проекта: `VERSION.properties` (в корне репозитория).

View File

@ -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-параметры пользователя.
## Примечание ## Примечание

View File

@ -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` разрешены владельцу собственного блокчейна.

View File

@ -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`;

View File

@ -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-сценарии.

View File

@ -10,7 +10,7 @@ TECH-тип покрывает системные записи цепочки.
2. `subType=1``TECH_CREATE_CHANNEL` 2. `subType=1``TECH_CREATE_CHANNEL`
- создание нового канала; - создание нового канала;
- хранит line-поля + `channelName`. - хранит line-поля + `channelName` + `channelDescription` + `channelType` + `channelTypeVersion`.
## Назначение ## Назначение

View File

@ -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`.
## Назначение ## Назначение

View File

@ -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-формат.

View File

@ -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 байта)`.

View File

@ -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` с датой/временем и хэшем коммита-основания.

View File

@ -1,2 +1,2 @@
client.version=1.2.59 client.version=1.2.60
server.version=1.2.53 server.version=1.2.54