{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Conway.TxWits ( module BabbageTxWitsReExport, ) where import Cardano.Ledger.Alonzo.TxWits ( addrAlonzoTxWitsL, bootAddrAlonzoTxWitsL, datsAlonzoTxWitsL, rdmrsAlonzoTxWitsL, scriptAlonzoTxWitsL, upgradeRedeemers, upgradeTxDats, ) import Cardano.Ledger.Alonzo.TxWits as BabbageTxWitsReExport ( AlonzoEraTxWits (..), AlonzoTxWits (..), ) import Cardano.Ledger.Conway.Era (ConwayEra) import Cardano.Ledger.Conway.Scripts () import Cardano.Ledger.Core import Cardano.Ledger.Crypto instance Crypto c => EraTxWits (ConwayEra c) where {-# SPECIALIZE instance EraTxWits (ConwayEra StandardCrypto) #-} type TxWits (ConwayEra c) = AlonzoTxWits (ConwayEra c) mkBasicTxWits :: TxWits (ConwayEra c) mkBasicTxWits = forall a. Monoid a => a mempty addrTxWitsL :: Lens' (TxWits (ConwayEra c)) (Set (WitVKey 'Witness (EraCrypto (ConwayEra c)))) addrTxWitsL = forall era. AlonzoEraScript era => Lens' (AlonzoTxWits era) (Set (WitVKey 'Witness (EraCrypto era))) addrAlonzoTxWitsL {-# INLINE addrTxWitsL #-} bootAddrTxWitsL :: Lens' (TxWits (ConwayEra c)) (Set (BootstrapWitness (EraCrypto (ConwayEra c)))) bootAddrTxWitsL = forall era. AlonzoEraScript era => Lens' (AlonzoTxWits era) (Set (BootstrapWitness (EraCrypto era))) bootAddrAlonzoTxWitsL {-# INLINE bootAddrTxWitsL #-} scriptTxWitsL :: Lens' (TxWits (ConwayEra c)) (Map (ScriptHash (EraCrypto (ConwayEra c))) (Script (ConwayEra c))) scriptTxWitsL = forall era. AlonzoEraScript era => Lens' (AlonzoTxWits era) (Map (ScriptHash (EraCrypto era)) (Script era)) scriptAlonzoTxWitsL {-# INLINE scriptTxWitsL #-} upgradeTxWits :: EraTxWits (PreviousEra (ConwayEra c)) => TxWits (PreviousEra (ConwayEra c)) -> TxWits (ConwayEra c) upgradeTxWits TxWits (PreviousEra (ConwayEra c)) atw = AlonzoTxWits { txwitsVKey :: Set (WitVKey 'Witness (EraCrypto (ConwayEra c))) txwitsVKey = forall era. AlonzoEraScript era => AlonzoTxWits era -> Set (WitVKey 'Witness (EraCrypto era)) txwitsVKey TxWits (PreviousEra (ConwayEra c)) atw , txwitsBoot :: Set (BootstrapWitness (EraCrypto (ConwayEra c))) txwitsBoot = forall era. AlonzoEraScript era => AlonzoTxWits era -> Set (BootstrapWitness (EraCrypto era)) txwitsBoot TxWits (PreviousEra (ConwayEra c)) atw , txscripts :: Map (ScriptHash (EraCrypto (ConwayEra c))) (Script (ConwayEra c)) txscripts = forall era. (EraScript era, EraScript (PreviousEra era)) => Script (PreviousEra era) -> Script era upgradeScript forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall era. AlonzoEraScript era => AlonzoTxWits era -> Map (ScriptHash (EraCrypto era)) (Script era) txscripts TxWits (PreviousEra (ConwayEra c)) atw , txdats :: TxDats (ConwayEra c) txdats = forall era1 era2. (Era era1, Era era2, EraCrypto era1 ~ EraCrypto era2) => TxDats era1 -> TxDats era2 upgradeTxDats (forall era. AlonzoEraScript era => AlonzoTxWits era -> TxDats era txdats TxWits (PreviousEra (ConwayEra c)) atw) , txrdmrs :: Redeemers (ConwayEra c) txrdmrs = forall era. (AlonzoEraScript (PreviousEra era), AlonzoEraScript era) => Redeemers (PreviousEra era) -> Redeemers era upgradeRedeemers (forall era. AlonzoEraScript era => AlonzoTxWits era -> Redeemers era txrdmrs TxWits (PreviousEra (ConwayEra c)) atw) } instance Crypto c => AlonzoEraTxWits (ConwayEra c) where {-# SPECIALIZE instance AlonzoEraTxWits (ConwayEra StandardCrypto) #-} datsTxWitsL :: Lens' (TxWits (ConwayEra c)) (TxDats (ConwayEra c)) datsTxWitsL = forall era. AlonzoEraScript era => Lens' (AlonzoTxWits era) (TxDats era) datsAlonzoTxWitsL {-# INLINE datsTxWitsL #-} rdmrsTxWitsL :: Lens' (TxWits (ConwayEra c)) (Redeemers (ConwayEra c)) rdmrsTxWitsL = forall era. AlonzoEraScript era => Lens' (AlonzoTxWits era) (Redeemers era) rdmrsAlonzoTxWitsL {-# INLINE rdmrsTxWitsL #-}