You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our QBFT mechanism does not currently implement round change justifications. I believe we do round changes mostly correct with pr and pv but do not provide or verify the justifications. Early discussion with SSV team was that justifications are piggybacked on round change messages.
"The content of a ROUND-CHANGE message sent by a node (that’s current round is r) is <ROUND-CHANGE, λ, r+1, pr, pv>, where pr indicates the highest round in which a quorum of PREPARE messages has been received, and pv indicates the value which was included in those PREPARE messages."
What they dont say here is we also need to piggyback the round change justification - as per the original paper here https://arxiv.org/pdf/2002.03613 (Section 4.4).
Anchor sends round change messages and identifies pr and pv - it does not piggyback justifications.
Expected Behaviour
We should consider a quorum of round change messages to be justified if:
All of the messages in the quorum have prepared round and prepared value of none.
Justification has a quorum of valid prepare messages provided with greatest pr.
The leader must carry out verification of the justification message and then send this with the proposal. Other committee members must validate the justification before sending prepare.
Steps to resolve
The consensus logic needs to be implemented to achieve this but we will also have to make sure we're doing it the same way as go-ssv to prevent interop or logic issues.
The text was updated successfully, but these errors were encountered:
Description
Our QBFT mechanism does not currently implement round change justifications. I believe we do round changes mostly correct with pr and pv but do not provide or verify the justifications. Early discussion with SSV team was that justifications are piggybacked on round change messages.
It's worth reading the QBFT spec located here https://github.com/ssvlabs/ssv/blob/main/ibft/IBFT.md but snip below
"The content of a ROUND-CHANGE message sent by a node (that’s current round is r) is <ROUND-CHANGE, λ, r+1, pr, pv>, where pr indicates the highest round in which a quorum of PREPARE messages has been received, and pv indicates the value which was included in those PREPARE messages."
What they dont say here is we also need to piggyback the round change justification - as per the original paper here https://arxiv.org/pdf/2002.03613 (Section 4.4).
Here is, I think, the relevant section of the SSV go code:
https://github.com/ssvlabs/ssv/blob/main/protocol/v2/qbft/instance/round_change.go#L430
Present Behaviour
Anchor sends round change messages and identifies pr and pv - it does not piggyback justifications.
Expected Behaviour
We should consider a quorum of round change messages to be justified if:
The leader must carry out verification of the justification message and then send this with the proposal. Other committee members must validate the justification before sending prepare.
Steps to resolve
The consensus logic needs to be implemented to achieve this but we will also have to make sure we're doing it the same way as go-ssv to prevent interop or logic issues.
The text was updated successfully, but these errors were encountered: