Trait safety_rules::TSafetyRules
source · 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§
sourcefn consensus_state(&mut self) -> Result<ConsensusState, Error>
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.
sourcefn initialize(&mut self, proof: &EpochChangeProof) -> Result<(), Error>
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.
sourcefn construct_and_sign_vote(
&mut self,
vote_proposal: &MaybeSignedVoteProposal
) -> Result<Vote, Error>
fn construct_and_sign_vote( &mut self, vote_proposal: &MaybeSignedVoteProposal ) -> Result<Vote, Error>
Attempts to vote for a given proposal following the voting rules.
sourcefn sign_proposal(&mut self, block_data: BlockData) -> Result<Block, Error>
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.
sourcefn sign_timeout(
&mut self,
timeout: &Timeout
) -> Result<ConsensusSignature, Error>
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§
sourcefn start_voting(&mut self, _initialize: bool) -> Result<(), Error>
fn start_voting(&mut self, _initialize: bool) -> Result<(), Error>
Allow the safety rule to start voting with saved secure data from another node.
sourcefn stop_voting(&mut self) -> Result<(), Error>
fn stop_voting(&mut self) -> Result<(), Error>
Stop the safety rule from voting and save secure data.