Simplex Block Builder Component #4159
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why this should be merged
This PR introduces the
BlockBuilder
component for Simplex. TheBlockBuilder
is responsible for building blocks when requested by consensus as well as notifying consensus a block is ready to be built.How this works
The
BlockBuilder
struct has two methodsBuildBlock
builds a block when requested by a simplex node.IncomingBlock
notifies consensus that a block is ready to be built. If no blocks are proposed in Simplex, either the Simplex node is faulty(or offline), or there are no blocks to propose. Therefore when IncomingBlock notifies consensus, our node should expect a block proposal. If no proposals arrive within a certain time, our node sends an empty vote and attempts to proceed to the next round.How this was tested
Need to be documented in RELEASES.md?