Safe Haskell | None |
---|---|
Language | Haskell98 |
Shelley.Spec.Ledger.API.Validation
Description
Interface to the block validation and chain extension logic in the Shelley API.
Documentation
class (ChainData (Block era), AnnotatedData (Block era), ChainData (BHeader (Crypto era)), AnnotatedData (BHeader (Crypto era)), ChainData (NewEpochState era), SerialisableData (NewEpochState era), ChainData (BlockTransitionError era), ChainData (PredicateFailure (CHAIN era))) => ApplyBlock era where Source #
Minimal complete definition
Nothing
Methods
applyTick :: Globals -> NewEpochState era -> SlotNo -> NewEpochState era Source #
Apply the header level ledger transition.
This handles checks and updates that happen on a slot tick, as well as a few header level checks, such as size constraints.
default applyTick :: ShelleyBased era => Globals -> NewEpochState era -> SlotNo -> NewEpochState era Source #
applyBlock :: MonadError (BlockTransitionError era) m => Globals -> NewEpochState era -> Block era -> m (NewEpochState era) Source #
Apply the block level ledger transition.
default applyBlock :: (STS (BBODY era), MonadError (BlockTransitionError era) m) => Globals -> NewEpochState era -> Block era -> m (NewEpochState era) Source #
reapplyBlock :: Globals -> NewEpochState era -> Block era -> NewEpochState era Source #
Re-apply a ledger block to the same state it has been applied to before.
This function does no validation of whether the block applies successfully;
the caller implicitly guarantees that they have previously called
applyBlockTransition
on the same block and that this was successful.
default reapplyBlock :: STS (BBODY era) => Globals -> NewEpochState era -> Block era -> NewEpochState era Source #
Instances
PraosCrypto crypto => ApplyBlock (ShelleyEra crypto) Source # | |
Defined in Shelley.Spec.Ledger.API.Validation Methods applyTick :: Globals -> NewEpochState (ShelleyEra crypto) -> SlotNo -> NewEpochState (ShelleyEra crypto) Source # applyBlock :: MonadError (BlockTransitionError (ShelleyEra crypto)) m => Globals -> NewEpochState (ShelleyEra crypto) -> Block (ShelleyEra crypto) -> m (NewEpochState (ShelleyEra crypto)) Source # reapplyBlock :: Globals -> NewEpochState (ShelleyEra crypto) -> Block (ShelleyEra crypto) -> NewEpochState (ShelleyEra crypto) Source # |
newtype TickTransitionError era Source #
Constructors
TickTransitionError [PredicateFailure (TICK era)] |
Instances
newtype BlockTransitionError era Source #
Constructors
BlockTransitionError [PredicateFailure (BBODY era)] |
Instances
chainChecks :: forall era m. (Era era, MonadError (PredicateFailure (CHAIN era)) m) => Globals -> ChainChecksData -> BHeader (Crypto era) -> m () Source #