Skip to main content

hotmint_consensus/
network.rs

1use hotmint_types::epoch::EpochNumber;
2use hotmint_types::evidence::EquivocationProof;
3use hotmint_types::{ConsensusMessage, ValidatorId, ValidatorSet};
4
5/// Message type for the consensus channel: `(sender_id, message)`.
6pub type MsgSender = tokio::sync::mpsc::Sender<(Option<ValidatorId>, ConsensusMessage)>;
7pub type MsgReceiver = tokio::sync::mpsc::Receiver<(Option<ValidatorId>, ConsensusMessage)>;
8
9pub trait NetworkSink: Send + Sync {
10    fn broadcast(&self, msg: ConsensusMessage);
11    fn send_to(&self, target: ValidatorId, msg: ConsensusMessage);
12    /// Notify the network layer of a validator set change (epoch transition).
13    /// Default is no-op for test stubs.
14    fn on_epoch_change(&self, _epoch: EpochNumber, _new_validator_set: &ValidatorSet) {}
15
16    /// Broadcast equivocation evidence to all peers.
17    /// Default is no-op for test stubs.
18    fn broadcast_evidence(&self, _proof: &EquivocationProof) {}
19}