Skip to content
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

dBFT 2.0 liveness issue #1

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open

dBFT 2.0 liveness issue #1

wants to merge 6 commits into from

Conversation

AnnaShaleva
Copy link
Owner

No description provided.

tla/issue.md Outdated
@@ -0,0 +1,150 @@
# dBFT 2.0 formal modelling and the liveness problem investigation

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dBFT 2.1

Easy as that.

tla/issue.md Outdated

### Summary or problem description

This issue is aimed to emphasize the dBFT 2.0 liveness lock problem mentioned in

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is triggered by the ...

tla/issue.md Outdated

This issue is aimed to emphasize the dBFT 2.0 liveness lock problem mentioned in
https://github.com/neo-project/neo/issues/2029#issuecomment-725612388 and in the
set of other related issues, PRs and papers with the help of TLA+ formal

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mentioned in link and other discussions in issues and PRs. We've used TLA+ formal modeling tool to analyze dBFT 2.0 behaviour.

tla/issue.md Outdated
https://github.com/neo-project/neo/issues/2029#issuecomment-725612388 and in the
set of other related issues, PRs and papers with the help of TLA+ formal
modelling tool. In this issue we'll present the formal algorithm specification
and discuss the model checking results.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... specification with a set of identified problems and propose ways to fix them in so-called dBFT 2.1.

tla/issue.md Outdated
### dBFT 2.0 formal models

We've created two models of dBFT 2.0 algorithm in TLA+. Please, visit the
[corresponding PR](https://github.com/nspcc-dev/dbft/pull/65), consider reading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better (perma)link merged docs/files.

tla/issue.md Outdated
commit or do change view) completely depends on the message receiving order.

It should be noted that this kind of deadlock is possible in the 7-nodes network scenario
(TODO: run simple model with 7 good nodes). Moreover, we've faced with exactly this kind

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I doubt 4-7 should be mentioned, it's the same protocol with the same basic behavior.

@AnnaShaleva AnnaShaleva force-pushed the issue branch 2 times, most recently from 4c23da1 to 5fbc016 Compare February 22, 2023 09:57
tla/issue.md Outdated
### Further work

The whole idea of TLA+ dBFT modelling was to reveal and avoid the liveness lock
problems so that we've got a troubleproofly operating consensus algorithm in our

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

troubleproofly?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

normally?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replaced.

tla/issue.md Outdated
1. Collect and process the community feedback on proposed TLA+ dBFT 2.0 and 2.1
specifications, fix the models (in case of any bugs found).
2. Implement the improved dBFT 2.1 algorithm at the code level.
3. Create TLA+ specification and investigate liveness problems of the dBFT 3.0

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

any potential problems

tla/issue.md Outdated
any model deadlock: the malicious node keep sending messages if possible to escape
from the liveness lock. Moreover, the presence of faulty nodes significantly
increases the states graph size, so that it takes quite a long time to evaluate
the whole set of possible model behaviours.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haven't we checked this completely?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we have for both scenarious when primary and non-primary is faulty. So I probably have to remove the last sentence.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I still have doubts about it and not sure whether it works correctly. I really expected this faulty model to end up in a deadlock.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've rephrased this sentence, see the latest commit.

AnnaShaleva pushed a commit that referenced this pull request Mar 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants