pub trait TSafetyRules {
    // Required methods
    fn consensus_state(&mut self) -> Result<ConsensusState, Error>;
    fn initialize(&mut self, proof: &EpochChangeProof) -> Result<(), Error>;
    fn construct_and_sign_vote(
        &mut self,
        vote_proposal: &MaybeSignedVoteProposal
    ) -> Result<Vote, Error>;
    fn sign_proposal(&mut self, block_data: BlockData) -> Result<Block, Error>;
    fn sign_timeout(
        &mut self,
        timeout: &Timeout
    ) -> Result<ConsensusSignature, Error>;

    // Provided methods
    fn start_voting(&mut self, _initialize: bool) -> Result<(), Error> { ... }
    fn stop_voting(&mut self) -> Result<(), Error> { ... }
}
Expand description

Interface for SafetyRules

Required Methods§

source

fn consensus_state(&mut self) -> Result<ConsensusState, Error>

Provides the internal state of SafetyRules for monitoring / debugging purposes. This does not include sensitive data like private keys.

source

fn initialize(&mut self, proof: &EpochChangeProof) -> Result<(), Error>

Initialize SafetyRules using an Epoch ending LedgerInfo, this should map to what was provided in consensus_state. It will be used to initialize the ValidatorSet. This uses a EpochChangeProof because there’s a possibility that consensus migrated to a new epoch but SafetyRules did not.

source

fn construct_and_sign_vote( &mut self, vote_proposal: &MaybeSignedVoteProposal ) -> Result<Vote, Error>

Attempts to vote for a given proposal following the voting rules.

source

fn sign_proposal(&mut self, block_data: BlockData) -> Result<Block, Error>

As the holder of the private key, SafetyRules also signs proposals or blocks. A Block is a signed BlockData along with some additional metadata.

source

fn sign_timeout( &mut self, timeout: &Timeout ) -> Result<ConsensusSignature, Error>

As the holder of the private key, SafetyRules also signs what is effectively a timeout message. This returns the signature for that timeout message.

Provided Methods§

source

fn start_voting(&mut self, _initialize: bool) -> Result<(), Error>

Allow the safety rule to start voting with saved secure data from another node.

source

fn stop_voting(&mut self) -> Result<(), Error>

Stop the safety rule from voting and save secure data.

Implementors§