in librabft-v2/src/record_store.rs [611:634]
fn proposed_block(
&self,
pacemaker: &dyn Pacemaker<Context>,
) -> Option<(BlockHash<Context::HashValue>, Round, Context::Author)> {
if self.epoch_id != pacemaker.active_epoch()
|| self.current_round != pacemaker.active_round()
{
// Pacemaker is behind. We have already cleaned up proposals at this round.
return None;
}
if let Some(leader) = pacemaker.active_leader() {
match &self.current_proposed_block {
None => None,
Some(hash) => {
let block = self.block(*hash).unwrap();
assert_eq!(block.value.round, self.current_round);
assert_eq!(block.value.author, leader);
Some((*hash, block.value.round, block.value.author))
}
}
} else {
None
}
}