-
Notifications
You must be signed in to change notification settings - Fork 171
Description
The Simplex implementation requires that a node has broadcast both its notarize vote AND the notarization certificate before it can broadcast a finalize vote.
From consensus/src/simplex/actors/voter/round.rs:
// If we haven't broadcast our notarize vote and notarization certificate, return None.if !self.broadcast_notarize || !self.broadcast_notarization {
return None;
}
This is an intentional deviation from the Simplex specification which only requires:
"If have not broadcast nullify(v), broadcast finalize(c,v)"
The spec does not require sending notarize(c,v) or notarization(c,v) before finalize(c,v). Other implementations (Ava Labs, Shoup) also do not have this requirement.
Context
This was identified in #1102 (observations #7 and #9). The current behavior is likely intentional for good reasons (e.g., consistency, observability, or safety), but these reasons are not documented.
Proposed Action
Document in the module-level docs (consensus/src/simplex/mod.rs) under "Deviations from Simplex Consensus" that:
- This requirement exists
- Why it was added (rationale)
- Any implications for liveness or performance
Metadata
Metadata
Assignees
Labels
Type
Projects
Status