{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Babbage.Tx ( AlonzoTx (..), TxBody (..), module X, ) where import Cardano.Ledger.Allegra.Tx (validateTimelock) import Cardano.Ledger.Alonzo.Tx as X import Cardano.Ledger.Alonzo.TxSeq ( AlonzoTxSeq (AlonzoTxSeq, txSeqTxns), hashAlonzoTxSeq, ) import Cardano.Ledger.Babbage.Era (BabbageEra) import Cardano.Ledger.Babbage.TxAuxData () import Cardano.Ledger.Babbage.TxBody ( TxBody (..), ) import Cardano.Ledger.Babbage.TxWits () import Cardano.Ledger.Core instance EraTx BabbageEra where type Tx BabbageEra = AlonzoTx BabbageEra mkBasicTx :: TxBody BabbageEra -> Tx BabbageEra mkBasicTx = TxBody BabbageEra -> Tx BabbageEra TxBody BabbageEra -> AlonzoTx BabbageEra forall era. Monoid (TxWits era) => TxBody era -> AlonzoTx era mkBasicAlonzoTx bodyTxL :: Lens' (Tx BabbageEra) (TxBody BabbageEra) bodyTxL = (TxBody BabbageEra -> f (TxBody BabbageEra)) -> Tx BabbageEra -> f (Tx BabbageEra) (TxBody BabbageEra -> f (TxBody BabbageEra)) -> AlonzoTx BabbageEra -> f (AlonzoTx BabbageEra) forall era (f :: * -> *). Functor f => (TxBody era -> f (TxBody era)) -> AlonzoTx era -> f (AlonzoTx era) bodyAlonzoTxL {-# INLINE bodyTxL #-} witsTxL :: Lens' (Tx BabbageEra) (TxWits BabbageEra) witsTxL = (TxWits BabbageEra -> f (TxWits BabbageEra)) -> Tx BabbageEra -> f (Tx BabbageEra) (TxWits BabbageEra -> f (TxWits BabbageEra)) -> AlonzoTx BabbageEra -> f (AlonzoTx BabbageEra) forall era (f :: * -> *). Functor f => (TxWits era -> f (TxWits era)) -> AlonzoTx era -> f (AlonzoTx era) witsAlonzoTxL {-# INLINE witsTxL #-} auxDataTxL :: Lens' (Tx BabbageEra) (StrictMaybe (TxAuxData BabbageEra)) auxDataTxL = (StrictMaybe (TxAuxData BabbageEra) -> f (StrictMaybe (TxAuxData BabbageEra))) -> Tx BabbageEra -> f (Tx BabbageEra) (StrictMaybe (TxAuxData BabbageEra) -> f (StrictMaybe (TxAuxData BabbageEra))) -> AlonzoTx BabbageEra -> f (AlonzoTx BabbageEra) forall era (f :: * -> *). Functor f => (StrictMaybe (TxAuxData era) -> f (StrictMaybe (TxAuxData era))) -> AlonzoTx era -> f (AlonzoTx era) auxDataAlonzoTxL {-# INLINE auxDataTxL #-} sizeTxF :: SimpleGetter (Tx BabbageEra) Integer sizeTxF = (Integer -> Const r Integer) -> Tx BabbageEra -> Const r (Tx BabbageEra) Getting r (AlonzoTx BabbageEra) Integer forall era. EraTx era => SimpleGetter (AlonzoTx era) Integer SimpleGetter (AlonzoTx BabbageEra) Integer sizeAlonzoTxF {-# INLINE sizeTxF #-} validateNativeScript :: Tx BabbageEra -> NativeScript BabbageEra -> Bool validateNativeScript = Tx BabbageEra -> NativeScript BabbageEra -> Bool forall era. (EraTx era, AllegraEraTxBody era, AllegraEraScript era, NativeScript era ~ Timelock era) => Tx era -> NativeScript era -> Bool validateTimelock {-# INLINE validateNativeScript #-} getMinFeeTx :: PParams BabbageEra -> Tx BabbageEra -> Int -> Coin getMinFeeTx PParams BabbageEra pp Tx BabbageEra tx Int _ = PParams BabbageEra -> Tx BabbageEra -> Coin forall era. (EraTx era, AlonzoEraTxWits era, AlonzoEraPParams era) => PParams era -> Tx era -> Coin alonzoMinFeeTx PParams BabbageEra pp Tx BabbageEra tx instance AlonzoEraTx BabbageEra where isValidTxL :: Lens' (Tx BabbageEra) IsValid isValidTxL = (IsValid -> f IsValid) -> Tx BabbageEra -> f (Tx BabbageEra) (IsValid -> f IsValid) -> AlonzoTx BabbageEra -> f (AlonzoTx BabbageEra) forall era (f :: * -> *). Functor f => (IsValid -> f IsValid) -> AlonzoTx era -> f (AlonzoTx era) isValidAlonzoTxL {-# INLINE isValidTxL #-} instance EraSegWits BabbageEra where type TxSeq BabbageEra = AlonzoTxSeq BabbageEra fromTxSeq :: TxSeq BabbageEra -> StrictSeq (Tx BabbageEra) fromTxSeq = TxSeq BabbageEra -> StrictSeq (Tx BabbageEra) AlonzoTxSeq BabbageEra -> StrictSeq (Tx BabbageEra) forall era. AlonzoTxSeq era -> StrictSeq (Tx era) txSeqTxns toTxSeq :: StrictSeq (Tx BabbageEra) -> TxSeq BabbageEra toTxSeq = StrictSeq (Tx BabbageEra) -> TxSeq BabbageEra StrictSeq (Tx BabbageEra) -> AlonzoTxSeq BabbageEra forall era. (AlonzoEraTx era, SafeToHash (TxWits era)) => StrictSeq (Tx era) -> AlonzoTxSeq era AlonzoTxSeq hashTxSeq :: TxSeq BabbageEra -> Hash HASH EraIndependentBlockBody hashTxSeq = TxSeq BabbageEra -> Hash HASH EraIndependentBlockBody AlonzoTxSeq BabbageEra -> Hash HASH EraIndependentBlockBody forall era. AlonzoTxSeq era -> Hash HASH EraIndependentBlockBody hashAlonzoTxSeq numSegComponents :: Word64 numSegComponents = Word64 4