Always Propose when empty_block_timeout is reached and remove redundant proposal conditions #1706
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.
We now will always broadcast proposals when
time_since_last_view_change > empty_block_timeout
. This allows us to remove the further check on whether the exponential timeout has yet been reached when proposing (since the latter is always true if the former is true).This means that if there are no consensus timeouts then we expect blocks to regularly be 1 seconds (+ a few ms) apart.
In
timeout()
Ive removed the check onhas_txns()
because transactions will be added toearly_proposal
when created and when received (ifearly_proposal
exists). Whether there are txs in the mempool at this stage is irrelevant.The
minimum_time_left_for_empty_block
variable is useful in a network in which a node is incentivised to add as many txs to their blocks as possible. Since fees are sunk in zq2 I have removed this. Happy to revert if we think it still has use.