vrf-pbft 0.1.0

A Rust implementation of VRF-enhanced PBFT consensus protocol
Documentation
use crate::types::{Role, Stage};

pub type Result<T> = std::result::Result<T, Error>;

#[derive(Debug, thiserror::Error)]
pub enum Error {
    #[error("vrf error: {0}")]
    Vrf(String),

    #[error("invalid stage transition: from {from:?} to {to:?}")]
    InvalidStage { from: Stage, to: Stage },

    #[error("insufficient votes: need {needed}, got {got}")]
    InsufficientVotes { needed: u64, got: u64 },

    #[error("missing block in round {0}")]
    MissingBlock(u64),

    #[error("node not in role {0:?}")]
    WrongRole(Role),

    #[error("no proposer elected for round {0}")]
    NoProposer(u64),

    #[error("not enough nodes: need {needed}, have {have}")]
    NotEnoughNodes { needed: usize, have: usize },
}