From 620186db1c379cfec82625db805eba129e50d11b08806e13fa1fa6c9828ea587 Mon Sep 17 00:00:00 2001 From: AidarKC Date: Sat, 1 Aug 2026 09:43:51 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8F:=20=D1=83=D1=82=D0=BE=D1=87?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D1=8C=20AddBlock=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B2=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=84=D0=B8=D0=BB=D1=8F=20=D0=BA=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VERSION.properties | 2 +- docs/API/04_Add_Block_to_Blockchain_API.md | 52 ++++++++++++++++++++-- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/VERSION.properties b/VERSION.properties index 40dd5b3a..3710ffcc 100644 --- a/VERSION.properties +++ b/VERSION.properties @@ -1,2 +1,2 @@ client.version=1.4.17 -server.version=1.4.4 +server.version=1.4.5 diff --git a/docs/API/04_Add_Block_to_Blockchain_API.md b/docs/API/04_Add_Block_to_Blockchain_API.md index 18975a49..d3811536 100644 --- a/docs/API/04_Add_Block_to_Blockchain_API.md +++ b/docs/API/04_Add_Block_to_Blockchain_API.md @@ -135,7 +135,51 @@ 5. **USER_PARAM (type=4)** - `USER_PARAM_TEXT_TEXT (1)` -## 6. Хватает ли функций сейчас +## 6. Практические payload-форматы для каналов и вложений + +`AddBlock` не имеет отдельных JSON-полей для вложений, аватаров или человекочитаемого имени канала. Клиент собирает бинарный блок нужного типа, а новые данные кладёт в текстовые поля тела блока по правилам blockchain-формата. + +### Вложения в сообщениях + +Для `TEXT_POST`, `TEXT_REPLY`, `TEXT_EDIT_POST` и `TEXT_EDIT_REPLY` вложения записываются в начало текста сообщения одним или несколькими тегами `SHiNE:attach v=1`. + +Пример текстового содержимого body: + +```text + + +Текст сообщения +``` + +Сервер хранит это как обычный `TEXT`-блок. Отображение карусели, картинок, видео и карточек файлов делает клиент. Полная спецификация тега находится в `docs/Blockchain/15_TEXT_Attachments.md`. + +### Создание публичного канала с профилем + +Для публичного канала начальный профиль пишется одним блоком `TECH_CREATE_CHANNEL`. Поле `channelDescription` содержит meta-текст: + +```text + + +Описание канала +``` + +Ограничение `channelDescription` — до `2048` UTF-8 байт. Новый клиент не пишет отдельный `TEXT_CHANNEL_META` сразу после создания канала: создание канала и начальный профиль должны попадать в один `TECH_CREATE_CHANNEL`. + +### Изменение профиля канала + +Последующие изменения аватара, человекочитаемого имени или описания канала пишутся отдельным скрытым `TEXT_CHANNEL_META (subType=70)`. + +Текстовое содержимое body использует тот же формат полного снимка профиля: + +```text + + +Новое описание канала +``` + +Каждый `TEXT_CHANNEL_META` является полным состоянием профиля на момент записи. Если аватара нет, тег `SHiNE:avatar` не пишется. Если описания нет, после meta-тегов не добавляется хвостовой текст. Полная спецификация находится в `docs/Blockchain/16_TEXT_Channel_Meta.md`. + +## 7. Хватает ли функций сейчас Коротко: **для записи событий в блокчейн — хватает**, для полноценного клиентского чтения — **пока не хватает**. @@ -149,7 +193,7 @@ - нет API списка подписок с серверными счётчиками непрочитанного; - нет ленты событий (новые ответы/лайки/подписки) как отдельного RPC. -## 7. Рекомендации по клиенту при записи блоков +## 8. Рекомендации по клиенту при записи блоков 1. Перед отправкой держать локальный `lastNumber/lastHash`. 2. При `bad_prev_hash` или `bad_block_number`: @@ -159,7 +203,7 @@ 4. Для связей/подписок использовать target на **root** (HEADER или CREATE_CHANNEL), а не на произвольный пост. -## 8. USER_PARAM для «личных данных» +## 9. USER_PARAM для «личных данных» Да, на текущем API это можно добавить **без изменения серверного кода**: @@ -185,7 +229,7 @@ --- -## 9. `GetBlockchainBlock` +## 10. `GetBlockchainBlock` ### Назначение