📦 Модуль blockchain
Модуль отвечает за хранение, чтение, проверку и создание бинарных блоков формата .bch — базовых элементов цепочек в системе SHiNE Blockchain.
Каждый блок содержит заголовок, тело (body), подпись Ed25519 и хэш SHA-256.
🔹 BchBlockEntry
Главный класс блока.
Публичные методы:
BchBlockEntry(int num, long time, short type, short ver, byte[] body)— создаёт новый блок без подписи.BchBlockEntry(byte[] full)— распаковывает блок из байтов (RAW + SIG + HASH).addSignatureAndHash(byte[] sig, byte[] hash)— добавляет подпись и хэш.getBodyAsText()— возвращает тело как строку.getSignature64(),getHash32(),getRawBytesWithSignatureAndHash()— доступ к данным блока.toString()— краткое описание блока.
🔹 BchBlockValidator // сделан на будущее, для сетевых запросов не используется
Проверяет, можно ли добавить блок в цепочку.
Публичный метод:
validate(BchBlockEntry block, BchInfoEntry chain, long chainId)— сверяет номер блока, подпись и хэш.
🔹 BodyRecordParser
Определяет, какой тип тела (HeaderBody, TextBody и т.п.) нужно создать.
Публичный метод:
parse(short type, short version, byte[] body)— возвращает объект, реализующийBodyRecord.
🔹 BodyRecord (интерфейс)
Общее поведение для всех тел блоков.
Методы:
check()— проверить корректность данных.toBytes()— сериализация обратно в байты (по умолчанию не реализована).
🔹 HeaderBody
Тело первого блока цепочки (тип 0).
Содержит логин, ID цепочки и публичный ключ пользователя.
Публичные методы:
HeaderBody(byte[] body)— парсинг из байтов.HeaderBody(long id, String login, …)— создание нового заголовка.check()— валидация логина и ключа.toBytes()— сериализация в байты.toString()— краткое описание полей.
🔹 TextBody
Простое текстовое сообщение (тип 1).
Публичные методы:
TextBody(byte[] body)— парсинг из байтов.TextBody(String msg)— создание нового текстового блока.check()— проверка, что текст не пуст.toBytes()— вернуть текст как UTF-8-массив.toString()— короткое текстовое описание.
💡 Вся логика создания, подписи и проверки блоков построена вокруг этих классов.
BchBlockEntry — контейнер блока,
HeaderBody / TextBody — содержимое,
BodyRecordParser — выбор нужного типа,
BchBlockValidator — контроль целостности.