Skip to content

Commit 3142347

Browse files
authored
Update HIP-1056: Remove middle signature bit (#1262)
1 parent 79f5a84 commit 3142347

File tree

1 file changed

+12
-19
lines changed

1 file changed

+12
-19
lines changed

HIP/hip-1056.md

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -622,22 +622,20 @@ to reconstruct `GossipEvent`s as needed for hashgraph reconstruction from the co
622622
that easy `EventHeader` includes the the `EventCore` that is part of `GossipEvent` and all transactions are defined
623623
as`EventTransaction` which can be used unchanged to construct the original `GossipEvent`.
624624

625-
To save space in each block and in the block stream, the signature in a `GossipEvent` is replaced with a boolean
626-
modeling the middle bit of the signature in the `EventHeader`. Trust that the event is authentic will come from the
627-
block proof for the block containing the event. The `EventHeader` will contain all the data necessary to
628-
reconstruct the `GossipEvent` except for the original signature. The primary space-saving comes from replacing the
629-
`EventDescriptors` used to indicate the parents of each event. If an `EventDescriptor` of a parent points to an
630-
event outside the block, the `EventHeader` will continue to preserve the `EventDescriptor` that points to that
631-
parent event. If the parent is contained within this block, however, the `EventDescriptor` is replaced with a
632-
`uint32` index that indicates which event from the start of the block is the parent event. This index is 0 based.
633-
The first few events from each node in each block will start out with `EventDescriptors` for parents outside the
634-
block. As the index increases, events will begin to have parents in the block. Each `EventDescriptor` is 72 bytes
635-
whereas each `uint32` is 4 bytes. This space-saving is important for networks with low user transaction activity to
625+
To save space in each block and in the block stream, the signature in a `GossipEvent` is removed. Trust that the event
626+
is authentic will come from the block proof for the block containing the event. The `EventHeader` will contain all the
627+
data necessary to reconstruct the `GossipEvent` except for the original signature. The primary space-saving comes from
628+
replacing the`EventDescriptors` used to indicate the parents of each event. If an `EventDescriptor` of a parent points
629+
to an event outside the block, the `EventHeader` will continue to preserve the `EventDescriptor` that points to that
630+
parent event. If the parent is contained within this block, however, the `EventDescriptor` is replaced with a
631+
`uint32` index that indicates which event from the start of the block is the parent event. This index is 0 based.
632+
The first few events from each node in each block will start out with `EventDescriptors` for parents outside the
633+
block. As the index increases, events will begin to have parents in the block. Each `EventDescriptor` is 72 bytes
634+
whereas each `uint32` is 4 bytes. This space-saving is important for networks with low user transaction activity to
636635
minimize the space occupied by events not containing transactions.
637636

638-
To reconstruct the `GossipEvent` from an `EventHeader`, set the signature in the `GossipEvent` to the byte
639-
`(signature_middle_bit ? 255 : 0)`. Then replace each parent reference index with the `EventDescriptor` of the
640-
event at that index within the block. This process is recursive. In order to construct the hash in an
637+
To reconstruct the `GossipEvent` from an `EventHeader`, replace each parent reference index with the `EventDescriptor`
638+
of the event at that index within the block. This process is recursive. In order to construct the hash in an
641639
`EventDescriptor`, the `EventCore` data for the `EventHeader` at the given parent index, along with the
642640
EventDescriptors of the event's parents and transactions in the event, must be serialized and hashed. If the
643641
`EventHeader` contains no event indices for parents, the base case is reached and the `GossipEvent` can be
@@ -661,11 +659,6 @@ message EventHeader {
661659
* A list of references to parent events. <br/>
662660
*/
663661
repeated ParentEventReference parents = 2;
664-
665-
/**
666-
* The middle bit of the node's signature on the event.<br/>
667-
*/
668-
bool signature_middle_bit = 3;
669662
}
670663
671664
/*

0 commit comments

Comments
 (0)