pub enum ConsensusOutMessage {
Vote(Vote),
Proposal {
block: Block,
proposer: Address,
round: u64,
view: u64,
high_qc_view: u64,
timeout_certificate: Option<TimeoutCertificate>,
no_endorsement_certificate: Option<NoEndorsementCertificate>,
},
Timeout(TimeoutMsg),
NoEndorsement(NoEndorsementMsg),
}Expand description
Messages the consensus engine needs to broadcast via gossipsub. Uses an mpsc channel to avoid a circular crate dependency: tenzro-consensus cannot import tenzro-network.
Variants§
Vote(Vote)
A vote this node cast that peers must receive to form quorum
Proposal
A block proposal the leader is broadcasting to all validators.
timeout_certificate is Some(_) only when the leader is recovering
from a view timeout — it carries 2f+1 timeout signatures from the
previous view so peers can verify the new view was legitimately
abandoned (Jolteon vote rule, DiemBFT v4 §3.5).
no_endorsement_certificate is Some(_) when the leader is proposing
a new block at view N+1 after view N timed out — it carries f+1
no-endorsement signatures from view N proving the predecessor’s QC
was not withheld. MonadBFT (arXiv:2502.20692) — closes the tail-fork
MEV vulnerability. If absent, receivers must require the proposal to
repropose the high-tip block; a fresh block with neither a NEC nor
a high-tip parent is rejected.
high_qc_view is the leader’s local highest-Prepare-QC view at the
moment of proposing (#171, Aptos SyncInfo pattern). Receivers use it to
fast-forward their own high_qc_view if the proposer is ahead, which
shrinks the gap a lagging replica has to close before it can vote.
Must satisfy high_qc_view < view.
Fields
timeout_certificate: Option<TimeoutCertificate>no_endorsement_certificate: Option<NoEndorsementCertificate>Timeout(TimeoutMsg)
A pacemaker timeout broadcast emitted on local view-timer expiry. Carries the sender’s current view so a lagging peer can fast-forward (DiemBFT v4 §3.5 backward-sync channel; phase 1 of #164).
NoEndorsement(NoEndorsementMsg)
A no-endorsement attestation broadcast emitted on local view-timer expiry. Aggregates into an f+1 NoEndorsementCertificate that the next leader attaches to its proposal when proposing a new block (MonadBFT, arXiv:2502.20692).
Trait Implementations§
Source§impl Clone for ConsensusOutMessage
impl Clone for ConsensusOutMessage
Source§fn clone(&self) -> ConsensusOutMessage
fn clone(&self) -> ConsensusOutMessage
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more