diff --git a/shine-server-blockchain/src/main/java/blockchain/body/BodyHasTarget.java b/shine-server-blockchain/src/main/java/blockchain/body/BodyHasTarget.java index 12fe537..bd8e178 100644 --- a/shine-server-blockchain/src/main/java/blockchain/body/BodyHasTarget.java +++ b/shine-server-blockchain/src/main/java/blockchain/body/BodyHasTarget.java @@ -3,18 +3,17 @@ package blockchain.body; import utils.blockchain.BlockchainNameUtil; /** - * BodyHasTarget — контракт для body, которые "ссылаются" на цель (to-поля). + * BodyHasTarget — дополнительный интерфейс для body, которые "ссылаются" на цель (to-поля). * - * ВАЖНО (новое правило): + * Новое правило: * - toLogin НЕ храним в байтах блока. - * - toLogin всегда вычисляем из toBchName по стандарту: - * toBchName = login + "-NNN" => toLogin = login + * - toLogin всегда вычисляется из toBchName по стандарту login+"-NNN". * - * Все методы могут возвращать null (если target отсутствует). + * Все методы могут возвращать null. */ public interface BodyHasTarget { - /** login цели (nullable). */ + /** login цели (nullable). Вычисляется из toBchName(). */ default String toLogin() { String bch = toBchName(); if (bch == null) return null; @@ -28,5 +27,5 @@ public interface BodyHasTarget { Integer toBlockGlobalNumber(); /** hash целевого блока (обычно 32 байта). Может быть null, если ссылки нет. */ - byte[] toBlockHasheBytes(); + byte[] toBlockHashBytes(); } \ No newline at end of file diff --git a/shine-server-blockchain/src/main/java/blockchain/body/ConnectionBody.java b/shine-server-blockchain/src/main/java/blockchain/body/ConnectionBody.java index cc2fb6d..9278046 100644 --- a/shine-server-blockchain/src/main/java/blockchain/body/ConnectionBody.java +++ b/shine-server-blockchain/src/main/java/blockchain/body/ConnectionBody.java @@ -204,8 +204,7 @@ public final class ConnectionBody implements BodyRecord, BodyHasTarget, BodyHasL /* ====================== BodyHasTarget ===================== */ // toLogin() теперь default в интерфейсе и вычисляется из toBchName() - @Override public String toBchName() { return toBlockchainName; } @Override public Integer toBlockGlobalNumber() { return toBlockGlobalNumber; } - @Override public byte[] toBlockHasheBytes() { return toBlockHash32; } + @Override public byte[] toBlockHashBytes() { return toBlockHash32; } } \ No newline at end of file diff --git a/shine-server-blockchain/src/main/java/blockchain/body/ReactionBody.java b/shine-server-blockchain/src/main/java/blockchain/body/ReactionBody.java index 22b2009..738b3da 100644 --- a/shine-server-blockchain/src/main/java/blockchain/body/ReactionBody.java +++ b/shine-server-blockchain/src/main/java/blockchain/body/ReactionBody.java @@ -120,11 +120,7 @@ public final class ReactionBody implements BodyRecord, BodyHasTarget { /* ====================== BodyHasTarget ====================== */ - @Override public String toLogin() { return null; } - @Override public String toBchName() { return toBlockchainName; } - @Override public Integer toBlockGlobalNumber() { return toBlockGlobalNumber; } - - @Override public byte[] toBlockHasheBytes() { return toBlockHash32; } + @Override public byte[] toBlockHashBytes() { return toBlockHash32; } } \ No newline at end of file diff --git a/shine-server-blockchain/src/main/java/blockchain/body/TextBody.java b/shine-server-blockchain/src/main/java/blockchain/body/TextBody.java index 4c87c4f..341ee41 100644 --- a/shine-server-blockchain/src/main/java/blockchain/body/TextBody.java +++ b/shine-server-blockchain/src/main/java/blockchain/body/TextBody.java @@ -133,13 +133,13 @@ public final class TextBody implements BodyRecord, BodyHasTarget, BodyHasLine { } public TextBody(int prevLineNumber, - byte[] prevLineHash32, - int thisLineNumber, - short subType, - String message, - String toBlockchainName, - Integer toBlockGlobalNumber, - byte[] toBlockHash32) { + byte[] prevLineHash32, + int thisLineNumber, + short subType, + String message, + String toBlockchainName, + Integer toBlockGlobalNumber, + byte[] toBlockHash32) { Objects.requireNonNull(message, "message == null"); if (!isValidSubType(subType)) throw new IllegalArgumentException("Bad Text subType: " + (subType & 0xFFFF)); @@ -198,7 +198,6 @@ public final class TextBody implements BodyRecord, BodyHasTarget, BodyHasLine { if (thisLineNumber != -1) throw new IllegalArgumentException("thisLineNumber must be -1 when prevLineNumber=-1"); } else { if (prevLineHash32 == null || prevLineHash32.length != 32) throw new IllegalArgumentException("prevLineHash32 invalid"); - // thisLineNumber сервер пока не проверяет (принимаем как есть) } if (isHasTargetSubType(subType)) { @@ -218,8 +217,8 @@ public final class TextBody implements BodyRecord, BodyHasTarget, BodyHasLine { if (msgUtf8.length == 0) throw new IllegalArgumentException("Text payload is empty"); if (msgUtf8.length > 65535) throw new IllegalArgumentException("Text too long (>65535 bytes)"); - int cap = 4 + 32 + 4 // line fields - + 2 + msgUtf8.length; // text + int cap = 4 + 32 + 4 + + 2 + msgUtf8.length; byte[] nameBytes = null; @@ -264,20 +263,7 @@ public final class TextBody implements BodyRecord, BodyHasTarget, BodyHasLine { @Override public int thisLineNumber() { return thisLineNumber; } /* ====================== BodyHasTarget ===================== */ - @Override public String toLogin() { return null; } - - @Override - public String toBchName() { - return isHasTargetSubType(subType) ? toBlockchainName : null; - } - - @Override - public Integer toBlockGlobalNumber() { - return isHasTargetSubType(subType) ? toBlockGlobalNumber : null; - } - - @Override - public byte[] toBlockHasheBytes() { - return isHasTargetSubType(subType) ? toBlockHash32 : null; - } + @Override public String toBchName() { return isHasTargetSubType(subType) ? toBlockchainName : null; } + @Override public Integer toBlockGlobalNumber() { return isHasTargetSubType(subType) ? toBlockGlobalNumber : null; } + @Override public byte[] toBlockHashBytes() { return isHasTargetSubType(subType) ? toBlockHash32 : null; } } \ No newline at end of file diff --git a/shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/blockchain/Net_AddBlock_Handler.java b/shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/blockchain/Net_AddBlock_Handler.java index b64b6c6..48f71bf 100644 --- a/shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/blockchain/Net_AddBlock_Handler.java +++ b/shine-server-net-protocol/src/main/java/server/logic/ws_protocol/JSON/handlers/blockchain/Net_AddBlock_Handler.java @@ -279,7 +279,7 @@ public final class Net_AddBlock_Handler implements JsonMessageHandler { be.setToLogin(t.toLogin()); be.setToBchName(t.toBchName()); be.setToBlockNumber(t.toBlockGlobalNumber()); - be.setToBlockHash(t.toBlockHasheBytes()); + be.setToBlockHash(t.toBlockHashBytes()); } // edit helper (optional): если TEXT_EDIT — это "редактирование блока цели"