Trait hotshot::traits::ValidatedState

source ·
pub trait ValidatedState<TYPES>:
    Serialize
    + DeserializeOwned
    + Debug
    + Default
    + PartialEq
    + Eq
    + Send
    + Sync
    + Clone
where TYPES: NodeType,
{ 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 as NodeType>::BlockHeader, vid_common: <VidSchemeType as VidScheme>::Common, version: Version, view_number: u64, ) -> impl Future<Output = Result<(Self, Self::Delta), Self::Error>> + Send; fn from_header(block_header: &<TYPES as NodeType>::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 as NodeType>::BlockHeader, vid_common: <VidSchemeType as VidScheme>::Common, 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 as NodeType>::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

Object Safety§

This trait is not object safe.

Implementors§