{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-orphans #-}
module Cardano.Ledger.Dijkstra.Tx (
DijkstraTx (..),
Tx (..),
validateDijkstraNativeScript,
) where
import Cardano.Ledger.Allegra.TxBody (AllegraEraTxBody (..), StrictMaybe)
import Cardano.Ledger.Alonzo.Tx (
AlonzoEraTx,
IsValid (..),
)
import Cardano.Ledger.BaseTypes (StrictMaybe (..), integralToBounded)
import Cardano.Ledger.Binary (
Annotator,
DecCBOR (..),
EncCBOR (..),
Encoding,
ToCBOR (..),
decodeNullStrictMaybe,
encodeListLen,
encodeNullStrictMaybe,
serialize,
)
import Cardano.Ledger.Binary.Coders (Decode (..), Encode (..), decode, encode, (!>), (<*!))
import Cardano.Ledger.Conway.Tx (AlonzoEraTx (..), Tx (..), getConwayMinFeeTx)
import Cardano.Ledger.Core
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
import Cardano.Ledger.Dijkstra.Scripts (
DijkstraEraScript,
DijkstraNativeScript,
evalDijkstraNativeScript,
)
import Cardano.Ledger.Dijkstra.TxAuxData ()
import Cardano.Ledger.Dijkstra.TxBody (DijkstraEraTxBody (..))
import Cardano.Ledger.Dijkstra.TxWits ()
import Cardano.Ledger.Keys.WitVKey (witVKeyHash)
import Cardano.Ledger.MemoBytes (EqRaw (..))
import Cardano.Ledger.Shelley.Tx (shelleyTxEqRaw)
import Control.DeepSeq (NFData (..), deepseq)
import Control.Monad.Trans.Fail.String (errorFail)
import qualified Data.ByteString.Lazy as LBS
import Data.Int (Int64)
import qualified Data.Set as Set
import Data.Typeable (Typeable)
import Data.Word (Word32)
import GHC.Generics (Generic)
import Lens.Micro (Lens', SimpleGetter, lens, to, (^.))
import NoThunks.Class (InspectHeap (..), NoThunks)
data DijkstraTx l era where
DijkstraTx ::
{ forall era. DijkstraTx TopTx era -> TxBody TopTx era
dtBody :: !(TxBody TopTx era)
, forall era. DijkstraTx TopTx era -> TxWits era
dtWits :: !(TxWits era)
, forall era. DijkstraTx TopTx era -> IsValid
dtIsValid :: !IsValid
, forall era. DijkstraTx TopTx era -> StrictMaybe (TxAuxData era)
dtAuxData :: !(StrictMaybe (TxAuxData era))
} ->
DijkstraTx TopTx era
DijkstraSubTx ::
{ forall era. DijkstraTx SubTx era -> TxBody SubTx era
dstBody :: !(TxBody SubTx era)
, forall era. DijkstraTx SubTx era -> TxWits era
dstWits :: !(TxWits era)
, forall era. DijkstraTx SubTx era -> StrictMaybe (TxAuxData era)
dstAuxData :: !(StrictMaybe (TxAuxData era))
} ->
DijkstraTx SubTx era
deriving instance EraTx era => Eq (DijkstraTx l era)
deriving instance EraTx era => Show (DijkstraTx l era)
instance
( EraTx era
, NFData (TxWits era)
, NFData (TxAuxData era)
) =>
NFData (DijkstraTx l era)
where
rnf :: DijkstraTx l era -> ()
rnf DijkstraTx {StrictMaybe (TxAuxData era)
TxBody TopTx era
TxWits era
IsValid
dtBody :: forall era. DijkstraTx TopTx era -> TxBody TopTx era
dtWits :: forall era. DijkstraTx TopTx era -> TxWits era
dtIsValid :: forall era. DijkstraTx TopTx era -> IsValid
dtAuxData :: forall era. DijkstraTx TopTx era -> StrictMaybe (TxAuxData era)
dtBody :: TxBody TopTx era
dtWits :: TxWits era
dtIsValid :: IsValid
dtAuxData :: StrictMaybe (TxAuxData era)
..} =
TxBody TopTx era
dtBody TxBody TopTx era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
TxWits era
dtWits TxWits era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
IsValid
dtIsValid IsValid -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
StrictMaybe (TxAuxData era) -> ()
forall a. NFData a => a -> ()
rnf StrictMaybe (TxAuxData era)
dtAuxData
rnf DijkstraSubTx {StrictMaybe (TxAuxData era)
TxBody SubTx era
TxWits era
dstBody :: forall era. DijkstraTx SubTx era -> TxBody SubTx era
dstWits :: forall era. DijkstraTx SubTx era -> TxWits era
dstAuxData :: forall era. DijkstraTx SubTx era -> StrictMaybe (TxAuxData era)
dstBody :: TxBody SubTx era
dstWits :: TxWits era
dstAuxData :: StrictMaybe (TxAuxData era)
..} =
TxBody SubTx era
dstBody TxBody SubTx era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
TxWits era
dstWits TxWits era -> () -> ()
forall a b. NFData a => a -> b -> b
`deepseq`
StrictMaybe (TxAuxData era) -> ()
forall a. NFData a => a -> ()
rnf StrictMaybe (TxAuxData era)
dstAuxData
deriving via
InspectHeap (DijkstraTx l era)
instance
( Era era
, Typeable l
) =>
NoThunks (DijkstraTx l era)
instance (EraTx era, Typeable l) => ToCBOR (DijkstraTx l era) where
toCBOR :: DijkstraTx l era -> Encoding
toCBOR = forall era t. (Era era, EncCBOR t) => t -> Encoding
toEraCBOR @era
instance EraTx era => EncCBOR (DijkstraTx l era) where
encCBOR :: DijkstraTx l era -> Encoding
encCBOR = DijkstraTx l era -> Encoding
forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
DijkstraTx l era -> Encoding
toCBORForMempoolSubmission
instance (EraTx era, Typeable l) => DecCBOR (Annotator (DijkstraTx l era)) where
decCBOR :: forall s. Decoder s (Annotator (DijkstraTx l era))
decCBOR = forall (l :: TxLevel) era a.
(Typeable l, HasCallStack) =>
(STxBothLevels l era -> a) -> a
withSTxBothLevels @l ((STxBothLevels l (ZonkAny 0)
-> Decoder s (Annotator (DijkstraTx l era)))
-> Decoder s (Annotator (DijkstraTx l era)))
-> (STxBothLevels l (ZonkAny 0)
-> Decoder s (Annotator (DijkstraTx l era)))
-> Decoder s (Annotator (DijkstraTx l era))
forall a b. (a -> b) -> a -> b
$ \case
STxBothLevels l (ZonkAny 0)
STopTx ->
Decode (Closed Dense) (Annotator (DijkstraTx l era))
-> Decoder s (Annotator (DijkstraTx l era))
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (Annotator (DijkstraTx l era))
-> Decoder s (Annotator (DijkstraTx l era)))
-> Decode (Closed Dense) (Annotator (DijkstraTx l era))
-> Decoder s (Annotator (DijkstraTx l era))
forall a b. (a -> b) -> a -> b
$
Decode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx l era)
-> Decode
(Closed Dense)
(Annotator
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx l era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx l era)
-> Decode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx l era)
forall t. t -> Decode (Closed Dense) t
RecD TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx l era
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era
forall era.
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era
DijkstraTx)
Decode
(Closed Dense)
(Annotator
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx l era))
-> Decode (Closed (ZonkAny 3)) (Annotator (TxBody TopTx era))
-> Decode
(Closed Dense)
(Annotator
(TxWits era
-> IsValid -> StrictMaybe (TxAuxData era) -> DijkstraTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode (Closed (ZonkAny 3)) (Annotator (TxBody TopTx era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator
(TxWits era
-> IsValid -> StrictMaybe (TxAuxData era) -> DijkstraTx l era))
-> Decode (Closed (ZonkAny 2)) (Annotator (TxWits era))
-> Decode
(Closed Dense)
(Annotator
(IsValid -> StrictMaybe (TxAuxData era) -> DijkstraTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode (Closed (ZonkAny 2)) (Annotator (TxWits era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator
(IsValid -> StrictMaybe (TxAuxData era) -> DijkstraTx l era))
-> Decode (Closed (ZonkAny 1)) (Annotator IsValid)
-> Decode
(Closed Dense)
(Annotator (StrictMaybe (TxAuxData era) -> DijkstraTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode (Closed (ZonkAny 1)) IsValid
-> Decode (Closed (ZonkAny 1)) (Annotator IsValid)
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann Decode (Closed (ZonkAny 1)) IsValid
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator (StrictMaybe (TxAuxData era) -> DijkstraTx l era))
-> Decode (Closed Dense) (Annotator (StrictMaybe (TxAuxData era)))
-> Decode (Closed Dense) (Annotator (DijkstraTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! (forall s. Decoder s (Annotator (StrictMaybe (TxAuxData era))))
-> Decode (Closed Dense) (Annotator (StrictMaybe (TxAuxData era)))
forall t. (forall s. Decoder s t) -> Decode (Closed Dense) t
D (StrictMaybe (Annotator (TxAuxData era))
-> Annotator (StrictMaybe (TxAuxData era))
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a.
Monad m =>
StrictMaybe (m a) -> m (StrictMaybe a)
sequence (StrictMaybe (Annotator (TxAuxData era))
-> Annotator (StrictMaybe (TxAuxData era)))
-> Decoder s (StrictMaybe (Annotator (TxAuxData era)))
-> Decoder s (Annotator (StrictMaybe (TxAuxData era)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (Annotator (TxAuxData era))
-> Decoder s (StrictMaybe (Annotator (TxAuxData era)))
forall s a. Decoder s a -> Decoder s (StrictMaybe a)
decodeNullStrictMaybe Decoder s (Annotator (TxAuxData era))
forall s. Decoder s (Annotator (TxAuxData era))
forall a s. DecCBOR a => Decoder s a
decCBOR)
STxBothLevels l (ZonkAny 0)
SSubTx ->
Decode (Closed Dense) (Annotator (DijkstraTx l era))
-> Decoder s (Annotator (DijkstraTx l era))
forall t (w :: Wrapped) s. Typeable t => Decode w t -> Decoder s t
decode (Decode (Closed Dense) (Annotator (DijkstraTx l era))
-> Decoder s (Annotator (DijkstraTx l era)))
-> Decode (Closed Dense) (Annotator (DijkstraTx l era))
-> Decoder s (Annotator (DijkstraTx l era))
forall a b. (a -> b) -> a -> b
$
Decode
(Closed Dense)
(TxBody SubTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx l era)
-> Decode
(Closed Dense)
(Annotator
(TxBody SubTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx l era))
forall t1 (w :: Wrapped).
Typeable t1 =>
Decode w t1 -> Decode w (Annotator t1)
Ann ((TxBody SubTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx l era)
-> Decode
(Closed Dense)
(TxBody SubTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx l era)
forall t. t -> Decode (Closed Dense) t
RecD TxBody SubTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx l era
TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era
forall era.
TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era
DijkstraSubTx)
Decode
(Closed Dense)
(Annotator
(TxBody SubTx era
-> TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx l era))
-> Decode (Closed (ZonkAny 5)) (Annotator (TxBody SubTx era))
-> Decode
(Closed Dense)
(Annotator
(TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode (Closed (ZonkAny 5)) (Annotator (TxBody SubTx era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator
(TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx l era))
-> Decode (Closed (ZonkAny 4)) (Annotator (TxWits era))
-> Decode
(Closed Dense)
(Annotator (StrictMaybe (TxAuxData era) -> DijkstraTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! Decode (Closed (ZonkAny 4)) (Annotator (TxWits era))
forall t (w :: Wrapped). DecCBOR t => Decode w t
From
Decode
(Closed Dense)
(Annotator (StrictMaybe (TxAuxData era) -> DijkstraTx l era))
-> Decode (Closed Dense) (Annotator (StrictMaybe (TxAuxData era)))
-> Decode (Closed Dense) (Annotator (DijkstraTx l era))
forall a t (w1 :: Wrapped) (d :: Density).
(Typeable a, Typeable t) =>
Decode w1 (Annotator (a -> t))
-> Decode (Closed d) (Annotator a) -> Decode w1 (Annotator t)
<*! (forall s. Decoder s (Annotator (StrictMaybe (TxAuxData era))))
-> Decode (Closed Dense) (Annotator (StrictMaybe (TxAuxData era)))
forall t. (forall s. Decoder s t) -> Decode (Closed Dense) t
D (StrictMaybe (Annotator (TxAuxData era))
-> Annotator (StrictMaybe (TxAuxData era))
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
forall (m :: * -> *) a.
Monad m =>
StrictMaybe (m a) -> m (StrictMaybe a)
sequence (StrictMaybe (Annotator (TxAuxData era))
-> Annotator (StrictMaybe (TxAuxData era)))
-> Decoder s (StrictMaybe (Annotator (TxAuxData era)))
-> Decoder s (Annotator (StrictMaybe (TxAuxData era)))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (Annotator (TxAuxData era))
-> Decoder s (StrictMaybe (Annotator (TxAuxData era)))
forall s a. Decoder s a -> Decoder s (StrictMaybe a)
decodeNullStrictMaybe Decoder s (Annotator (TxAuxData era))
forall s. Decoder s (Annotator (TxAuxData era))
forall a s. DecCBOR a => Decoder s a
decCBOR)
instance HasEraTxLevel DijkstraTx DijkstraEra where
toSTxLevel :: forall (l :: TxLevel).
DijkstraTx l DijkstraEra -> STxLevel l DijkstraEra
toSTxLevel DijkstraTx {} = STxLevel l DijkstraEra
STxBothLevels TopTx DijkstraEra
forall era. STxBothLevels TopTx era
STopTx
toSTxLevel DijkstraSubTx {} = STxLevel l DijkstraEra
STxBothLevels SubTx DijkstraEra
forall era. STxBothLevels SubTx era
SSubTx
instance HasEraTxLevel Tx DijkstraEra where
toSTxLevel :: forall (l :: TxLevel). Tx l DijkstraEra -> STxLevel l DijkstraEra
toSTxLevel = DijkstraTx l DijkstraEra -> STxLevel l DijkstraEra
DijkstraTx l DijkstraEra -> STxBothLevels l DijkstraEra
forall (l :: TxLevel).
DijkstraTx l DijkstraEra -> STxLevel l DijkstraEra
forall (t :: TxLevel -> * -> *) era (l :: TxLevel).
HasEraTxLevel t era =>
t l era -> STxLevel l era
toSTxLevel (DijkstraTx l DijkstraEra -> STxBothLevels l DijkstraEra)
-> (Tx l DijkstraEra -> DijkstraTx l DijkstraEra)
-> Tx l DijkstraEra
-> STxBothLevels l DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Tx l DijkstraEra -> DijkstraTx l DijkstraEra
forall (l :: TxLevel). Tx l DijkstraEra -> DijkstraTx l DijkstraEra
unDijkstraTx
mkBasicDijkstraTx :: TxBody l DijkstraEra -> DijkstraTx l DijkstraEra
mkBasicDijkstraTx :: forall (l :: TxLevel).
TxBody l DijkstraEra -> DijkstraTx l DijkstraEra
mkBasicDijkstraTx TxBody l DijkstraEra
txBody =
case TxBody l DijkstraEra -> STxLevel l DijkstraEra
forall (l :: TxLevel).
TxBody l DijkstraEra -> STxLevel l DijkstraEra
forall (t :: TxLevel -> * -> *) era (l :: TxLevel).
HasEraTxLevel t era =>
t l era -> STxLevel l era
toSTxLevel TxBody l DijkstraEra
txBody of
STxLevel l DijkstraEra
STxBothLevels l DijkstraEra
STopTx ->
TxBody TopTx DijkstraEra
-> TxWits DijkstraEra
-> IsValid
-> StrictMaybe (TxAuxData DijkstraEra)
-> DijkstraTx TopTx DijkstraEra
forall era.
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era
DijkstraTx
TxBody l DijkstraEra
TxBody TopTx DijkstraEra
txBody
TxWits DijkstraEra
AlonzoTxWits DijkstraEra
forall a. Monoid a => a
mempty
(Bool -> IsValid
IsValid Bool
True)
StrictMaybe (TxAuxData DijkstraEra)
StrictMaybe (AlonzoTxAuxData DijkstraEra)
forall a. StrictMaybe a
SNothing
STxLevel l DijkstraEra
STxBothLevels l DijkstraEra
SSubTx ->
TxBody SubTx DijkstraEra
-> TxWits DijkstraEra
-> StrictMaybe (TxAuxData DijkstraEra)
-> DijkstraTx SubTx DijkstraEra
forall era.
TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era
DijkstraSubTx
TxBody l DijkstraEra
TxBody SubTx DijkstraEra
txBody
TxWits DijkstraEra
AlonzoTxWits DijkstraEra
forall a. Monoid a => a
mempty
StrictMaybe (TxAuxData DijkstraEra)
StrictMaybe (AlonzoTxAuxData DijkstraEra)
forall a. StrictMaybe a
SNothing
instance EraTx DijkstraEra where
newtype Tx l DijkstraEra = MkDijkstraTx {forall (l :: TxLevel). Tx l DijkstraEra -> DijkstraTx l DijkstraEra
unDijkstraTx :: DijkstraTx l DijkstraEra}
deriving newtype (Tx l DijkstraEra -> Tx l DijkstraEra -> Bool
(Tx l DijkstraEra -> Tx l DijkstraEra -> Bool)
-> (Tx l DijkstraEra -> Tx l DijkstraEra -> Bool)
-> Eq (Tx l DijkstraEra)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (l :: TxLevel). Tx l DijkstraEra -> Tx l DijkstraEra -> Bool
$c== :: forall (l :: TxLevel). Tx l DijkstraEra -> Tx l DijkstraEra -> Bool
== :: Tx l DijkstraEra -> Tx l DijkstraEra -> Bool
$c/= :: forall (l :: TxLevel). Tx l DijkstraEra -> Tx l DijkstraEra -> Bool
/= :: Tx l DijkstraEra -> Tx l DijkstraEra -> Bool
Eq, Int -> Tx l DijkstraEra -> ShowS
[Tx l DijkstraEra] -> ShowS
Tx l DijkstraEra -> String
(Int -> Tx l DijkstraEra -> ShowS)
-> (Tx l DijkstraEra -> String)
-> ([Tx l DijkstraEra] -> ShowS)
-> Show (Tx l DijkstraEra)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (l :: TxLevel). Int -> Tx l DijkstraEra -> ShowS
forall (l :: TxLevel). [Tx l DijkstraEra] -> ShowS
forall (l :: TxLevel). Tx l DijkstraEra -> String
$cshowsPrec :: forall (l :: TxLevel). Int -> Tx l DijkstraEra -> ShowS
showsPrec :: Int -> Tx l DijkstraEra -> ShowS
$cshow :: forall (l :: TxLevel). Tx l DijkstraEra -> String
show :: Tx l DijkstraEra -> String
$cshowList :: forall (l :: TxLevel). [Tx l DijkstraEra] -> ShowS
showList :: [Tx l DijkstraEra] -> ShowS
Show, Tx l DijkstraEra -> ()
(Tx l DijkstraEra -> ()) -> NFData (Tx l DijkstraEra)
forall a. (a -> ()) -> NFData a
forall (l :: TxLevel). Tx l DijkstraEra -> ()
$crnf :: forall (l :: TxLevel). Tx l DijkstraEra -> ()
rnf :: Tx l DijkstraEra -> ()
NFData, Context -> Tx l DijkstraEra -> IO (Maybe ThunkInfo)
Proxy (Tx l DijkstraEra) -> String
(Context -> Tx l DijkstraEra -> IO (Maybe ThunkInfo))
-> (Context -> Tx l DijkstraEra -> IO (Maybe ThunkInfo))
-> (Proxy (Tx l DijkstraEra) -> String)
-> NoThunks (Tx l DijkstraEra)
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
forall (l :: TxLevel).
Typeable l =>
Context -> Tx l DijkstraEra -> IO (Maybe ThunkInfo)
forall (l :: TxLevel).
Typeable l =>
Proxy (Tx l DijkstraEra) -> String
$cnoThunks :: forall (l :: TxLevel).
Typeable l =>
Context -> Tx l DijkstraEra -> IO (Maybe ThunkInfo)
noThunks :: Context -> Tx l DijkstraEra -> IO (Maybe ThunkInfo)
$cwNoThunks :: forall (l :: TxLevel).
Typeable l =>
Context -> Tx l DijkstraEra -> IO (Maybe ThunkInfo)
wNoThunks :: Context -> Tx l DijkstraEra -> IO (Maybe ThunkInfo)
$cshowTypeOf :: forall (l :: TxLevel).
Typeable l =>
Proxy (Tx l DijkstraEra) -> String
showTypeOf :: Proxy (Tx l DijkstraEra) -> String
NoThunks, Typeable (Tx l DijkstraEra)
Typeable (Tx l DijkstraEra) =>
(Tx l DijkstraEra -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l DijkstraEra) -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l DijkstraEra] -> Size)
-> ToCBOR (Tx l DijkstraEra)
Tx l DijkstraEra -> Encoding
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l DijkstraEra] -> Size
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l DijkstraEra) -> Size
forall a.
Typeable a =>
(a -> Encoding)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy a -> Size)
-> ((forall t. ToCBOR t => Proxy t -> Size) -> Proxy [a] -> Size)
-> ToCBOR a
forall (l :: TxLevel). Typeable l => Typeable (Tx l DijkstraEra)
forall (l :: TxLevel). Typeable l => Tx l DijkstraEra -> Encoding
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l DijkstraEra] -> Size
forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l DijkstraEra) -> Size
$ctoCBOR :: forall (l :: TxLevel). Typeable l => Tx l DijkstraEra -> Encoding
toCBOR :: Tx l DijkstraEra -> Encoding
$cencodedSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l DijkstraEra) -> Size
encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy (Tx l DijkstraEra) -> Size
$cencodedListSizeExpr :: forall (l :: TxLevel).
Typeable l =>
(forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l DijkstraEra] -> Size
encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size)
-> Proxy [Tx l DijkstraEra] -> Size
ToCBOR, Tx l DijkstraEra -> Encoding
(Tx l DijkstraEra -> Encoding) -> EncCBOR (Tx l DijkstraEra)
forall a. (a -> Encoding) -> EncCBOR a
forall (l :: TxLevel). Tx l DijkstraEra -> Encoding
$cencCBOR :: forall (l :: TxLevel). Tx l DijkstraEra -> Encoding
encCBOR :: Tx l DijkstraEra -> Encoding
EncCBOR)
deriving ((forall x. Tx l DijkstraEra -> Rep (Tx l DijkstraEra) x)
-> (forall x. Rep (Tx l DijkstraEra) x -> Tx l DijkstraEra)
-> Generic (Tx l DijkstraEra)
forall x. Rep (Tx l DijkstraEra) x -> Tx l DijkstraEra
forall x. Tx l DijkstraEra -> Rep (Tx l DijkstraEra) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (l :: TxLevel) x.
Rep (Tx l DijkstraEra) x -> Tx l DijkstraEra
forall (l :: TxLevel) x.
Tx l DijkstraEra -> Rep (Tx l DijkstraEra) x
$cfrom :: forall (l :: TxLevel) x.
Tx l DijkstraEra -> Rep (Tx l DijkstraEra) x
from :: forall x. Tx l DijkstraEra -> Rep (Tx l DijkstraEra) x
$cto :: forall (l :: TxLevel) x.
Rep (Tx l DijkstraEra) x -> Tx l DijkstraEra
to :: forall x. Rep (Tx l DijkstraEra) x -> Tx l DijkstraEra
Generic)
mkBasicTx :: forall (l :: TxLevel). TxBody l DijkstraEra -> Tx l DijkstraEra
mkBasicTx = DijkstraTx l DijkstraEra -> Tx l DijkstraEra
forall (l :: TxLevel). DijkstraTx l DijkstraEra -> Tx l DijkstraEra
MkDijkstraTx (DijkstraTx l DijkstraEra -> Tx l DijkstraEra)
-> (TxBody l DijkstraEra -> DijkstraTx l DijkstraEra)
-> TxBody l DijkstraEra
-> Tx l DijkstraEra
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TxBody l DijkstraEra -> DijkstraTx l DijkstraEra
forall (l :: TxLevel).
TxBody l DijkstraEra -> DijkstraTx l DijkstraEra
mkBasicDijkstraTx
bodyTxL :: forall (l :: TxLevel).
Lens' (Tx l DijkstraEra) (TxBody l DijkstraEra)
bodyTxL = (DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
dijkstraTxL ((DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra))
-> ((TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> (TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> Tx l DijkstraEra
-> f (Tx l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TxBody l DijkstraEra -> f (TxBody l DijkstraEra))
-> DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxBody l era -> f (TxBody l era))
-> DijkstraTx l era -> f (DijkstraTx l era)
bodyDijkstraTxL
{-# INLINE bodyTxL #-}
witsTxL :: forall (l :: TxLevel).
Lens' (Tx l DijkstraEra) (TxWits DijkstraEra)
witsTxL = (DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
dijkstraTxL ((DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra))
-> ((AlonzoTxWits DijkstraEra -> f (AlonzoTxWits DijkstraEra))
-> DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> (AlonzoTxWits DijkstraEra -> f (AlonzoTxWits DijkstraEra))
-> Tx l DijkstraEra
-> f (Tx l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (TxWits DijkstraEra -> f (TxWits DijkstraEra))
-> DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra)
(AlonzoTxWits DijkstraEra -> f (AlonzoTxWits DijkstraEra))
-> DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxWits era -> f (TxWits era))
-> DijkstraTx l era -> f (DijkstraTx l era)
witsDijkstraTxL
{-# INLINE witsTxL #-}
auxDataTxL :: forall (l :: TxLevel).
Lens' (Tx l DijkstraEra) (StrictMaybe (TxAuxData DijkstraEra))
auxDataTxL = (DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
dijkstraTxL ((DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra))
-> ((StrictMaybe (AlonzoTxAuxData DijkstraEra)
-> f (StrictMaybe (AlonzoTxAuxData DijkstraEra)))
-> DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> (StrictMaybe (AlonzoTxAuxData DijkstraEra)
-> f (StrictMaybe (AlonzoTxAuxData DijkstraEra)))
-> Tx l DijkstraEra
-> f (Tx l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (StrictMaybe (TxAuxData DijkstraEra)
-> f (StrictMaybe (TxAuxData DijkstraEra)))
-> DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra)
(StrictMaybe (AlonzoTxAuxData DijkstraEra)
-> f (StrictMaybe (AlonzoTxAuxData DijkstraEra)))
-> DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era)))
-> DijkstraTx l era -> f (DijkstraTx l era)
auxDataDijkstraTxL
{-# INLINE auxDataTxL #-}
sizeTxF :: forall (l :: TxLevel).
HasCallStack =>
SimpleGetter (Tx l DijkstraEra) Word32
sizeTxF = (DijkstraTx l DijkstraEra -> Const r (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> Const r (Tx l DijkstraEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
dijkstraTxL ((DijkstraTx l DijkstraEra -> Const r (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> Const r (Tx l DijkstraEra))
-> ((Word32 -> Const r Word32)
-> DijkstraTx l DijkstraEra -> Const r (DijkstraTx l DijkstraEra))
-> (Word32 -> Const r Word32)
-> Tx l DijkstraEra
-> Const r (Tx l DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Word32 -> Const r Word32)
-> DijkstraTx l DijkstraEra -> Const r (DijkstraTx l DijkstraEra)
SimpleGetter (DijkstraTx l DijkstraEra) Word32
forall era (l :: TxLevel).
EraTx era =>
SimpleGetter (DijkstraTx l era) Word32
sizeDijkstraTxF
{-# INLINE sizeTxF #-}
validateNativeScript :: forall (l :: TxLevel).
Tx l DijkstraEra -> NativeScript DijkstraEra -> Bool
validateNativeScript = Tx l DijkstraEra -> NativeScript DijkstraEra -> Bool
forall era (l :: TxLevel).
(EraTx era, DijkstraEraTxBody era, DijkstraEraScript era,
NativeScript era ~ DijkstraNativeScript era) =>
Tx l era -> NativeScript era -> Bool
validateDijkstraNativeScript
{-# INLINE validateNativeScript #-}
getMinFeeTx :: forall (l :: TxLevel).
PParams DijkstraEra -> Tx l DijkstraEra -> Int -> Coin
getMinFeeTx = PParams DijkstraEra -> Tx l DijkstraEra -> Int -> Coin
forall era (l :: TxLevel).
(EraTx era, AlonzoEraTxWits era, ConwayEraPParams era) =>
PParams era -> Tx l era -> Int -> Coin
getConwayMinFeeTx
bodyDijkstraTxL :: Lens' (DijkstraTx l era) (TxBody l era)
bodyDijkstraTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxBody l era -> f (TxBody l era))
-> DijkstraTx l era -> f (DijkstraTx l era)
bodyDijkstraTxL =
(DijkstraTx l era -> TxBody l era)
-> (DijkstraTx l era -> TxBody l era -> DijkstraTx l era)
-> Lens
(DijkstraTx l era) (DijkstraTx l era) (TxBody l era) (TxBody l era)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
( \case
DijkstraTx {TxBody TopTx era
dtBody :: forall era. DijkstraTx TopTx era -> TxBody TopTx era
dtBody :: TxBody TopTx era
dtBody} -> TxBody l era
TxBody TopTx era
dtBody
DijkstraSubTx {TxBody SubTx era
dstBody :: forall era. DijkstraTx SubTx era -> TxBody SubTx era
dstBody :: TxBody SubTx era
dstBody} -> TxBody l era
TxBody SubTx era
dstBody
)
( \case
tx :: DijkstraTx l era
tx@DijkstraTx {} -> \TxBody l era
x -> DijkstraTx l era
tx {dtBody = x}
tx :: DijkstraTx l era
tx@DijkstraSubTx {} -> \TxBody l era
x -> DijkstraTx l era
tx {dstBody = x}
)
witsDijkstraTxL :: Lens' (DijkstraTx l era) (TxWits era)
witsDijkstraTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxWits era -> f (TxWits era))
-> DijkstraTx l era -> f (DijkstraTx l era)
witsDijkstraTxL =
(DijkstraTx l era -> TxWits era)
-> (DijkstraTx l era -> TxWits era -> DijkstraTx l era)
-> Lens
(DijkstraTx l era) (DijkstraTx l era) (TxWits era) (TxWits era)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
( \case
DijkstraTx {TxWits era
dtWits :: forall era. DijkstraTx TopTx era -> TxWits era
dtWits :: TxWits era
dtWits} -> TxWits era
dtWits
DijkstraSubTx {TxWits era
dstWits :: forall era. DijkstraTx SubTx era -> TxWits era
dstWits :: TxWits era
dstWits} -> TxWits era
dstWits
)
( \case
tx :: DijkstraTx l era
tx@DijkstraTx {} -> \TxWits era
x -> DijkstraTx l era
tx {dtWits = x}
tx :: DijkstraTx l era
tx@DijkstraSubTx {} -> \TxWits era
x -> DijkstraTx l era
tx {dstWits = x}
)
isValidDijkstraTxL :: Lens' (DijkstraTx TopTx era) IsValid
isValidDijkstraTxL :: forall era (f :: * -> *).
Functor f =>
(IsValid -> f IsValid)
-> DijkstraTx TopTx era -> f (DijkstraTx TopTx era)
isValidDijkstraTxL =
(DijkstraTx TopTx era -> IsValid)
-> (DijkstraTx TopTx era -> IsValid -> DijkstraTx TopTx era)
-> Lens
(DijkstraTx TopTx era) (DijkstraTx TopTx era) IsValid IsValid
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (\DijkstraTx {IsValid
dtIsValid :: forall era. DijkstraTx TopTx era -> IsValid
dtIsValid :: IsValid
dtIsValid} -> IsValid
dtIsValid) ((DijkstraTx TopTx era -> IsValid -> DijkstraTx TopTx era)
-> Lens
(DijkstraTx TopTx era) (DijkstraTx TopTx era) IsValid IsValid)
-> (DijkstraTx TopTx era -> IsValid -> DijkstraTx TopTx era)
-> Lens
(DijkstraTx TopTx era) (DijkstraTx TopTx era) IsValid IsValid
forall a b. (a -> b) -> a -> b
$ \DijkstraTx TopTx era
tx IsValid
txIsValid ->
case DijkstraTx TopTx era
tx of
DijkstraTx {} -> DijkstraTx TopTx era
tx {dtIsValid = txIsValid}
auxDataDijkstraTxL :: Lens' (DijkstraTx l era) (StrictMaybe (TxAuxData era))
auxDataDijkstraTxL :: forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era)))
-> DijkstraTx l era -> f (DijkstraTx l era)
auxDataDijkstraTxL =
(DijkstraTx l era -> StrictMaybe (TxAuxData era))
-> (DijkstraTx l era
-> StrictMaybe (TxAuxData era) -> DijkstraTx l era)
-> Lens
(DijkstraTx l era)
(DijkstraTx l era)
(StrictMaybe (TxAuxData era))
(StrictMaybe (TxAuxData era))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
( \case
DijkstraTx {StrictMaybe (TxAuxData era)
dtAuxData :: forall era. DijkstraTx TopTx era -> StrictMaybe (TxAuxData era)
dtAuxData :: StrictMaybe (TxAuxData era)
dtAuxData} -> StrictMaybe (TxAuxData era)
dtAuxData
DijkstraSubTx {StrictMaybe (TxAuxData era)
dstAuxData :: forall era. DijkstraTx SubTx era -> StrictMaybe (TxAuxData era)
dstAuxData :: StrictMaybe (TxAuxData era)
dstAuxData} -> StrictMaybe (TxAuxData era)
dstAuxData
)
( \case
tx :: DijkstraTx l era
tx@DijkstraTx {} -> \StrictMaybe (TxAuxData era)
x -> DijkstraTx l era
tx {dtAuxData = x}
tx :: DijkstraTx l era
tx@DijkstraSubTx {} -> \StrictMaybe (TxAuxData era)
x -> DijkstraTx l era
tx {dstAuxData = x}
)
toCBORForSizeComputation ::
( EncCBOR (TxBody l era)
, EncCBOR (TxWits era)
, EncCBOR (TxAuxData era)
) =>
DijkstraTx l era ->
Encoding
toCBORForSizeComputation :: forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
DijkstraTx l era -> Encoding
toCBORForSizeComputation DijkstraTx l era
tx =
Word -> Encoding
encodeListLen Word
3
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> TxBody l era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR (DijkstraTx l era
tx DijkstraTx l era
-> Getting (TxBody l era) (DijkstraTx l era) (TxBody l era)
-> TxBody l era
forall s a. s -> Getting a s a -> a
^. Getting (TxBody l era) (DijkstraTx l era) (TxBody l era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxBody l era -> f (TxBody l era))
-> DijkstraTx l era -> f (DijkstraTx l era)
bodyDijkstraTxL)
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> TxWits era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR (DijkstraTx l era
tx DijkstraTx l era
-> Getting (TxWits era) (DijkstraTx l era) (TxWits era)
-> TxWits era
forall s a. s -> Getting a s a -> a
^. Getting (TxWits era) (DijkstraTx l era) (TxWits era)
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(TxWits era -> f (TxWits era))
-> DijkstraTx l era -> f (DijkstraTx l era)
witsDijkstraTxL)
Encoding -> Encoding -> Encoding
forall a. Semigroup a => a -> a -> a
<> (TxAuxData era -> Encoding)
-> StrictMaybe (TxAuxData era) -> Encoding
forall a. (a -> Encoding) -> StrictMaybe a -> Encoding
encodeNullStrictMaybe TxAuxData era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR (DijkstraTx l era
tx DijkstraTx l era
-> Getting
(StrictMaybe (TxAuxData era))
(DijkstraTx l era)
(StrictMaybe (TxAuxData era))
-> StrictMaybe (TxAuxData era)
forall s a. s -> Getting a s a -> a
^. Getting
(StrictMaybe (TxAuxData era))
(DijkstraTx l era)
(StrictMaybe (TxAuxData era))
forall (l :: TxLevel) era (f :: * -> *).
Functor f =>
(StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era)))
-> DijkstraTx l era -> f (DijkstraTx l era)
auxDataDijkstraTxL)
sizeDijkstraTxF ::
forall era l.
EraTx era =>
SimpleGetter (DijkstraTx l era) Word32
sizeDijkstraTxF :: forall era (l :: TxLevel).
EraTx era =>
SimpleGetter (DijkstraTx l era) Word32
sizeDijkstraTxF =
(DijkstraTx l era -> Word32)
-> SimpleGetter (DijkstraTx l era) Word32
forall s a. (s -> a) -> SimpleGetter s a
to ((DijkstraTx l era -> Word32)
-> SimpleGetter (DijkstraTx l era) Word32)
-> (DijkstraTx l era -> Word32)
-> SimpleGetter (DijkstraTx l era) Word32
forall a b. (a -> b) -> a -> b
$
Fail Word32 -> Word32
forall a. HasCallStack => Fail a -> a
errorFail
(Fail Word32 -> Word32)
-> (DijkstraTx l era -> Fail Word32) -> DijkstraTx l era -> Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall i b (m :: * -> *).
(Integral i, Integral b, Bounded b, MonadFail m) =>
i -> m b
integralToBounded @Int64 @Word32
(Int64 -> Fail Word32)
-> (DijkstraTx l era -> Int64) -> DijkstraTx l era -> Fail Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> Int64
LBS.length
(ByteString -> Int64)
-> (DijkstraTx l era -> ByteString) -> DijkstraTx l era -> Int64
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Version -> Encoding -> ByteString
forall a. EncCBOR a => Version -> a -> ByteString
serialize (forall era. Era era => Version
eraProtVerLow @era)
(Encoding -> ByteString)
-> (DijkstraTx l era -> Encoding) -> DijkstraTx l era -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DijkstraTx l era -> Encoding
forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
DijkstraTx l era -> Encoding
toCBORForSizeComputation
dijkstraTxEqRaw ::
( STxLevel l era ~ STxBothLevels l era
, AlonzoEraTx era
) =>
Tx l era ->
Tx l era ->
Bool
dijkstraTxEqRaw :: forall (l :: TxLevel) era.
(STxLevel l era ~ STxBothLevels l era, AlonzoEraTx era) =>
Tx l era -> Tx l era -> Bool
dijkstraTxEqRaw Tx l era
tx1 Tx l era
tx2 =
Tx l era -> Tx l era -> Bool
forall era (l :: TxLevel).
EraTx era =>
Tx l era -> Tx l era -> Bool
shelleyTxEqRaw Tx l era
tx1 Tx l era
tx2
Bool -> Bool -> Bool
&& Tx l era
-> (Tx TopTx era -> Bool) -> (Tx SubTx era -> Bool) -> Bool
forall (t :: TxLevel -> * -> *) era (l :: TxLevel) a.
(HasEraTxLevel t era, STxLevel l era ~ STxBothLevels l era) =>
t l era -> (t TopTx era -> a) -> (t SubTx era -> a) -> a
withBothTxLevels
Tx l era
tx1
( \Tx TopTx era
tx1' ->
Tx l era
-> (Tx TopTx era -> Bool) -> (Tx SubTx era -> Bool) -> Bool
forall (t :: TxLevel -> * -> *) era (l :: TxLevel) a.
(HasEraTxLevel t era, STxLevel l era ~ STxBothLevels l era) =>
t l era -> (t TopTx era -> a) -> (t SubTx era -> a) -> a
withBothTxLevels
Tx l era
tx2
(\Tx TopTx era
tx2' -> Tx TopTx era
tx1' Tx TopTx era -> Getting IsValid (Tx TopTx era) IsValid -> IsValid
forall s a. s -> Getting a s a -> a
^. Getting IsValid (Tx TopTx era) IsValid
forall era. AlonzoEraTx era => Lens' (Tx TopTx era) IsValid
Lens' (Tx TopTx era) IsValid
isValidTxL IsValid -> IsValid -> Bool
forall a. Eq a => a -> a -> Bool
== Tx TopTx era
tx2' Tx TopTx era -> Getting IsValid (Tx TopTx era) IsValid -> IsValid
forall s a. s -> Getting a s a -> a
^. Getting IsValid (Tx TopTx era) IsValid
forall era. AlonzoEraTx era => Lens' (Tx TopTx era) IsValid
Lens' (Tx TopTx era) IsValid
isValidTxL)
(Bool -> Tx SubTx era -> Bool
forall a b. a -> b -> a
const Bool
True)
)
(Bool -> Tx SubTx era -> Bool
forall a b. a -> b -> a
const Bool
True)
instance EqRaw (Tx l DijkstraEra) where
eqRaw :: Tx l DijkstraEra -> Tx l DijkstraEra -> Bool
eqRaw = Tx l DijkstraEra -> Tx l DijkstraEra -> Bool
forall (l :: TxLevel) era.
(STxLevel l era ~ STxBothLevels l era, AlonzoEraTx era) =>
Tx l era -> Tx l era -> Bool
dijkstraTxEqRaw
dijkstraTxL :: Lens' (Tx l DijkstraEra) (DijkstraTx l DijkstraEra)
dijkstraTxL :: forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
dijkstraTxL = (Tx l DijkstraEra -> DijkstraTx l DijkstraEra)
-> (Tx l DijkstraEra
-> DijkstraTx l DijkstraEra -> Tx l DijkstraEra)
-> Lens
(Tx l DijkstraEra)
(Tx l DijkstraEra)
(DijkstraTx l DijkstraEra)
(DijkstraTx l DijkstraEra)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Tx l DijkstraEra -> DijkstraTx l DijkstraEra
forall (l :: TxLevel). Tx l DijkstraEra -> DijkstraTx l DijkstraEra
unDijkstraTx (\Tx l DijkstraEra
x DijkstraTx l DijkstraEra
y -> Tx l DijkstraEra
x {unDijkstraTx = y})
instance AlonzoEraTx DijkstraEra where
isValidTxL :: Lens' (Tx TopTx DijkstraEra) IsValid
isValidTxL = (DijkstraTx TopTx DijkstraEra -> f (DijkstraTx TopTx DijkstraEra))
-> Tx TopTx DijkstraEra -> f (Tx TopTx DijkstraEra)
forall (l :: TxLevel) (f :: * -> *).
Functor f =>
(DijkstraTx l DijkstraEra -> f (DijkstraTx l DijkstraEra))
-> Tx l DijkstraEra -> f (Tx l DijkstraEra)
dijkstraTxL ((DijkstraTx TopTx DijkstraEra -> f (DijkstraTx TopTx DijkstraEra))
-> Tx TopTx DijkstraEra -> f (Tx TopTx DijkstraEra))
-> ((IsValid -> f IsValid)
-> DijkstraTx TopTx DijkstraEra
-> f (DijkstraTx TopTx DijkstraEra))
-> (IsValid -> f IsValid)
-> Tx TopTx DijkstraEra
-> f (Tx TopTx DijkstraEra)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (IsValid -> f IsValid)
-> DijkstraTx TopTx DijkstraEra -> f (DijkstraTx TopTx DijkstraEra)
forall era (f :: * -> *).
Functor f =>
(IsValid -> f IsValid)
-> DijkstraTx TopTx era -> f (DijkstraTx TopTx era)
isValidDijkstraTxL
{-# INLINE isValidTxL #-}
instance Typeable l => DecCBOR (Annotator (Tx l DijkstraEra)) where
decCBOR :: forall s. Decoder s (Annotator (Tx l DijkstraEra))
decCBOR = (DijkstraTx l DijkstraEra -> Tx l DijkstraEra)
-> Annotator (DijkstraTx l DijkstraEra)
-> Annotator (Tx l DijkstraEra)
forall a b. (a -> b) -> Annotator a -> Annotator b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DijkstraTx l DijkstraEra -> Tx l DijkstraEra
forall (l :: TxLevel). DijkstraTx l DijkstraEra -> Tx l DijkstraEra
MkDijkstraTx (Annotator (DijkstraTx l DijkstraEra)
-> Annotator (Tx l DijkstraEra))
-> Decoder s (Annotator (DijkstraTx l DijkstraEra))
-> Decoder s (Annotator (Tx l DijkstraEra))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Decoder s (Annotator (DijkstraTx l DijkstraEra))
forall s. Decoder s (Annotator (DijkstraTx l DijkstraEra))
forall a s. DecCBOR a => Decoder s a
decCBOR
validateDijkstraNativeScript ::
( EraTx era
, DijkstraEraTxBody era
, DijkstraEraScript era
, NativeScript era ~ DijkstraNativeScript era
) =>
Tx l era -> NativeScript era -> Bool
validateDijkstraNativeScript :: forall era (l :: TxLevel).
(EraTx era, DijkstraEraTxBody era, DijkstraEraScript era,
NativeScript era ~ DijkstraNativeScript era) =>
Tx l era -> NativeScript era -> Bool
validateDijkstraNativeScript Tx l era
tx =
Set (KeyHash Witness)
-> ValidityInterval
-> OSet (Credential Guard)
-> NativeScript era
-> Bool
forall era.
(DijkstraEraScript era,
NativeScript era ~ DijkstraNativeScript era) =>
Set (KeyHash Witness)
-> ValidityInterval
-> OSet (Credential Guard)
-> NativeScript era
-> Bool
evalDijkstraNativeScript Set (KeyHash Witness)
vhks (Tx l era
tx Tx l era
-> Getting ValidityInterval (Tx l era) ValidityInterval
-> ValidityInterval
forall s a. s -> Getting a s a -> a
^. (TxBody l era -> Const ValidityInterval (TxBody l era))
-> Tx l era -> Const ValidityInterval (Tx l era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody l era -> Const ValidityInterval (TxBody l era))
-> Tx l era -> Const ValidityInterval (Tx l era))
-> ((ValidityInterval -> Const ValidityInterval ValidityInterval)
-> TxBody l era -> Const ValidityInterval (TxBody l era))
-> Getting ValidityInterval (Tx l era) ValidityInterval
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ValidityInterval -> Const ValidityInterval ValidityInterval)
-> TxBody l era -> Const ValidityInterval (TxBody l era)
forall era (l :: TxLevel).
AllegraEraTxBody era =>
Lens' (TxBody l era) ValidityInterval
forall (l :: TxLevel). Lens' (TxBody l era) ValidityInterval
vldtTxBodyL) (Tx l era
tx Tx l era
-> Getting
(OSet (Credential Guard)) (Tx l era) (OSet (Credential Guard))
-> OSet (Credential Guard)
forall s a. s -> Getting a s a -> a
^. (TxBody l era -> Const (OSet (Credential Guard)) (TxBody l era))
-> Tx l era -> Const (OSet (Credential Guard)) (Tx l era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxBody l era)
forall (l :: TxLevel). Lens' (Tx l era) (TxBody l era)
bodyTxL ((TxBody l era -> Const (OSet (Credential Guard)) (TxBody l era))
-> Tx l era -> Const (OSet (Credential Guard)) (Tx l era))
-> ((OSet (Credential Guard)
-> Const (OSet (Credential Guard)) (OSet (Credential Guard)))
-> TxBody l era -> Const (OSet (Credential Guard)) (TxBody l era))
-> Getting
(OSet (Credential Guard)) (Tx l era) (OSet (Credential Guard))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (OSet (Credential Guard)
-> Const (OSet (Credential Guard)) (OSet (Credential Guard)))
-> TxBody l era -> Const (OSet (Credential Guard)) (TxBody l era)
forall era (l :: TxLevel).
DijkstraEraTxBody era =>
Lens' (TxBody l era) (OSet (Credential Guard))
forall (l :: TxLevel).
Lens' (TxBody l era) (OSet (Credential Guard))
guardsTxBodyL)
where
vhks :: Set (KeyHash Witness)
vhks = (WitVKey Witness -> KeyHash Witness)
-> Set (WitVKey Witness) -> Set (KeyHash Witness)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map WitVKey Witness -> KeyHash Witness
forall (kr :: KeyRole). WitVKey kr -> KeyHash Witness
witVKeyHash (Tx l era
tx Tx l era
-> Getting
(Set (WitVKey Witness)) (Tx l era) (Set (WitVKey Witness))
-> Set (WitVKey Witness)
forall s a. s -> Getting a s a -> a
^. (TxWits era -> Const (Set (WitVKey Witness)) (TxWits era))
-> Tx l era -> Const (Set (WitVKey Witness)) (Tx l era)
forall era (l :: TxLevel).
EraTx era =>
Lens' (Tx l era) (TxWits era)
forall (l :: TxLevel). Lens' (Tx l era) (TxWits era)
witsTxL ((TxWits era -> Const (Set (WitVKey Witness)) (TxWits era))
-> Tx l era -> Const (Set (WitVKey Witness)) (Tx l era))
-> ((Set (WitVKey Witness)
-> Const (Set (WitVKey Witness)) (Set (WitVKey Witness)))
-> TxWits era -> Const (Set (WitVKey Witness)) (TxWits era))
-> Getting
(Set (WitVKey Witness)) (Tx l era) (Set (WitVKey Witness))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Set (WitVKey Witness)
-> Const (Set (WitVKey Witness)) (Set (WitVKey Witness)))
-> TxWits era -> Const (Set (WitVKey Witness)) (TxWits era)
forall era.
EraTxWits era =>
Lens' (TxWits era) (Set (WitVKey Witness))
Lens' (TxWits era) (Set (WitVKey Witness))
addrTxWitsL)
{-# INLINEABLE validateDijkstraNativeScript #-}
toCBORForMempoolSubmission ::
( EncCBOR (TxBody l era)
, EncCBOR (TxWits era)
, EncCBOR (TxAuxData era)
) =>
DijkstraTx l era ->
Encoding
toCBORForMempoolSubmission :: forall (l :: TxLevel) era.
(EncCBOR (TxBody l era), EncCBOR (TxWits era),
EncCBOR (TxAuxData era)) =>
DijkstraTx l era -> Encoding
toCBORForMempoolSubmission = \case
DijkstraTx {TxBody TopTx era
dtBody :: forall era. DijkstraTx TopTx era -> TxBody TopTx era
dtBody :: TxBody TopTx era
dtBody, TxWits era
dtWits :: forall era. DijkstraTx TopTx era -> TxWits era
dtWits :: TxWits era
dtWits, StrictMaybe (TxAuxData era)
dtAuxData :: forall era. DijkstraTx TopTx era -> StrictMaybe (TxAuxData era)
dtAuxData :: StrictMaybe (TxAuxData era)
dtAuxData, IsValid
dtIsValid :: forall era. DijkstraTx TopTx era -> IsValid
dtIsValid :: IsValid
dtIsValid} ->
Encode (Closed Dense) (DijkstraTx TopTx era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode (Closed Dense) (DijkstraTx TopTx era) -> Encoding)
-> Encode (Closed Dense) (DijkstraTx TopTx era) -> Encoding
forall a b. (a -> b) -> a -> b
$
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era)
-> Encode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era)
forall t. t -> Encode (Closed Dense) t
Rec TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era
forall era.
TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era
DijkstraTx
Encode
(Closed Dense)
(TxBody TopTx era
-> TxWits era
-> IsValid
-> StrictMaybe (TxAuxData era)
-> DijkstraTx TopTx era)
-> Encode (Closed Dense) (TxBody TopTx era)
-> Encode
(Closed Dense)
(TxWits era
-> IsValid -> StrictMaybe (TxAuxData era) -> DijkstraTx TopTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxBody TopTx era -> Encode (Closed Dense) (TxBody TopTx era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxBody TopTx era
dtBody
Encode
(Closed Dense)
(TxWits era
-> IsValid -> StrictMaybe (TxAuxData era) -> DijkstraTx TopTx era)
-> Encode (Closed Dense) (TxWits era)
-> Encode
(Closed Dense)
(IsValid -> StrictMaybe (TxAuxData era) -> DijkstraTx TopTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxWits era -> Encode (Closed Dense) (TxWits era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxWits era
dtWits
Encode
(Closed Dense)
(IsValid -> StrictMaybe (TxAuxData era) -> DijkstraTx TopTx era)
-> Encode (Closed Dense) IsValid
-> Encode
(Closed Dense)
(StrictMaybe (TxAuxData era) -> DijkstraTx TopTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> IsValid -> Encode (Closed Dense) IsValid
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To IsValid
dtIsValid
Encode
(Closed Dense)
(StrictMaybe (TxAuxData era) -> DijkstraTx TopTx era)
-> Encode (Closed Dense) (StrictMaybe (TxAuxData era))
-> Encode (Closed Dense) (DijkstraTx TopTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (StrictMaybe (TxAuxData era) -> Encoding)
-> StrictMaybe (TxAuxData era)
-> Encode (Closed Dense) (StrictMaybe (TxAuxData era))
forall t. (t -> Encoding) -> t -> Encode (Closed Dense) t
E ((TxAuxData era -> Encoding)
-> StrictMaybe (TxAuxData era) -> Encoding
forall a. (a -> Encoding) -> StrictMaybe a -> Encoding
encodeNullStrictMaybe TxAuxData era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR) StrictMaybe (TxAuxData era)
dtAuxData
DijkstraSubTx {TxBody SubTx era
dstBody :: forall era. DijkstraTx SubTx era -> TxBody SubTx era
dstBody :: TxBody SubTx era
dstBody, TxWits era
dstWits :: forall era. DijkstraTx SubTx era -> TxWits era
dstWits :: TxWits era
dstWits, StrictMaybe (TxAuxData era)
dstAuxData :: forall era. DijkstraTx SubTx era -> StrictMaybe (TxAuxData era)
dstAuxData :: StrictMaybe (TxAuxData era)
dstAuxData} ->
Encode (Closed Dense) (DijkstraTx SubTx era) -> Encoding
forall (w :: Wrapped) t. Encode w t -> Encoding
encode (Encode (Closed Dense) (DijkstraTx SubTx era) -> Encoding)
-> Encode (Closed Dense) (DijkstraTx SubTx era) -> Encoding
forall a b. (a -> b) -> a -> b
$
(TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era)
-> Encode
(Closed Dense)
(TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era)
forall t. t -> Encode (Closed Dense) t
Rec TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era
forall era.
TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era
DijkstraSubTx
Encode
(Closed Dense)
(TxBody SubTx era
-> TxWits era
-> StrictMaybe (TxAuxData era)
-> DijkstraTx SubTx era)
-> Encode (Closed Dense) (TxBody SubTx era)
-> Encode
(Closed Dense)
(TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx SubTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxBody SubTx era -> Encode (Closed Dense) (TxBody SubTx era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxBody SubTx era
dstBody
Encode
(Closed Dense)
(TxWits era -> StrictMaybe (TxAuxData era) -> DijkstraTx SubTx era)
-> Encode (Closed Dense) (TxWits era)
-> Encode
(Closed Dense)
(StrictMaybe (TxAuxData era) -> DijkstraTx SubTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> TxWits era -> Encode (Closed Dense) (TxWits era)
forall t. EncCBOR t => t -> Encode (Closed Dense) t
To TxWits era
dstWits
Encode
(Closed Dense)
(StrictMaybe (TxAuxData era) -> DijkstraTx SubTx era)
-> Encode (Closed Dense) (StrictMaybe (TxAuxData era))
-> Encode (Closed Dense) (DijkstraTx SubTx era)
forall (w :: Wrapped) a t (r :: Density).
Encode w (a -> t) -> Encode (Closed r) a -> Encode w t
!> (StrictMaybe (TxAuxData era) -> Encoding)
-> StrictMaybe (TxAuxData era)
-> Encode (Closed Dense) (StrictMaybe (TxAuxData era))
forall t. (t -> Encoding) -> t -> Encode (Closed Dense) t
E ((TxAuxData era -> Encoding)
-> StrictMaybe (TxAuxData era) -> Encoding
forall a. (a -> Encoding) -> StrictMaybe a -> Encoding
encodeNullStrictMaybe TxAuxData era -> Encoding
forall a. EncCBOR a => a -> Encoding
encCBOR) StrictMaybe (TxAuxData era)
dstAuxData