-
Notifications
You must be signed in to change notification settings - Fork 153
HIP-1056: Block Streams #1056
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HIP-1056: Block Streams #1056
Conversation
Signed-off-by: Joseph S <121976561+jsync-swirlds@users.noreply.github.com>
✅ Deploy Preview for hedera-hips ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
Signed-off-by: Joseph S <121976561+jsync-swirlds@users.noreply.github.com>
Signed-off-by: Joseph S <121976561+jsync-swirlds@users.noreply.github.com>
Signed-off-by: Nana Essilfie-Conduah <nana@swirldslabs.com> Signed-off-by: Joseph S <121976561+jsync-swirlds@users.noreply.github.com>
Signed-off-by: Nana Essilfie-Conduah <nana@swirldslabs.com> Signed-off-by: Joseph S <121976561+jsync-swirlds@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few typos and wording suggestions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got to Design for Verifiability
. Will finish the rest when I can.
Should this HIP at all mention/reference the behaviors around consensus node to block node communication? Will this information be covered in the block node HIP? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got further, but still not done.
This is currently documented in the block node codebase, and should be included, to the extent appropriate, in the forthcoming "Block Node" HIP. That HIP will cover all of the Block Node APIs, not just the publishBlockStream API used by consensus nodes. |
Addressing a lot of these in the next 1-2 weeks. |
Update HIP with details of - Update `EventDescriptor` index replacement with correct integer size - Add identical bool flag that can be used to highlight that a state change wrote the same value for a given entity, in which case the `MapChangeValue` value can be optimized - Update block proof description with 8 leaf logic - Add `TraceData` block item to capture trace data, initially smart contract `EVMTraceData` only. Also update description and protobuf - Update Smart Contract Service protobuf with optimization and simplification of output using an `EVMActivity` - Update images with changes to block streams items and merkle trees Signed-off-by: Nana Essilfie-Conduah <nana@swirldslabs.com> Signed-off-by: Joseph S <121976561+jsync-swirlds@users.noreply.github.com>
Signed-off-by: Nana Essilfie-Conduah <nana@swirldslabs.com> Signed-off-by: Joseph S <121976561+jsync-swirlds@users.noreply.github.com>
f40d3ef
to
eeb9e68
Compare
Signed-off-by: Nana Essilfie-Conduah <nana@swirldslabs.com> Signed-off-by: Joseph S <121976561+jsync-swirlds@users.noreply.github.com>
8acbd37
to
e3b190a
Compare
Signed-off-by: Michael Garber <michael.garber@hashgraph.com>
All conversations appear to be resolved. If they are not, we will continue the discussion on this page after the merge
Abstract
This HIP introduces a new output data format for consensus nodes, called Block Streams, that replaces the existing
event streams, record streams, state files, and signature files with one single stream.
Each block within the block stream is a self-contained entity, including every event and all transactions that were
part of the block, the state changes as a result of those transactions, and a
network signature (using a BLS threshold signature scheme we call TSS) that proves the block was signed by a
threshold of the network.
By including state changes, downstream services can seamlessly maintain and verify state alongside consensus nodes. This
enhancement fosters greater transparency and trust within the Hedera network. Any downstream service can independently
rebuild and verify the state of consensus nodes at the time of the block, verified by the TSS network signature. Using
this state, they can provide additional services such as state proofs, state snapshots, and more.
With the event information within blocks, downstream services can be reconstructed and the hashgraph algorithm replayed,
permitting anyone to verify the correct execution of the consensus algorithm and removes the need for the extra event
stream. In doing so Hedera users gain comprehensive visibility into network activities through an easily consumable
format that can be delivered with low latency.
A key design criteria is for the block stream to be easily consumed by any programming language, and with minimal
complexity or dependencies. For example, state data can be utilized for basic queries without having to reconstruct a
merkle tree.
Block streams are an upgrade to the existing RecordStream V6. Block streams restructure and aggregate the multiple
record types in record streams, including
EventStream
,RecordStream
, and Hedera state data to produce a singleunified stream of
items
.The key enhancements offered by block streams include:
single cohesive data stream.
consensus and state changes.
consensus nodes are clearly specified, paving the way for future implementations and greater client diversity.
With the adoption of block streams, data output by Hedera consensus nodes will be consolidated into a single, verifiable
chronicle of the network, thereby strengthening the integrity and transparency of the Hedera ecosystem.