# Виды блокчейнов и логических линий ## 1. Именованный блокчейн Базовый идентификатор цепочки пользователя: - `blockchainName = -` - пример: `alice-001` Обычно это одна основная цепочка пользователя. ## 2. Логические линии внутри одной цепочки Физически цепочка одна, но внутри есть независимые логические последовательности (линии), которые ведутся через поля: - `lineCode` - `prevLineNumber` - `prevLineHash32` - `thisLineNumber` Линии используются для: - TECH-событий; - каналов с текстовыми постами; - связей и подписок; - пользовательских параметров. ## 3. Правила line-полей (фактическая серверная валидация) Line-поля: `lineCode`, `prevLineNumber`, `prevLineHash32`, `thisLineNumber`. - Line-поля разрешены только для `msg_type`: `0`, `1`, `3`, `4`. - Если передано хотя бы одно line-поле, должны быть переданы все 4. - `prevLineNumber/prevLineHash32` должны указывать на существующий блок этой же цепочки. - Для первого шага после root (`prevLineNumber == lineCode`): - `TEXT (msg_type=1)`: `thisLineNumber = 0`; - `TECH/CONNECTION/USER_PARAM (0/3/4)`: `thisLineNumber = 1`. - Для обычного шага: - `TEXT`: `thisLineNumber` допускает `same` или `+1` от предыдущего блока линии; - `TECH/CONNECTION/USER_PARAM`: строго `+1`. ## 4. Root-идея для каналов и подписок Для ссылок вида follow/friend/contact принято ссылаться на корневые блоки: - `HEADER` для базовой сущности пользователя/канала `0`; - `CREATE_CHANNEL` для пользовательских каналов. Так ссылки остаются стабильными, даже когда в канале появляются новые сообщения.