Trait ValidatedState

Source
pub trait ValidatedState<TYPES: NodeType>:
    Serialize
    + DeserializeOwned
    + Debug
    + Default
    + PartialEq
    + Eq
    + Send
    + Sync
    + Clone {
    type Error: Error + Debug + Send + Sync;
    type Instance: InstanceState;
    type Delta: StateDelta;
    type Time: ConsensusTime;

    // Required methods
    fn validate_and_apply_header(
        &self,
        instance: &Self::Instance,
        parent_leaf: &Leaf2<TYPES>,
        proposed_header: &TYPES::BlockHeader,
        payload_byte_len: u32,
        version: Version,
        view_number: u64,
    ) -> impl Future<Output = Result<(Self, Self::Delta), Self::Error>> + Send;
    fn from_header(block_header: &TYPES::BlockHeader) -> Self;
    fn genesis(instance: &Self::Instance) -> (Self, Self::Delta);
    fn on_commit(&self);
}
Expand description

Abstraction over the state that blocks modify

This trait represents the behaviors that the ‘global’ ledger state must have:

  • A defined error type (Error)
  • The type of block that modifies this type of state (BlockPayload(ValidatedStates:: BlockPayload))
  • The ability to validate that a block header is actually a valid extension of this state and produce a new state, with the modifications from the block applied

(validate_and_apply_header)

Required Associated Types§

Source

type Error: Error + Debug + Send + Sync

The error type for this particular type of ledger state

Source

type Instance: InstanceState

The type of the instance-level state this state is associated with

Source

type Delta: StateDelta

The type of the state delta this state is associated with.

Source

type Time: ConsensusTime

Time compatibility needed for reward collection

Required Methods§

Source

fn validate_and_apply_header( &self, instance: &Self::Instance, parent_leaf: &Leaf2<TYPES>, proposed_header: &TYPES::BlockHeader, payload_byte_len: u32, version: Version, view_number: u64, ) -> impl Future<Output = Result<(Self, Self::Delta), Self::Error>> + Send

Check if the proposed block header is valid and apply it to the state if so.

Returns the new state and state delta.

§Arguments
  • instance - Immutable instance-level state.
§Errors

If the block header is invalid or appending it would lead to an invalid state.

Source

fn from_header(block_header: &TYPES::BlockHeader) -> Self

Construct the state with the given block header.

This can also be used to rebuild the state for catchup.

Source

fn genesis(instance: &Self::Instance) -> (Self, Self::Delta)

Construct a genesis validated state.

Source

fn on_commit(&self)

Gets called to notify the persistence backend that this state has been committed

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§