1.9 KiB
1.9 KiB
Общий формат добавляемого блока (Frame v0)
Этот файл описывает единый бинарный формат блока, который клиент отправляет через AddBlock в поле blockBytesB64.
1. Полная структура блока
Блок состоит из двух частей:
- PREIMAGE (подписывается)
- TAIL (маркер подписи + подпись)
PREIMAGE
frameCode (uint16)prevHash32 (32 bytes)blockSize (int32)— размер PREIMAGEblockNumber (int32)timestamp (int64)type (uint16)subType (uint16)version (uint16)bodyBytes (N)
TAIL
sigMarker (uint16)signature64 (64 bytes, Ed25519)
2. Что проверяет сервер при AddBlock
frameCodeдолжен быть0x0000.sigMarkerдолжен быть0x0100.blockNumberдолжен идти строго по порядку (last + 1).prevHash32должен совпасть с вершиной цепочки на сервере.bodyдолжен пройтиcheck()для конкретного типа.- подпись должна валидироваться публичным ключом блокчейна.
3. Ограничения
- максимальный полный размер блока: до 4 MiB;
- timestamp не должен сильно уходить в будущее;
bodyBytesпарсится поtype/subType/versionиз заголовка блока.
4. Почему это важно
Одинаковый общий формат позволяет:
- передавать разные виды записей через один RPC
AddBlock; - валидировать блоки единообразно;
- расширять типы
body, не ломая каркас блока.