{-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} module Test.Cardano.Ledger.Generic.Updaters where import Cardano.Crypto.DSIGN.Class () import Cardano.Ledger.Alonzo.Core (AlonzoEraPParams, AlonzoEraScript, PParams) import qualified Cardano.Ledger.Alonzo.Core as Alonzo import Cardano.Ledger.Alonzo.Tx (ScriptIntegrity (..), hashScriptIntegrity) import qualified Cardano.Ledger.Alonzo.Tx as Alonzo import Cardano.Ledger.Alonzo.TxWits (Redeemers (..), TxDats (..)) import Cardano.Ledger.BaseTypes (StrictMaybe (..)) import Cardano.Ledger.Plutus.Language (Language (..)) import qualified Data.Set as Set import Test.Cardano.Ledger.Generic.Proof alonzoNewScriptIntegrityHash :: forall era. ( AlonzoEraScript era , AlonzoEraPParams era ) => PParams era -> [Language] -> Redeemers era -> TxDats era -> StrictMaybe Alonzo.ScriptIntegrityHash alonzoNewScriptIntegrityHash :: forall era. (AlonzoEraScript era, AlonzoEraPParams era) => PParams era -> [Language] -> Redeemers era -> TxDats era -> StrictMaybe ScriptIntegrityHash alonzoNewScriptIntegrityHash PParams era pp [Language] ls redeemers :: Redeemers era redeemers@(Redeemers Map (PlutusPurpose AsIx era) (Data era, ExUnits) r) dats :: TxDats era dats@(TxDats Map DataHash (Data era) d) | Map DataHash (Data era) -> Bool forall a. Map DataHash a -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null Map DataHash (Data era) d , Map (PlutusPurpose AsIx era) (Data era, ExUnits) -> Bool forall a. Map (PlutusPurpose AsIx era) a -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null Map (PlutusPurpose AsIx era) (Data era, ExUnits) r , [Language] -> Bool forall a. [a] -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null [Language] ls = StrictMaybe ScriptIntegrityHash forall a. StrictMaybe a SNothing | Bool otherwise = ScriptIntegrityHash -> StrictMaybe ScriptIntegrityHash forall a. a -> StrictMaybe a SJust (ScriptIntegrityHash -> StrictMaybe ScriptIntegrityHash) -> (ScriptIntegrity era -> ScriptIntegrityHash) -> ScriptIntegrity era -> StrictMaybe ScriptIntegrityHash forall b c a. (b -> c) -> (a -> b) -> a -> c . forall era. Era era => ScriptIntegrity era -> ScriptIntegrityHash hashScriptIntegrity @era (ScriptIntegrity era -> StrictMaybe ScriptIntegrityHash) -> ScriptIntegrity era -> StrictMaybe ScriptIntegrityHash forall a b. (a -> b) -> a -> b $ Redeemers era -> TxDats era -> Set LangDepView -> ScriptIntegrity era forall era. Redeemers era -> TxDats era -> Set LangDepView -> ScriptIntegrity era ScriptIntegrity Redeemers era redeemers TxDats era dats ((Language -> LangDepView) -> Set Language -> Set LangDepView forall b a. Ord b => (a -> b) -> Set a -> Set b Set.map (PParams era -> Language -> LangDepView forall era. AlonzoEraPParams era => PParams era -> Language -> LangDepView Alonzo.getLanguageView PParams era pp) (Set Language -> Set LangDepView) -> Set Language -> Set LangDepView forall a b. (a -> b) -> a -> b $ [Language] -> Set Language forall a. Ord a => [a] -> Set a Set.fromList [Language] ls) languages :: Proof era -> [Language] languages :: forall era. Proof era -> [Language] languages Proof era Shelley = [] languages Proof era Allegra = [] languages Proof era Mary = [] languages Proof era Alonzo = [Language PlutusV1] languages Proof era Babbage = [Language PlutusV1, Language PlutusV2] languages Proof era Conway = [Language PlutusV1, Language PlutusV2]