# TECH блоки (`type=0`, `version=1`) TECH-тип покрывает системные записи цепочки. ## Подтипы 1. `subType=0` — `HEADER_COMPAT` - стартовый блок цепочки; - payload: tag `SHiNE` + login владельца. 2. `subType=1` — `TECH_CREATE_CHANNEL` - создание нового канала; - хранит line-поля + `channelName` + `channelDescription` + `channelType` + `channelTypeVersion`. 3. `subType=2` — `TECH_FORK` - первый новый блок после точной перепубликации выбранного префикса предыдущего fork новым blockchain key; - связывает новую активную цепочку с предыдущей и фиксирует точку rollback/продолжения. ### `TECH_FORK` body (`version=1`) Big-endian: - `parentBlockchainKey[32]` — public key предыдущего fork; - `forkPointBlockNumber[4]` — последний блок старой цепочки, сохранённый в новом fork; - `forkPointBlockHash32[32]`; - `forkPointTimestampMs[8]`; - `parentTipBlockNumber[4]` — tip старой цепочки на момент начала ротации; - `parentTipBlockHash32[32]`; - `parentTipTimestampMs[8]`; - `discardedBlocksCount[4]` — `parentTipBlockNumber - forkPointBlockNumber`; - `reasonCode[1]`; - `commentUtf8Length[2]`; - `comment[N]` — произвольный комментарий пользователя, максимум 1024 UTF-8 байт. `reasonCode`: - `1` — `ROUTINE_ROTATION`: обычная смена пароля/ключей, компрометация не предполагается; - `2` — `POSSIBLE_COMPROMISE`: возможная компрометация, неизвестные записи не подтверждены; - `3` — `CONFIRMED_COMPROMISE_ROLLBACK`: обнаружены нежелательные/чужие записи и выполнен rollback; - `4` — `RECOVERY`: восстановление доступа recovery-механизмом. Правила: - блоки `0..forkPointBlockNumber` в новом fork должны быть точными Frame-копиями выбранного префикса предыдущей цепочки; - `TECH_FORK` идёт сразу после этого префикса и является первым действительно новым Frame нового fork; - если история сохранена полностью, `forkPointBlockNumber == parentTipBlockNumber` и `discardedBlocksCount == 0`; - если сохраняется только genesis, новый fork содержит прежний `block 0`, а `block 1` является `TECH_FORK`; - новый blockchain key в body не дублируется: он определяется owner/signature нового ANS-104 DataItem. ## Назначение - инициализация блокчейна; - управление набором каналов пользователя; - фиксация происхождения нового fork и причины ротации/rollback.