SHA256
Документация: уточнить AddBlock для вложений и профиля каналов
This commit is contained in:
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
client.version=1.4.17
|
client.version=1.4.17
|
||||||
server.version=1.4.4
|
server.version=1.4.5
|
||||||
|
|||||||
@@ -135,7 +135,51 @@
|
|||||||
5. **USER_PARAM (type=4)**
|
5. **USER_PARAM (type=4)**
|
||||||
- `USER_PARAM_TEXT_TEXT (1)`
|
- `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
|
||||||
|
<SHiNE:attach;v=1;name=photo.jpg;size=248193;sha256=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;ar=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB>
|
||||||
|
<SHiNE:attach;v=1;name=report.pdf;size=845221;sha256=cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc;ar=DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD>
|
||||||
|
Текст сообщения
|
||||||
|
```
|
||||||
|
|
||||||
|
Сервер хранит это как обычный `TEXT`-блок. Отображение карусели, картинок, видео и карточек файлов делает клиент. Полная спецификация тега находится в `docs/Blockchain/15_TEXT_Attachments.md`.
|
||||||
|
|
||||||
|
### Создание публичного канала с профилем
|
||||||
|
|
||||||
|
Для публичного канала начальный профиль пишется одним блоком `TECH_CREATE_CHANNEL`. Поле `channelDescription` содержит meta-текст:
|
||||||
|
|
||||||
|
```text
|
||||||
|
<SHiNE:title;v=1;Человекочитаемое имя канала>
|
||||||
|
<SHiNE:avatar;v=1;size=248193;sha256=3f2c8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;ar=AbCdEfAbCdEfAbCdEfAbCdEfAbCdEfAbCdEfAbCdE>
|
||||||
|
Описание канала
|
||||||
|
```
|
||||||
|
|
||||||
|
Ограничение `channelDescription` — до `2048` UTF-8 байт. Новый клиент не пишет отдельный `TEXT_CHANNEL_META` сразу после создания канала: создание канала и начальный профиль должны попадать в один `TECH_CREATE_CHANNEL`.
|
||||||
|
|
||||||
|
### Изменение профиля канала
|
||||||
|
|
||||||
|
Последующие изменения аватара, человекочитаемого имени или описания канала пишутся отдельным скрытым `TEXT_CHANNEL_META (subType=70)`.
|
||||||
|
|
||||||
|
Текстовое содержимое body использует тот же формат полного снимка профиля:
|
||||||
|
|
||||||
|
```text
|
||||||
|
<SHiNE:title;v=1;Новое имя канала>
|
||||||
|
<SHiNE:avatar;v=1;size=248193;sha256=3f2c8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;ar=AbCdEfAbCdEfAbCdEfAbCdEfAbCdEfAbCdEfAbCdE>
|
||||||
|
Новое описание канала
|
||||||
|
```
|
||||||
|
|
||||||
|
Каждый `TEXT_CHANNEL_META` является полным состоянием профиля на момент записи. Если аватара нет, тег `SHiNE:avatar` не пишется. Если описания нет, после meta-тегов не добавляется хвостовой текст. Полная спецификация находится в `docs/Blockchain/16_TEXT_Channel_Meta.md`.
|
||||||
|
|
||||||
|
## 7. Хватает ли функций сейчас
|
||||||
|
|
||||||
Коротко: **для записи событий в блокчейн — хватает**, для полноценного клиентского чтения — **пока не хватает**.
|
Коротко: **для записи событий в блокчейн — хватает**, для полноценного клиентского чтения — **пока не хватает**.
|
||||||
|
|
||||||
@@ -149,7 +193,7 @@
|
|||||||
- нет API списка подписок с серверными счётчиками непрочитанного;
|
- нет API списка подписок с серверными счётчиками непрочитанного;
|
||||||
- нет ленты событий (новые ответы/лайки/подписки) как отдельного RPC.
|
- нет ленты событий (новые ответы/лайки/подписки) как отдельного RPC.
|
||||||
|
|
||||||
## 7. Рекомендации по клиенту при записи блоков
|
## 8. Рекомендации по клиенту при записи блоков
|
||||||
|
|
||||||
1. Перед отправкой держать локальный `lastNumber/lastHash`.
|
1. Перед отправкой держать локальный `lastNumber/lastHash`.
|
||||||
2. При `bad_prev_hash` или `bad_block_number`:
|
2. При `bad_prev_hash` или `bad_block_number`:
|
||||||
@@ -159,7 +203,7 @@
|
|||||||
4. Для связей/подписок использовать target на **root** (HEADER или CREATE_CHANNEL), а не на произвольный пост.
|
4. Для связей/подписок использовать target на **root** (HEADER или CREATE_CHANNEL), а не на произвольный пост.
|
||||||
|
|
||||||
|
|
||||||
## 8. USER_PARAM для «личных данных»
|
## 9. USER_PARAM для «личных данных»
|
||||||
|
|
||||||
Да, на текущем API это можно добавить **без изменения серверного кода**:
|
Да, на текущем API это можно добавить **без изменения серверного кода**:
|
||||||
|
|
||||||
@@ -185,7 +229,7 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 9. `GetBlockchainBlock`
|
## 10. `GetBlockchainBlock`
|
||||||
|
|
||||||
### Назначение
|
### Назначение
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user