Files
SHiNE-server/docs/Blockchain/13_CONNECTION_Blocks.md
T

2.9 KiB

CONNECTION блоки (type=3, version=1)

CONNECTION описывает историю социальных связей и подписок пользователя.

Подтипы

• 10/11 — close_friend / unclose_friend (близкий друг) • 14/15 — friend / unfriend (друг) • 20/21 — contact / uncontact (контакт) • 30/31 — follow / unfollow (подписка) • 40/41 — spouse / unspouse • 50/51 — parent / unparent • 52/53 — child / unchild • 54/55 — sibling / unsibling • 70/71 — shine_confirmed / shine_unconfirmed • 74/75 — shine_seen / shine_unseen • 80/81 — official_account / unofficial_account

60/61 — legacy/reserved и новым UI не создаются.

Линия связей

У пользователя существует ровно одна линия CONNECTION. Отдельный lineCode в body не хранится: логический код линии всегда 0.

Первый CONNECTION ссылается на HEADER #0 и имеет connectionSequence=1. Каждый следующий обязан ссылаться на фактический текущий хвост CONNECTION-линии и увеличивать sequence ровно на 1.

Body (version=1)

Big-endian:

[4]  prevConnectionBlockNumber
[32] prevConnectionBlockHash32
[4]  connectionSequence

[1]  toLoginLen
[N]  toLogin UTF-8
[2]  toForkNumber
[4]  toBlockGlobalNumber
[32] toBlockHash32
  • prevConnectionBlockNumber — глобальный blockNumber предыдущего CONNECTION-блока.
  • prevConnectionBlockHash32 — SHA-256 Frame предыдущего CONNECTION-блока.
  • connectionSequence — порядковый номер изменения связей 1..N.

Сервер проверяет номер, hash и sequence относительно текущего хвоста CONNECTION-линии. Это позволяет выгрузить только связи пользователя и проверить, что внутри выбранной истории нет пропущенного шага.

Target

toForkNumber хранит fork, который видел автор связи (1..999), но не входит в логическую identity цели. 0 зарезервирован как unknown/legacy; 1000+ недопустим.

Для связи на пользователя обычно используется его HEADER:

toBlockGlobalNumber=0
toBlockHash32=SHA-256(Frame HEADER)

Для FOLLOW на канал target указывает на root канала: HEADER для канала 0 либо TECH_CREATE_CHANNEL для пользовательского канала.

ANS-104 тег

Каждый CONNECTION обязан иметь подписанный тег:

t=conn