SHA256
Добавить линии связей и параметров пользователя
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# USER_PROFILE блоки (`type=4`, `version=1`)
|
||||
|
||||
`USER_PROFILE` хранит только данные, которыми пользователь описывает собственный профиль.
|
||||
|
||||
> В текущем Java/JS коде историческое внутреннее имя класса/метода может оставаться `UserParamBody` / `addBlockUserParam`. На уровне протокола и документации тип называется `USER_PROFILE`.
|
||||
|
||||
## Подтип
|
||||
|
||||
`subType=1` — текстовое поле профиля: `paramKey + paramValue`.
|
||||
|
||||
Примеры полей: имя, фамилия, `about`, аватар, web, телефон, роль аккаунта и другие свойства профиля, определённые приложением.
|
||||
|
||||
## Линия профиля
|
||||
|
||||
У пользователя существует ровно одна линия `USER_PROFILE`. Отдельный `lineCode` для неё не нужен и в body не хранится: логический код линии всегда `0`.
|
||||
|
||||
Первый `USER_PROFILE` ссылается на `HEADER #0` и имеет `profileSequence=1`. Каждый следующий блок обязан ссылаться на фактический текущий хвост профильной линии и увеличивать sequence ровно на `1`.
|
||||
|
||||
## Body (`version=1`)
|
||||
|
||||
Big-endian:
|
||||
|
||||
```text
|
||||
[4] prevProfileBlockNumber
|
||||
[32] prevProfileBlockHash32
|
||||
[4] profileSequence
|
||||
[2] paramKeyLen
|
||||
[N] paramKey UTF-8
|
||||
[2] paramValueLen
|
||||
[M] paramValue UTF-8
|
||||
```
|
||||
|
||||
- `prevProfileBlockNumber` — **глобальный `blockNumber`** предыдущего блока профильной линии, а не локальный sequence.
|
||||
- `prevProfileBlockHash32` — SHA-256 Frame предыдущего блока профильной линии.
|
||||
- `profileSequence` — порядковый номер изменения профиля `1..N`.
|
||||
|
||||
Сервер проверяет одновременно номер предыдущего блока, его hash и непрерывность sequence. Поэтому выборка всех блоков `USER_PROFILE` позволяет обнаружить пропуск или боковую ветку.
|
||||
|
||||
## ANS-104 тег
|
||||
|
||||
Каждый `USER_PROFILE` обязан иметь подписанный тег:
|
||||
|
||||
```text
|
||||
t=prof
|
||||
```
|
||||
Reference in New Issue
Block a user