2.3 KiB
2.3 KiB
Виды блокчейнов и логических линий
1. Именованный блокчейн
Базовый идентификатор цепочки пользователя:
blockchainName = <login>-<NNN>- пример:
alice-001
Обычно это одна основная цепочка пользователя.
2. Логические линии внутри одной цепочки
Физически цепочка одна, но внутри есть независимые логические последовательности (линии), которые ведутся через поля:
lineCodeprevLineNumberprevLineHash32thisLineNumber
Линии используются для:
- 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для пользовательских каналов.
Так ссылки остаются стабильными, даже когда в канале появляются новые сообщения.