Skip to content
This repository was archived by the owner on Feb 23, 2022. It is now read-only.

PBTS: new minimal set of changes in consensus algorithm#369

Merged
josef-widder merged 6 commits intomasterfrom
cason/pbts
Nov 27, 2021
Merged

PBTS: new minimal set of changes in consensus algorithm#369
josef-widder merged 6 commits intomasterfrom
cason/pbts

Conversation

@cason
Copy link

@cason cason commented Nov 25, 2021

This new specification of changes required the consensus algorithm only addresses established points, already discussed between the participants of this project.

Other questions, such as adaptive synchronous parameters (MSGDELAY in particular) and changes on timeout_propose, will be addressed in issues.

Copy link
Contributor

@josef-widder josef-widder left a comment

Choose a reason for hiding this comment

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

Looks great, thanks!
I left a couple of minor changes and comments we might add before merging.

Daniel and others added 2 commits November 26, 2021 20:51
Co-authored-by: Josef Widder <44643235+josef-widder@users.noreply.github.com>
@josef-widder
Copy link
Contributor

We merge this minimal version. Follow-up issues: #370, #371, tendermint/tendermint#7946

@josef-widder josef-widder merged commit 339304f into master Nov 27, 2021
@josef-widder josef-widder deleted the cason/pbts branch November 27, 2021 10:18
In other words, we don't need to verify whether `v` is a timely proposal because at least `f + 1` processes judged `v` as `timely` in a previous round,
and because, since `v` was re-proposed as a `validValue` (line 16), `v.time` has not being updated from its original proposal.

**All other rules remains unchanged.**
Copy link
Contributor

@williambanfield williambanfield Nov 29, 2021

Choose a reason for hiding this comment

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

If I'm understanding correctly, this means that we should not evaluate timely on line 36, even when validRound is -1. I think this is fine, since we're seeing the +2/3 prevotes, but it could get mention in this design.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think you meant "we should not evaluate timely on line 36", right?

Copy link
Author

Choose a reason for hiding this comment

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

It is a good point. I didn't mention lines 36 (Prevote -> Precommit) and 49 (Precommit -> Commit) because I think we don't need any additional logic there. But indeed we are assuming that untimely proposals can be accepted, provided that justified by a proper quorum of Prevotes.

Copy link
Contributor

Choose a reason for hiding this comment

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

sorry for the typo, thank you for the correction @josef-widder

Copy link
Contributor

Choose a reason for hiding this comment

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

But indeed we are assuming that untimely proposals can be accepted, provided that justified by a proper quorum of Prevotes.

I am not sure what you mean. I guess if there is an untimely proposal that is justified by a proper quorum of prevotes that means we are outside the n>3f assumption, no? (or outside the synchrony assumption)

Copy link
Author

Choose a reason for hiding this comment

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

Yes, not properly explained. We can accept a Proposal when it contains a v.time that, at the moment at which it was received, would not be considered timely. But we do that when the Proposal has a POLRound > 0, meaning that in a previous round (in the past), v.timewas considered timely once received by a correct process.

In other words, v.time may not be timely now, as several communication steps passed since when it was originally proposed, but it was considered timely when it was originally proposed by at least a correct process, which is attested by the Proof-of-Lock associated to the received Proposal.

@williambanfield
Copy link
Contributor

This looks like a great change, thanks for putting this together.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

3 participants