fn compute_state()

in librabft-v2/src/record_store.rs [426:454]


    fn compute_state(
        &self,
        block_hash: BlockHash<Context::HashValue>,
        context: &mut Context,
    ) -> Option<Context::State> {
        let block = self.block(block_hash).unwrap();
        let (previous_state, previous_voters, previous_author) = {
            if block.value.previous_quorum_certificate_hash == self.initial_hash {
                (&self.initial_state, None, Vec::new())
            } else {
                let previous_qc = self
                    .quorum_certificate(block.value.previous_quorum_certificate_hash)
                    .unwrap();
                let voters = previous_qc.value.votes.iter().map(|x| x.0).collect();
                (
                    &previous_qc.value.state,
                    Some(previous_qc.value.author),
                    voters,
                )
            }
        };
        context.compute(
            previous_state,
            block.value.command.clone(),
            block.value.time,
            previous_voters,
            previous_author,
        )
    }