[][src]Trait safety_rules::TSafetyRules

pub trait TSafetyRules {
    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<Ed25519Signature, Error>; }

Interface for SafetyRules

Required methods

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.

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.

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

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

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.

fn sign_timeout(&mut self, timeout: &Timeout) -> Result<Ed25519Signature, 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.

Loading content...

Implementors

impl TSafetyRules for SafetyRules[src]

Loading content...