-
Notifications
You must be signed in to change notification settings - Fork 4
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
formal-models: extend dBFT with additional post-commit phase #116
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #116 +/- ##
=======================================
Coverage 63.31% 63.31%
=======================================
Files 27 27
Lines 1510 1510
=======================================
Hits 956 956
Misses 489 489
Partials 65 65 ☔ View full report in Codecov by Sentry. |
37c84f9
to
7125076
Compare
2b6c4cf
to
0095b94
Compare
0095b94
to
847c944
Compare
Ready for review. @roman-khimov, I think the best way to review it is to check the |
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.
Looks OK otherwise.
847c944
to
5124528
Compare
Close #111. The additional step is called RMSendAck and allows to send Ack message once enough Commit messages are received. Block can be accepted only if BFT number of Ack messages are collected. Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
5124528
to
de50c7b
Compare
@roman-khimov, ready for review. |
Close #111.
The extended model includes additional
ackSent
RM state and additionalAck
message type. Speaking in terms of anti-MEV solution,preBlock
approval corresponds to thecommitSent
RM state, and the only possible transition fromcommitSent
stage is to move toackSent
stage viaAck
message sending (Block
approval).Presented model has the same 4-nodes deadlock scenario with a single dead node described in neo-project/neo-modules#792 (comment):
Also, the presented model has additional
TerminatingFourNodesDeadlock
action that allows infinite stuttering in the described deadlock to enable further model checking. If this action is enabled, then one more deadlock is being found (not related to the additional phase), this deadlock is yet another face of the same liveness lock described previously:TODO: