| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Cardano.Ledger.Shelley.API.Mempool
Description
Interface to the Shelley ledger for the purposes of managing a Shelley mempool.
Synopsis
- applyTx ∷ ApplyTx era ⇒ Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → Either (ApplyTxError era) (MempoolState era, Validated (Tx 'TopTx era))
- applyTxWithFullValidation ∷ ApplyTx era ⇒ Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → Either (ApplyTxError era) (MempoolState era, ValidatedTx era)
- reapplyValidatedTx ∷ (ApplyTx era, EraGov era) ⇒ Globals → MempoolEnv era → MempoolState era → ValidatedTx era → Either (ApplyTxError era) (MempoolState era)
- reapplyTx ∷ ApplyTx era ⇒ Globals → MempoolEnv era → MempoolState era → Validated (Tx 'TopTx era) → Either (ApplyTxError era) (MempoolState era)
- class (EraTx era, Eq (ApplyTxError era), Show (ApplyTxError era), Typeable (ApplyTxError era), Semigroup (ApplyTxError era), EncCBOR (ApplyTxError era), DecCBOR (ApplyTxError era)) ⇒ ApplyTx era where
- data ApplyTxError era
- mkStAnnTx ∷ EpochInfo (Either Text) → SystemStart → PParams era → UTxO era → Tx 'TopTx era → StAnnTx 'TopTx era
- internalApplyTxWithValidation ∷ ValidationPolicy → Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → Either (ApplyTxError era) (MempoolState era, ValidatedTx era)
- internalReapplyValidatedTx ∷ Globals → MempoolEnv era → MempoolState era → ValidatedTx era → Either (ApplyTxError era) (MempoolState era)
- applyTxValidation ∷ ValidationPolicy → Globals → MempoolEnv era → MempoolState era → StAnnTx 'TopTx era → Either (ApplyTxError era) (MempoolState era, Validated (Tx 'TopTx era))
- data family ApplyTxError era
- data Validated tx
- data ValidatedTx era
- getValidatedTxStAnnTx ∷ ValidatedTx era → StAnnTx 'TopTx era
- getValidatedTxProtocolVersion ∷ ValidatedTx era → ProtVer
- getValidatedTxSlotNo ∷ ValidatedTx era → SlotNo
- extractTx ∷ Validated tx → tx
- extractValidatedTx ∷ EraTx era ⇒ ValidatedTx era → Tx 'TopTx era
- coerceValidated ∷ Coercible a b ⇒ Validated a → Validated b
- translateValidated ∷ TranslateEra era f ⇒ TranslationContext era → Validated (f (PreviousEra era)) → Except (TranslationError era f) (Validated (f era))
- ruleApplyTxValidation ∷ ∀ (rule ∷ Symbol) era. (EraTx era, STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase, Environment (EraRule rule era) ~ LedgerEnv era, State (EraRule rule era) ~ MempoolState era, Signal (EraRule rule era) ~ StAnnTx 'TopTx era) ⇒ ValidationPolicy → Globals → MempoolEnv era → MempoolState era → StAnnTx 'TopTx era → Either (NonEmpty (PredicateFailure (EraRule rule era))) (MempoolState era, ValidatedTx era)
- defaultApplyTxWithValidation ∷ ∀ (rule ∷ Symbol) era. (ApplyTx era, STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase, Environment (EraRule rule era) ~ LedgerEnv era, State (EraRule rule era) ~ MempoolState era, Signal (EraRule rule era) ~ StAnnTx 'TopTx era) ⇒ (NonEmpty (PredicateFailure (EraRule rule era)) → ApplyTxError era) → ValidationPolicy → Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → Either (ApplyTxError era) (MempoolState era, ValidatedTx era)
- defaultReapplyValidatedTx ∷ ∀ (rule ∷ Symbol) era. (ApplyTx era, STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase, Environment (EraRule rule era) ~ LedgerEnv era, State (EraRule rule era) ~ MempoolState era, Signal (EraRule rule era) ~ StAnnTx 'TopTx era) ⇒ (NonEmpty (PredicateFailure (EraRule rule era)) → ApplyTxError era) → Globals → MempoolEnv era → MempoolState era → ValidatedTx era → Either (ApplyTxError era) (MempoolState era)
- type MempoolEnv era = LedgerEnv era
- type MempoolState era = LedgerState era
- unsafeMakeValidated ∷ tx → Validated tx
- unsafeMakeValidatedTx ∷ ApplyTx era ⇒ Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → ValidatedTx era
- mkMempoolEnv ∷ EraGov era ⇒ NewEpochState era → SlotNo → MempoolEnv era
- mkMempoolState ∷ NewEpochState era → MempoolState era
- overNewEpochState ∷ Functor f ⇒ (MempoolState era → f (MempoolState era)) → NewEpochState era → f (NewEpochState era)
Documentation
applyTx ∷ ApplyTx era ⇒ Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → Either (ApplyTxError era) (MempoolState era, Validated (Tx 'TopTx era)) Source #
Deprecated: Use applyTxWithFullValidation instead.
Validate a transaction against a mempool state using default STS options
and return both the new mempool state and a "validated" TxInBlock.
The meaning of being "validated" depends on the era. In general, a
TxInBlock has had all checks run, and can now only fail due to checks
which depend on the state; most notably, that UTxO inputs disappear.
applyTxWithFullValidation ∷ ApplyTx era ⇒ Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → Either (ApplyTxError era) (MempoolState era, ValidatedTx era) Source #
Validate a transaction against a mempool state and return the new
mempool state together with a ValidatedTx
reapplyValidatedTx ∷ (ApplyTx era, EraGov era) ⇒ Globals → MempoolEnv era → MempoolState era → ValidatedTx era → Either (ApplyTxError era) (MempoolState era) Source #
Reapply a previously validated transaction, skipping static checks.
Use the state-derived annotations in StAnnTx if the current protocol version
matches the one in ValidatedTx, otherwise reconstruct `StAnnTx.
If major protocol version has changed from when ValidatedTx
was constructed, then full validation is triggered again.
reapplyTx ∷ ApplyTx era ⇒ Globals → MempoolEnv era → MempoolState era → Validated (Tx 'TopTx era) → Either (ApplyTxError era) (MempoolState era) Source #
Deprecated: Use reapplyValidatedTx instead.
Reapply a previously validated Tx.
This applies the (validated) transaction to a new mempool state. It may fail due to the mempool state changing (for example, a needed output having already been spent). It does not fail due to any static check (such as cryptographic checks).
class (EraTx era, Eq (ApplyTxError era), Show (ApplyTxError era), Typeable (ApplyTxError era), Semigroup (ApplyTxError era), EncCBOR (ApplyTxError era), DecCBOR (ApplyTxError era)) ⇒ ApplyTx era where Source #
Minimal complete definition
mkStAnnTx, internalApplyTxWithValidation, internalReapplyValidatedTx
Associated Types
data ApplyTxError era Source #
Methods
mkStAnnTx ∷ EpochInfo (Either Text) → SystemStart → PParams era → UTxO era → Tx 'TopTx era → StAnnTx 'TopTx era Source #
internalApplyTxWithValidation ∷ ValidationPolicy → Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → Either (ApplyTxError era) (MempoolState era, ValidatedTx era) Source #
Validate a transaction against a mempool state for given STS options.
Warning - This function is only safe when ValidateAll policy is supplied,
otherwise invariant for ValidatedTx could be violated.
It will always be safer to use applyTxWithFullValidation instead.
internalReapplyValidatedTx ∷ Globals → MempoolEnv era → MempoolState era → ValidatedTx era → Either (ApplyTxError era) (MempoolState era) Source #
Reapply a previously validated transaction.
Warning - Should not be used directly. reapplyValidatedTx should be used instead.
applyTxValidation ∷ ValidationPolicy → Globals → MempoolEnv era → MempoolState era → StAnnTx 'TopTx era → Either (ApplyTxError era) (MempoolState era, Validated (Tx 'TopTx era)) Source #
Deprecated: Use internalApplyTxWithValidation instead.
Validate a transaction against a mempool state for given STS options, and return the new mempool state, a "validated" 'TxInBlock
Instances
| ApplyTx ShelleyEra Source # | |||||
Defined in Cardano.Ledger.Shelley.API.Mempool Associated Types
Methods mkStAnnTx ∷ EpochInfo (Either Text) → SystemStart → PParams ShelleyEra → UTxO ShelleyEra → Tx 'TopTx ShelleyEra → StAnnTx 'TopTx ShelleyEra Source # internalApplyTxWithValidation ∷ ValidationPolicy → Globals → MempoolEnv ShelleyEra → MempoolState ShelleyEra → Tx 'TopTx ShelleyEra → Either (ApplyTxError ShelleyEra) (MempoolState ShelleyEra, ValidatedTx ShelleyEra) Source # internalReapplyValidatedTx ∷ Globals → MempoolEnv ShelleyEra → MempoolState ShelleyEra → ValidatedTx ShelleyEra → Either (ApplyTxError ShelleyEra) (MempoolState ShelleyEra) Source # applyTxValidation ∷ ValidationPolicy → Globals → MempoolEnv ShelleyEra → MempoolState ShelleyEra → StAnnTx 'TopTx ShelleyEra → Either (ApplyTxError ShelleyEra) (MempoolState ShelleyEra, Validated (Tx 'TopTx ShelleyEra)) Source # | |||||
data family ApplyTxError era Source #
Instances
Deprecated: Use ValidatedTx instead.
A newtype which indicates that a transaction has been validated against some chain state.
data ValidatedTx era Source #
A transaction that has been validated against some chain state.
Instances
| NFData (StAnnTx 'TopTx era) ⇒ NFData (ValidatedTx era) Source # | |||||
Defined in Cardano.Ledger.Shelley.API.Mempool Methods rnf ∷ ValidatedTx era → () # | |||||
| Generic (ValidatedTx era) Source # | |||||
Defined in Cardano.Ledger.Shelley.API.Mempool Associated Types
Methods from ∷ ValidatedTx era → Rep (ValidatedTx era) x # to ∷ Rep (ValidatedTx era) x → ValidatedTx era # | |||||
| Show (StAnnTx 'TopTx era) ⇒ Show (ValidatedTx era) Source # | |||||
Defined in Cardano.Ledger.Shelley.API.Mempool Methods showsPrec ∷ Int → ValidatedTx era → ShowS # show ∷ ValidatedTx era → String # showList ∷ [ValidatedTx era] → ShowS # | |||||
| Eq (StAnnTx 'TopTx era) ⇒ Eq (ValidatedTx era) Source # | |||||
Defined in Cardano.Ledger.Shelley.API.Mempool Methods (==) ∷ ValidatedTx era → ValidatedTx era → Bool # (/=) ∷ ValidatedTx era → ValidatedTx era → Bool # | |||||
| NoThunks (StAnnTx 'TopTx era) ⇒ NoThunks (ValidatedTx era) Source # | |||||
Defined in Cardano.Ledger.Shelley.API.Mempool | |||||
| type Rep (ValidatedTx era) Source # | |||||
Defined in Cardano.Ledger.Shelley.API.Mempool type Rep (ValidatedTx era) = D1 ('MetaData "ValidatedTx" "Cardano.Ledger.Shelley.API.Mempool" "cardano-ledger-shelley-1.19.0.0-inplace" 'False) (C1 ('MetaCons "ValidatedTx" 'PrefixI 'True) (S1 ('MetaSel ('Just "vtStAnnTx") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (StAnnTx 'TopTx era)) :*: (S1 ('MetaSel ('Just "vtProtocolVersion") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ProtVer) :*: S1 ('MetaSel ('Just "vtSlotNo") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 SlotNo)))) | |||||
getValidatedTxStAnnTx ∷ ValidatedTx era → StAnnTx 'TopTx era Source #
getValidatedTxSlotNo ∷ ValidatedTx era → SlotNo Source #
extractTx ∷ Validated tx → tx Source #
Deprecated: Use extractValidatedTx
Extract the underlying unvalidated Tx.
extractValidatedTx ∷ EraTx era ⇒ ValidatedTx era → Tx 'TopTx era Source #
coerceValidated ∷ Coercible a b ⇒ Validated a → Validated b Source #
Deprecated: Validated is deprecated; switch to ValidatedTx.
translateValidated ∷ TranslateEra era f ⇒ TranslationContext era → Validated (f (PreviousEra era)) → Except (TranslationError era f) (Validated (f era)) Source #
Deprecated: Translation of Validated does not make sense. It must be fully re-validated in a new era
Translate a validated transaction across eras.
This is not a TranslateEra instance since Validated is not itself
era-parametrised.
ruleApplyTxValidation ∷ ∀ (rule ∷ Symbol) era. (EraTx era, STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase, Environment (EraRule rule era) ~ LedgerEnv era, State (EraRule rule era) ~ MempoolState era, Signal (EraRule rule era) ~ StAnnTx 'TopTx era) ⇒ ValidationPolicy → Globals → MempoolEnv era → MempoolState era → StAnnTx 'TopTx era → Either (NonEmpty (PredicateFailure (EraRule rule era))) (MempoolState era, ValidatedTx era) Source #
defaultApplyTxWithValidation ∷ ∀ (rule ∷ Symbol) era. (ApplyTx era, STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase, Environment (EraRule rule era) ~ LedgerEnv era, State (EraRule rule era) ~ MempoolState era, Signal (EraRule rule era) ~ StAnnTx 'TopTx era) ⇒ (NonEmpty (PredicateFailure (EraRule rule era)) → ApplyTxError era) → ValidationPolicy → Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → Either (ApplyTxError era) (MempoolState era, ValidatedTx era) Source #
A default implementation for internalApplyTxWithValidation, parameterised by the
STS rule to run and a wrapper that lifts predicate failures into the era's
ApplyTxError.
defaultReapplyValidatedTx ∷ ∀ (rule ∷ Symbol) era. (ApplyTx era, STS (EraRule rule era), BaseM (EraRule rule era) ~ ShelleyBase, Environment (EraRule rule era) ~ LedgerEnv era, State (EraRule rule era) ~ MempoolState era, Signal (EraRule rule era) ~ StAnnTx 'TopTx era) ⇒ (NonEmpty (PredicateFailure (EraRule rule era)) → ApplyTxError era) → Globals → MempoolEnv era → MempoolState era → ValidatedTx era → Either (ApplyTxError era) (MempoolState era) Source #
A default implementation for internalReapplyValidatedTx, parameterised by the
STS rule to run and a wrapper that lifts predicate failures into the era's
ApplyTxError.
Exports for testing
type MempoolEnv era = LedgerEnv era Source #
type MempoolState era = LedgerState era Source #
unsafeMakeValidated ∷ tx → Validated tx Source #
Deprecated: Use unsafeMakeValidatedTx instead.
unsafeMakeValidatedTx ∷ ApplyTx era ⇒ Globals → MempoolEnv era → MempoolState era → Tx 'TopTx era → ValidatedTx era Source #
Build a ValidatedTx without running the LEDGER rule - should only be used for testing.
Exports for compatibility
mkMempoolEnv ∷ EraGov era ⇒ NewEpochState era → SlotNo → MempoolEnv era Source #
Construct the environment used to validate transactions from the full ledger state.
Note that this function also takes a slot. During slot validation, the slot given here is the slot of the block containing the transactions. This slot is used for quite a number of things, but in general these do not determine the validity of the transaction. There are two exceptions:
- Each transaction has a ttl (time-to-live) value. If the slot is beyond this value, then the transaction is invalid.
- If the transaction contains a protocol update proposal, then it may only be included until a certain number of slots before the end of the epoch. A protocol update proposal submitted after this is considered invalid.
mkMempoolState ∷ NewEpochState era → MempoolState era Source #
Construct a mempool state from the wider ledger state.
The given mempool state may then be evolved using applyTxs, but should be
regenerated when the ledger state gets updated (e.g. through application of
a new block).
overNewEpochState ∷ Functor f ⇒ (MempoolState era → f (MempoolState era)) → NewEpochState era → f (NewEpochState era) Source #
Transform a function over mempool states to one over the full
NewEpochState.