# 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: ```text [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: ```text toBlockGlobalNumber=0 toBlockHash32=SHA-256(Frame HEADER) ``` Для FOLLOW на канал target указывает на root канала: HEADER для канала `0` либо `TECH_CREATE_CHANNEL` для пользовательского канала. ## ANS-104 тег Каждый CONNECTION обязан иметь подписанный тег: ```text t=conn ```