# CONNECTION блоки (`type=3`, `version=1`) CONNECTION-тип описывает социальные связи и подписки. ## Подтипы • `10/11` — `close_friend / unclose_friend` (близкий друг) • `20/21` — `contact / uncontact` (контакт) • `30/31` — `follow / unfollow` (подписан) • `40/41` — `spouse / unspouse` (супруг/супруга) • `50/51` — `parent / unparent` (родитель) • `52/53` — `child / unchild` (ребёнок) • `54/55` — `sibling / unsibling` (брат/сестра) • `60/61` — `known_person / unknown_person` (знаю этого человека) • `70/71` — `shine_confirmed / shine_unconfirmed` (точно уверен, что сияющий) • `74/75` — `shine_seen / shine_unseen` (мало знаком, но видел сияющим) ## Общий формат payload - line-поля (`lineCode`, `prevLineNumber`, `prevLineHash32`, `thisLineNumber`) - target (`toLogin`, `toForkNumber`, `toBlockGlobalNumber`, `toBlockHash32`) ## Бинарный target ```text [1] toLoginLen (uint8) [N] toLogin UTF-8 [2] toForkNumber (uint16, BigEndian) [4] toBlockGlobalNumber [32] toBlockHash32 ``` `toForkNumber` хранит fork, который видел автор связи (`1..999`), но не участвует в identity. Значения `0` и `1000+` недопустимы. Для связи на пользователя используется **реальный HEADER hash**: `toBlockGlobalNumber=0`, `toBlockHash32=SHA-256(Frame HEADER)`. Нулевой hash запрещён. ## Правила target - FRIEND/CONTACT обычно указывают на `HEADER` цели (`block 0`). - FOLLOW указывает на root канала: - `HEADER` для канала `0`; - `CREATE_CHANNEL` для пользовательского канала. - Для остальных типов связи (`SPOUSE/PARENT/CHILD/SIBLING`) используется тот же target-формат.