На этом с форматом разобрались и отложили всё на праздничные выходные
This commit is contained in:
AidarKC
2026-01-10 01:47:00 +03:00
parent 9d0da4b39f
commit 973a632b85
4 changed files with 169 additions and 30 deletions
@@ -10,13 +10,13 @@ import java.util.Arrays;
import java.util.Objects;
/**
* BchBlockEntry_new — универсальный блок нового формата.
* старый формат
*
* RAW (BigEndian):
* [4] recordSize (int) = размер RAW (включая этот заголовок), БЕЗ signature+hash
* [4] recordNumber (int) глобальный номер блока
* [8] timestamp (long) unix seconds
* [2] lineIndex (short)
[2] lineIndex (short)
* [4] lineNumber (int)
* [N] bodyBytes (body, начинается с [type][version])
*
@@ -24,6 +24,56 @@ import java.util.Objects;
* [64] signature64 (Ed25519)
* [32] hash32 (SHA-256)
*/
СМОТРИ файл : "!!! TODO что бы не забыть"
/**
* BchBlockEntry — универсальный блок нового формата.
*
* RAW (BigEndian):
* Неизменное заглавие
* [32] prevHash32 (SHA-256) ХЭЩ ПРИВЕДУЩЕГО
* [4] blockSize (int) = размер RAW (включая этот заголовок), БЕЗ signature
* [4] blockNumber (int) номер блока
* [8] timestamp (long) unix seconds
* Само сообщение
* [2] type - тип соощения
* [2] Sиbtype - субтип сообщения
* [2] version - версия формата соощения
* [4] prevLineNumber НОМЕР ПРИВЕДУЩЕГО СООБЩЕНИЯ В ЛИНИИ - может быть а может и небыть в зависимости от типа сообщения
* [32] prevLineHash ХЭШ ПРИВЕДУЩЕГО СООБЩЕНИЯ В ЛИНИИ - может быть а может и небыть в зависимости от типа сообщения
* [N] bodyBytes (ОСТАЛЬНЫЕ БАЙТЫ])
* TAIL (НЕ входит в recordSize):
* [64] signature64 (Ed25519)
* И хэш в конце блока мы не храним, тк он будет в начале следующего блока. А для проверки блока оно не нужно тк мы каждый раз провеяем подпись . А она основана на хэше
*
* [32] hash32 (SHA-256)
*/
public final class BchBlockEntry {
public static final int SIGNATURE_LEN = 64;
@@ -1,7 +1,7 @@
package blockchain;
package shine.db;
/**
* shine.db.MsgSubType — единое место для ВСЕХ subType сообщений (msg_sub_type).
* MsgSubType — единое место для ВСЕХ subType сообщений (msg_sub_type).
*
* Правило:
* - НИКАКИХ "магических чисел" subType по проекту.
@@ -14,18 +14,23 @@ public final class MsgSubType {
private MsgSubType() {}
/* ===================== HEADER (msg_type=0) ===================== */
/** HeaderBody: subType всегда 0 (compat). */
public static final short HEADER_COMPAT = 0;
/* ===================== TEXT (msg_type=1) ===================== */
/** Новое сообщение (начало ветки). */
/** Новая публикация. */
public static final short TEXT_NEW = 1;
/** Ответ на сообщение (reply). */
/** Ответ (reply). */
public static final short TEXT_REPLY = 2;
/** Репост (repost). */
public static final short TEXT_REPOST = 3;
/** Редактирование (edit). ВАЖНО: серверное значение = 10. */
/** Редактирование (edit). */
public static final short TEXT_EDIT = 10;
/* ===================== REACTION (msg_type=2) ===================== */
@@ -34,6 +39,11 @@ public final class MsgSubType {
public static final short REACTION_LIKE = 1;
/* ===================== CONNECTION (msg_type=3) ===================== */
/**
* Совпадает с ConnectionBody:
* SET: FRIEND=10, CONTACT=20, FOLLOW=30
* UNSET: UNFRIEND=11, UNCONTACT=21, UNFOLLOW=31
*/
/** Добавить в друзья. */
public static final short CONNECTION_FRIEND = 10;
@@ -41,15 +51,22 @@ public final class MsgSubType {
/** Удалить из друзей. */
public static final short CONNECTION_UNFRIEND = 11;
/** Добавить в контакты. */
public static final short CONNECTION_CONTACT = 20;
/** Удалить из контактов. */
public static final short CONNECTION_UNCONTACT = 21;
/** Подписаться (follow). */
public static final short CONNECTION_FOLLOW = 20;
public static final short CONNECTION_FOLLOW = 30;
/** Отписаться (unfollow). */
public static final short CONNECTION_UNFOLLOW = 21;
public static final short CONNECTION_UNFOLLOW = 31;
/** Заблокировать. */
public static final short CONNECTION_BLOCK = 30;
/* ===================== USER_PARAM (msg_type=4) ===================== */
/** Разблокировать. */
public static final short CONNECTION_UNBLOCK = 31;
}
/** Параметр профиля key/value (обе строки). */
public static final short USER_PARAM_TEXT_TEXT = 1;
}