spec: algorithm clarifications and changes around L29 #605
Replies: 4 comments
-
Some additional context on this: cometbft/cometbft#1309. This covers specifically the case when This issue was closed because I was unable to write a test unit that covers this scenario in Comet. |
Beta Was this translation helpful? Give feedback.
-
With the time I realized that this pseudo-code is very influenced by the implementation. In order to implement PBTS, we removed that possibility (voting the |
Beta Was this translation helpful? Give feedback.
-
So, is it safe to prevote the local The probable reason for having this condition in the pseudo-code, up to Comet v1.x at least, is that it saves us the need for receiving the full value (block) re-proposed in round |
Beta Was this translation helpful? Give feedback.
-
A more conservative solution, which presumes that the threshold of failures
In this case, the third clause If this is not the case, we are clearly in a situation where we have This is indeed an interesting point. |
Beta Was this translation helpful? Give feedback.
-
We had a discussion around the case where
lockedRoundp = vr ∧ lockedValuep != v
here as it should only happen if we accept equivocating votes.@milosevic clarified:
The condition
lockedValuep = v
is probably not needed for the correctness as the important part is having2f+1
prevotes for some value in the higher or equal round to thelockedRoundp
. I cannot recall why we have added this condition as it would basically allow a process that have locked valuev
in higher round than thevalidRoundp
to prevote for it. But this is actually not really needed for the correctness and can be seen as optimisation but it is probably insignificant and should be removed so it does not create confusion.Concretly the proposal is to change to:
And the case where
lockedRoundp = vr ∧ lockedValuep != v
should have been caught by equivocation system, making it impossible to reach L28 in this case. Nevertheless in the code we will check for this case and not prevote, neitherid(v)
nornil
Beta Was this translation helpful? Give feedback.
All reactions