Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Cardano.Ledger.Shelley.API.Validation
Description
Interface to the block validation and chain extension logic in the Shelley API.
Synopsis
- class (EraGov era, EraSegWits era) ⇒ ApplyBlock era where
- applyBlock ∷ SingEP ep → ValidationPolicy → Globals → NewEpochState era → Block BHeaderView era → (NewEpochState era, [PredicateFailure (EraRule "BBODY" era)], [Event (EraRule "BBODY" era)])
- applyTick ∷ SingEP ep → Globals → NewEpochState era → SlotNo → (NewEpochState era, [Event (EraRule "TICK" era)])
- applyBlockEither ∷ ApplyBlock era ⇒ SingEP ep → ValidationPolicy → Globals → NewEpochState era → Block BHeaderView era → Either (BlockTransitionError era) (NewEpochState era, [Event (EraRule "BBODY" era)])
- applyBlockEitherNoEvents ∷ ApplyBlock era ⇒ ValidationPolicy → Globals → NewEpochState era → Block BHeaderView era → Either (BlockTransitionError era) (NewEpochState era)
- applyBlockNoValidaton ∷ ApplyBlock era ⇒ Globals → NewEpochState era → Block BHeaderView era → NewEpochState era
- applyTickNoEvents ∷ ApplyBlock era ⇒ Globals → NewEpochState era → SlotNo → NewEpochState era
- newtype TickTransitionError era = TickTransitionError (NonEmpty (PredicateFailure (EraRule "TICK" era)))
- newtype BlockTransitionError era = BlockTransitionError (NonEmpty (PredicateFailure (EraRule "BBODY" era)))
- chainChecks ∷ ∀ m. MonadError ChainPredicateFailure m ⇒ Version → ChainChecksPParams → BHeaderView → m ()
Documentation
class (EraGov era, EraSegWits era) ⇒ ApplyBlock era where Source #
Minimal complete definition
Nothing
Methods
applyBlock ∷ SingEP ep → ValidationPolicy → Globals → NewEpochState era → Block BHeaderView era → (NewEpochState era, [PredicateFailure (EraRule "BBODY" era)], [Event (EraRule "BBODY" era)]) Source #
Run the BBODY
rule with globalAssertionPolicy
. This function always succeeds, but
whenever validation is turned on it is necessary to check for presence of predicate failures
before a call can be marked successful. Therefore it is recommended to call applyBlockEither
instead.
default applyBlock ∷ (STS (EraRule "BBODY" era), BaseM (EraRule "BBODY" era) ~ ShelleyBase, Environment (EraRule "BBODY" era) ~ BbodyEnv era, State (EraRule "BBODY" era) ~ ShelleyBbodyState era, Signal (EraRule "BBODY" era) ~ Block BHeaderView era, State (EraRule "LEDGERS" era) ~ LedgerState era) ⇒ SingEP ep → ValidationPolicy → Globals → NewEpochState era → Block BHeaderView era → (NewEpochState era, [PredicateFailure (EraRule "BBODY" era)], [Event (EraRule "BBODY" era)]) Source #
applyTick ∷ SingEP ep → Globals → NewEpochState era → SlotNo → (NewEpochState era, [Event (EraRule "TICK" era)]) Source #
Run the TICK
rule with globalAssertionPolicy
and without any validation, since it can't
fail anyways.
default applyTick ∷ (STS (EraRule "TICK" era), BaseM (EraRule "TICK" era) ~ ShelleyBase, Environment (EraRule "TICK" era) ~ (), State (EraRule "TICK" era) ~ NewEpochState era, Signal (EraRule "TICK" era) ~ SlotNo) ⇒ SingEP ep → Globals → NewEpochState era → SlotNo → (NewEpochState era, [Event (EraRule "TICK" era)]) Source #
Instances
ApplyBlock ShelleyEra Source # | |
Defined in Cardano.Ledger.Shelley.API.Validation Methods applyBlock ∷ ∀ (ep ∷ EventPolicy). SingEP ep → ValidationPolicy → Globals → NewEpochState ShelleyEra → Block BHeaderView ShelleyEra → (NewEpochState ShelleyEra, [PredicateFailure (EraRule "BBODY" ShelleyEra)], [Event (EraRule "BBODY" ShelleyEra)]) Source # applyTick ∷ ∀ (ep ∷ EventPolicy). SingEP ep → Globals → NewEpochState ShelleyEra → SlotNo → (NewEpochState ShelleyEra, [Event (EraRule "TICK" ShelleyEra)]) Source # |
applyBlockEither ∷ ApplyBlock era ⇒ SingEP ep → ValidationPolicy → Globals → NewEpochState era → Block BHeaderView era → Either (BlockTransitionError era) (NewEpochState era, [Event (EraRule "BBODY" era)]) Source #
Same as applyBlock
, except it produces a Left when there are failures present and Right
with result otherwise.
applyBlockEitherNoEvents ∷ ApplyBlock era ⇒ ValidationPolicy → Globals → NewEpochState era → Block BHeaderView era → Either (BlockTransitionError era) (NewEpochState era) Source #
applyBlockNoValidaton ∷ ApplyBlock era ⇒ Globals → NewEpochState era → Block BHeaderView 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.
applyTickNoEvents ∷ ApplyBlock era ⇒ Globals → NewEpochState era → SlotNo → NewEpochState era Source #
Same as applyTick
, but do not retain any ledger events
newtype TickTransitionError era Source #
Constructors
TickTransitionError (NonEmpty (PredicateFailure (EraRule "TICK" era))) |
Instances
newtype BlockTransitionError era Source #
Constructors
BlockTransitionError (NonEmpty (PredicateFailure (EraRule "BBODY" era))) |
Instances
Arguments
∷ ∀ m. MonadError ChainPredicateFailure m | |
⇒ Version | Max major protocol version |
→ ChainChecksPParams | |
→ BHeaderView | |
→ m () |