Trait hotshot_types::traits::states::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,
vid_common: VidCommon,
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
Required Associated Types§
sourcetype Error: Error + Debug + Send + Sync
type Error: Error + Debug + Send + Sync
The error type for this particular type of ledger state
sourcetype Instance: InstanceState
type Instance: InstanceState
The type of the instance-level state this state is associated with
sourcetype Delta: StateDelta
type Delta: StateDelta
The type of the state delta this state is associated with.
sourcetype Time: ConsensusTime
type Time: ConsensusTime
Time compatibility needed for reward collection
Required Methods§
sourcefn validate_and_apply_header(
&self,
instance: &Self::Instance,
parent_leaf: &Leaf2<TYPES>,
proposed_header: &TYPES::BlockHeader,
vid_common: VidCommon,
version: Version,
view_number: u64,
) -> impl Future<Output = Result<(Self, Self::Delta), Self::Error>> + Send
fn validate_and_apply_header( &self, instance: &Self::Instance, parent_leaf: &Leaf2<TYPES>, proposed_header: &TYPES::BlockHeader, vid_common: VidCommon, version: Version, view_number: u64, ) -> impl Future<Output = Result<(Self, Self::Delta), Self::Error>> + Send
sourcefn from_header(block_header: &TYPES::BlockHeader) -> Self
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.
Object Safety§
This trait is not object safe.