{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Dijkstra.Tx () where import Cardano.Ledger.Allegra.Tx (validateTimelock) import Cardano.Ledger.Alonzo.Tx ( AlonzoEraTx, AlonzoTx (..), auxDataAlonzoTxL, bodyAlonzoTxL, isValidAlonzoTxL, mkBasicAlonzoTx, sizeAlonzoTxF, witsAlonzoTxL, ) import Cardano.Ledger.Alonzo.TxSeq (AlonzoTxSeq (..), hashAlonzoTxSeq) import Cardano.Ledger.Conway.Tx (AlonzoEraTx (..), getConwayMinFeeTx) import Cardano.Ledger.Core ( EraSegWits (..), EraTx (..), EraTxAuxData (..), EraTxBody (..), EraTxWits (..), ) import Cardano.Ledger.Dijkstra.Era (DijkstraEra) import Cardano.Ledger.Dijkstra.TxAuxData () import Cardano.Ledger.Dijkstra.TxBody () import Cardano.Ledger.Dijkstra.TxWits () instance EraTx DijkstraEra where type Tx DijkstraEra = AlonzoTx DijkstraEra type TxUpgradeError DijkstraEra = TxBodyUpgradeError DijkstraEra mkBasicTx :: TxBody DijkstraEra -> Tx DijkstraEra mkBasicTx = TxBody DijkstraEra -> Tx DijkstraEra TxBody DijkstraEra -> AlonzoTx DijkstraEra forall era. Monoid (TxWits era) => TxBody era -> AlonzoTx era mkBasicAlonzoTx bodyTxL :: Lens' (Tx DijkstraEra) (TxBody DijkstraEra) bodyTxL = (TxBody DijkstraEra -> f (TxBody DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra) (TxBody DijkstraEra -> f (TxBody DijkstraEra)) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) forall era (f :: * -> *). Functor f => (TxBody era -> f (TxBody era)) -> AlonzoTx era -> f (AlonzoTx era) bodyAlonzoTxL {-# INLINE bodyTxL #-} witsTxL :: Lens' (Tx DijkstraEra) (TxWits DijkstraEra) witsTxL = (TxWits DijkstraEra -> f (TxWits DijkstraEra)) -> Tx DijkstraEra -> f (Tx DijkstraEra) (TxWits DijkstraEra -> f (TxWits DijkstraEra)) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) forall era (f :: * -> *). Functor f => (TxWits era -> f (TxWits era)) -> AlonzoTx era -> f (AlonzoTx era) witsAlonzoTxL {-# INLINE witsTxL #-} auxDataTxL :: Lens' (Tx DijkstraEra) (StrictMaybe (TxAuxData DijkstraEra)) auxDataTxL = (StrictMaybe (TxAuxData DijkstraEra) -> f (StrictMaybe (TxAuxData DijkstraEra))) -> Tx DijkstraEra -> f (Tx DijkstraEra) (StrictMaybe (TxAuxData DijkstraEra) -> f (StrictMaybe (TxAuxData DijkstraEra))) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) forall era (f :: * -> *). Functor f => (StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era))) -> AlonzoTx era -> f (AlonzoTx era) auxDataAlonzoTxL {-# INLINE auxDataTxL #-} sizeTxF :: SimpleGetter (Tx DijkstraEra) Integer sizeTxF = (Integer -> Const r Integer) -> Tx DijkstraEra -> Const r (Tx DijkstraEra) Getting r (AlonzoTx DijkstraEra) Integer forall era. EraTx era => SimpleGetter (AlonzoTx era) Integer SimpleGetter (AlonzoTx DijkstraEra) Integer sizeAlonzoTxF {-# INLINE sizeTxF #-} validateNativeScript :: Tx DijkstraEra -> NativeScript DijkstraEra -> Bool validateNativeScript = Tx DijkstraEra -> NativeScript DijkstraEra -> Bool forall era. (EraTx era, AllegraEraTxBody era, AllegraEraScript era, NativeScript era ~ Timelock era) => Tx era -> NativeScript era -> Bool validateTimelock {-# INLINE validateNativeScript #-} getMinFeeTx :: PParams DijkstraEra -> Tx DijkstraEra -> Int -> Coin getMinFeeTx = PParams DijkstraEra -> Tx DijkstraEra -> Int -> Coin forall era. (EraTx era, AlonzoEraTxWits era, ConwayEraPParams era) => PParams era -> Tx era -> Int -> Coin getConwayMinFeeTx upgradeTx :: EraTx (PreviousEra DijkstraEra) => Tx (PreviousEra DijkstraEra) -> Either (TxUpgradeError DijkstraEra) (Tx DijkstraEra) upgradeTx (AlonzoTx TxBody ConwayEra b TxWits ConwayEra w IsValid valid StrictMaybe (TxAuxData ConwayEra) aux) = TxBody DijkstraEra -> TxWits DijkstraEra -> IsValid -> StrictMaybe (TxAuxData DijkstraEra) -> AlonzoTx DijkstraEra TxBody DijkstraEra -> AlonzoTxWits DijkstraEra -> IsValid -> StrictMaybe (AlonzoTxAuxData DijkstraEra) -> AlonzoTx DijkstraEra forall era. TxBody era -> TxWits era -> IsValid -> StrictMaybe (TxAuxData era) -> AlonzoTx era AlonzoTx (TxBody DijkstraEra -> AlonzoTxWits DijkstraEra -> IsValid -> StrictMaybe (AlonzoTxAuxData DijkstraEra) -> AlonzoTx DijkstraEra) -> Either Void (TxBody DijkstraEra) -> Either Void (AlonzoTxWits DijkstraEra -> IsValid -> StrictMaybe (AlonzoTxAuxData DijkstraEra) -> AlonzoTx DijkstraEra) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> TxBody (PreviousEra DijkstraEra) -> Either (TxBodyUpgradeError DijkstraEra) (TxBody DijkstraEra) forall era. (EraTxBody era, EraTxBody (PreviousEra era)) => TxBody (PreviousEra era) -> Either (TxBodyUpgradeError era) (TxBody era) upgradeTxBody TxBody (PreviousEra DijkstraEra) TxBody ConwayEra b Either Void (AlonzoTxWits DijkstraEra -> IsValid -> StrictMaybe (AlonzoTxAuxData DijkstraEra) -> AlonzoTx DijkstraEra) -> Either Void (AlonzoTxWits DijkstraEra) -> Either Void (IsValid -> StrictMaybe (AlonzoTxAuxData DijkstraEra) -> AlonzoTx DijkstraEra) forall a b. Either Void (a -> b) -> Either Void a -> Either Void b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> AlonzoTxWits DijkstraEra -> Either Void (AlonzoTxWits DijkstraEra) forall a. a -> Either Void a forall (f :: * -> *) a. Applicative f => a -> f a pure (TxWits (PreviousEra DijkstraEra) -> TxWits DijkstraEra forall era. (EraTxWits era, EraTxWits (PreviousEra era)) => TxWits (PreviousEra era) -> TxWits era upgradeTxWits TxWits (PreviousEra DijkstraEra) TxWits ConwayEra w) Either Void (IsValid -> StrictMaybe (AlonzoTxAuxData DijkstraEra) -> AlonzoTx DijkstraEra) -> Either Void IsValid -> Either Void (StrictMaybe (AlonzoTxAuxData DijkstraEra) -> AlonzoTx DijkstraEra) forall a b. Either Void (a -> b) -> Either Void a -> Either Void b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> IsValid -> Either Void IsValid forall a. a -> Either Void a forall (f :: * -> *) a. Applicative f => a -> f a pure IsValid valid Either Void (StrictMaybe (AlonzoTxAuxData DijkstraEra) -> AlonzoTx DijkstraEra) -> Either Void (StrictMaybe (AlonzoTxAuxData DijkstraEra)) -> Either Void (AlonzoTx DijkstraEra) forall a b. Either Void (a -> b) -> Either Void a -> Either Void b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> StrictMaybe (AlonzoTxAuxData DijkstraEra) -> Either Void (StrictMaybe (AlonzoTxAuxData DijkstraEra)) forall a. a -> Either Void a forall (f :: * -> *) a. Applicative f => a -> f a pure ((TxAuxData (PreviousEra DijkstraEra) -> AlonzoTxAuxData DijkstraEra) -> StrictMaybe (TxAuxData (PreviousEra DijkstraEra)) -> StrictMaybe (AlonzoTxAuxData DijkstraEra) forall a b. (a -> b) -> StrictMaybe a -> StrictMaybe b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap TxAuxData (PreviousEra DijkstraEra) -> TxAuxData DijkstraEra TxAuxData (PreviousEra DijkstraEra) -> AlonzoTxAuxData DijkstraEra forall era. (EraTxAuxData era, EraTxAuxData (PreviousEra era)) => TxAuxData (PreviousEra era) -> TxAuxData era upgradeTxAuxData StrictMaybe (TxAuxData (PreviousEra DijkstraEra)) StrictMaybe (TxAuxData ConwayEra) aux) instance AlonzoEraTx DijkstraEra where isValidTxL :: Lens' (Tx DijkstraEra) IsValid isValidTxL = (IsValid -> f IsValid) -> Tx DijkstraEra -> f (Tx DijkstraEra) (IsValid -> f IsValid) -> AlonzoTx DijkstraEra -> f (AlonzoTx DijkstraEra) forall era (f :: * -> *). Functor f => (IsValid -> f IsValid) -> AlonzoTx era -> f (AlonzoTx era) isValidAlonzoTxL {-# INLINE isValidTxL #-} instance EraSegWits DijkstraEra where type TxSeq DijkstraEra = AlonzoTxSeq DijkstraEra fromTxSeq :: TxSeq DijkstraEra -> StrictSeq (Tx DijkstraEra) fromTxSeq = TxSeq DijkstraEra -> StrictSeq (Tx DijkstraEra) AlonzoTxSeq DijkstraEra -> StrictSeq (Tx DijkstraEra) forall era. AlonzoTxSeq era -> StrictSeq (Tx era) txSeqTxns toTxSeq :: StrictSeq (Tx DijkstraEra) -> TxSeq DijkstraEra toTxSeq = StrictSeq (Tx DijkstraEra) -> TxSeq DijkstraEra StrictSeq (Tx DijkstraEra) -> AlonzoTxSeq DijkstraEra forall era. (AlonzoEraTx era, SafeToHash (TxWits era)) => StrictSeq (Tx era) -> AlonzoTxSeq era AlonzoTxSeq hashTxSeq :: TxSeq DijkstraEra -> Hash HASH EraIndependentBlockBody hashTxSeq = TxSeq DijkstraEra -> Hash HASH EraIndependentBlockBody AlonzoTxSeq DijkstraEra -> Hash HASH EraIndependentBlockBody forall era. AlonzoTxSeq era -> Hash HASH EraIndependentBlockBody hashAlonzoTxSeq numSegComponents :: Word64 numSegComponents = Word64 4