The basic case is described in #1464 but sometimes node doesn't know that there is a gap in proposals.
Example:
A gossips proposal at height 8, whole cluster gets the proposal.
A gossips proposal at height 10 but node D doesn't get proposal.
A goes offline.
Whole cluster has proposal 8 of A but D doesn't know that there is newer proposal than 8 for D. It means that we need to find a way to inform D about missing proposal. One of possible solutions is to send lastMajorityHeight together with other proposals so for example if D gets proposal from B with information that lastMajorityHeight is 10 then in the next round of MajorityStateChooser it sees that B calculated majority at 10 so it must have received proposal from A at 10 (by calculating diff).
The basic case is described in #1464 but sometimes node doesn't know that there is a gap in proposals.
Example:
A
gossips proposal at height8
, whole cluster gets the proposal.A
gossips proposal at height10
but nodeD
doesn't get proposal.A
goes offline.8
ofA
butD
doesn't know that there is newer proposal than8
forD
. It means that we need to find a way to informD
about missing proposal. One of possible solutions is to sendlastMajorityHeight
together with other proposals so for example ifD
gets proposal fromB
with information that lastMajorityHeight is10
then in the next round of MajorityStateChooser it sees thatB
calculated majority at10
so it must have received proposal fromA
at10
(by calculating diff).