[Fix] Lower bound the batch proposal production time #3193
Merged
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.
Motivation
This PR lower bounds the production and signing of batch proposals. Previously this was unguarded, so blocks could be produced as fast as validators could find subdags to commit. This could lead to much shorter block times, especially if malicious validators decide to keep proposals empty to bring down block times.
This is important, because lowering the block time increases the number of blocks produced, which in turn advances the amount of block rewards paid out. The fix is to enforce that the difference in time between an author's proposals must be at least
MAX_BATCH_DELAY_IN_SECS
.Test Plan
Existing tests have been updated to reflect the rule change for a minimum elapsed time between batch proposals.
New tests have also been added to enforce that batch proposals that are created too quickly are not signed.