{-# 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 (..), ) 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 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 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