Fix ibft not mining bug when network split on waiting for commit mess… #10
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.
Description
Jury IBFT consensus would not restore to mining in some network split use cases.
Suppose, proposer received enough prepare messages from other nodes, locked the validate state, and missed enough commit message, then the round change. The magic happen, the whole network would not mine at all. The only way to fix is to restart the whole network validator nodes, which is unacceptable.
This PR would fixed it, since we unlock the validate state when a new round change happen, then new propose could be handled properly.
By the way, we add IBFT message validation in validate state, which could prevent some faulty node attacks.
Changes include
Checklist
Testing