diff --git a/hydra-plutus-extras/src/Hydra/Plutus/Extras.hs b/hydra-plutus-extras/src/Hydra/Plutus/Extras.hs index 3ac01ce0b38..c95c5c096c0 100644 --- a/hydra-plutus-extras/src/Hydra/Plutus/Extras.hs +++ b/hydra-plutus-extras/src/Hydra/Plutus/Extras.hs @@ -28,34 +28,33 @@ type ValidatorType = BuiltinData -> BuiltinData -> BuiltinData -> BuiltinUnit -- | Wrap a typed validator to get the basic `ValidatorType` signature which can -- be passed to `PlutusTx.compile`. --- REVIEW: There might be better ways to name this than "wrap" -wrapValidator :: +mkUntypedValidator :: (UnsafeFromData datum, UnsafeFromData redeemer, UnsafeFromData context) => (datum -> redeemer -> context -> Bool) -> ValidatorType -wrapValidator f d r c = +mkUntypedValidator f d r c = check $ f datum redeemer context where datum = unsafeFromBuiltinData d redeemer = unsafeFromBuiltinData r context = unsafeFromBuiltinData c -{-# INLINEABLE wrapValidator #-} +{-# INLINEABLE mkUntypedValidator #-} -- | Signature of an untyped minting policy script. type MintingPolicyType = BuiltinData -> BuiltinData -> BuiltinUnit -- | Wrap a typed minting policy to get the basic `MintingPolicyType` signature -- which can be passed to `PlutusTx.compile`. -wrapMintingPolicy :: +mkUntypedMintingPolicy :: (UnsafeFromData redeemer, UnsafeFromData context) => (redeemer -> context -> Bool) -> MintingPolicyType -wrapMintingPolicy f r c = +mkUntypedMintingPolicy f r c = check $ f redeemer context where redeemer = unsafeFromBuiltinData r context = unsafeFromBuiltinData c -{-# INLINEABLE wrapMintingPolicy #-} +{-# INLINEABLE mkUntypedMintingPolicy #-} -- * Similar utilities as plutus-ledger diff --git a/hydra-plutus/src/Hydra/Contract/Commit.hs b/hydra-plutus/src/Hydra/Contract/Commit.hs index f0908534bc8..51ea941a2be 100644 --- a/hydra-plutus/src/Hydra/Contract/Commit.hs +++ b/hydra-plutus/src/Hydra/Contract/Commit.hs @@ -19,7 +19,7 @@ import Hydra.Cardano.Api.Network (Network) import Hydra.Contract.CommitError (CommitError (..), errorCode) import Hydra.Contract.Util (hasST, mustBurnST) import Hydra.Data.Party (Party) -import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) +import Hydra.Plutus.Extras (ValidatorType, mkUntypedValidator, scriptValidatorHash) import Hydra.ScriptContext (ScriptContext (..), TxInfo (..)) import PlutusLedgerApi.V2 ( CurrencySymbol, @@ -111,7 +111,7 @@ compiledValidator :: CompiledCode ValidatorType compiledValidator = $$(PlutusTx.compile [||wrap validator||]) where - wrap = wrapValidator @DatumType @RedeemerType + wrap = mkUntypedValidator @DatumType @RedeemerType validatorScript :: SerialisedScript validatorScript = serialiseCompiledCode compiledValidator diff --git a/hydra-plutus/src/Hydra/Contract/Deposit.hs b/hydra-plutus/src/Hydra/Contract/Deposit.hs index b3ccb39d85e..7f2d5b694c2 100644 --- a/hydra-plutus/src/Hydra/Contract/Deposit.hs +++ b/hydra-plutus/src/Hydra/Contract/Deposit.hs @@ -22,7 +22,7 @@ import Hydra.Contract.DepositError ( ) import Hydra.Contract.Error (errorCode) import Hydra.Contract.Head (hashPreSerializedCommits, hashTxOuts) -import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) +import Hydra.Plutus.Extras (ValidatorType, mkUntypedValidator, scriptValidatorHash) import PlutusLedgerApi.V2 ( CurrencySymbol, Datum (Datum), @@ -91,7 +91,7 @@ compiledValidator :: CompiledCode ValidatorType compiledValidator = $$(PlutusTx.compile [||wrap validator||]) where - wrap = wrapValidator @DepositDatum @DepositRedeemer + wrap = mkUntypedValidator @DepositDatum @DepositRedeemer validatorScript :: SerialisedScript validatorScript = serialiseCompiledCode compiledValidator diff --git a/hydra-plutus/src/Hydra/Contract/Hash.hs b/hydra-plutus/src/Hydra/Contract/Hash.hs index f50e98af354..f7e8c0c2c18 100644 --- a/hydra-plutus/src/Hydra/Contract/Hash.hs +++ b/hydra-plutus/src/Hydra/Contract/Hash.hs @@ -14,7 +14,7 @@ import PlutusTx.Prelude import Hydra.Prelude qualified as Haskell import Hydra.Cardano.Api (PlutusScriptVersion (PlutusScriptV2)) -import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) +import Hydra.Plutus.Extras (ValidatorType, mkUntypedValidator, scriptValidatorHash) import PlutusLedgerApi.Common (SerialisedScript, serialiseCompiledCode) import PlutusLedgerApi.V2 ( Datum (Datum), @@ -54,7 +54,7 @@ compiledValidator :: CompiledCode ValidatorType compiledValidator = $$(PlutusTx.compile [||wrap validator||]) where - wrap = wrapValidator @DatumType @RedeemerType + wrap = mkUntypedValidator @DatumType @RedeemerType validatorScript :: SerialisedScript validatorScript = serialiseCompiledCode compiledValidator diff --git a/hydra-plutus/src/Hydra/Contract/Head.hs b/hydra-plutus/src/Hydra/Contract/Head.hs index 0196714b6c3..3b3f5543cc0 100644 --- a/hydra-plutus/src/Hydra/Contract/Head.hs +++ b/hydra-plutus/src/Hydra/Contract/Head.hs @@ -19,7 +19,7 @@ import Hydra.Contract.HeadState (CloseRedeemer (..), ClosedDatum (..), ContestRe import Hydra.Contract.Util (hasST, mustBurnAllHeadTokens, mustNotMintOrBurn, (===)) import Hydra.Data.ContestationPeriod (ContestationPeriod, addContestationPeriod, milliseconds) import Hydra.Data.Party (Party (vkey)) -import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) +import Hydra.Plutus.Extras (ValidatorType, mkUntypedValidator, scriptValidatorHash) import PlutusLedgerApi.Common (SerialisedScript, serialiseCompiledCode) import PlutusLedgerApi.V1.Time (fromMilliSeconds) import PlutusLedgerApi.V1.Value (valueOf) @@ -687,7 +687,7 @@ compiledValidator :: CompiledCode ValidatorType compiledValidator = $$(PlutusTx.compile [||wrap headValidator||]) where - wrap = wrapValidator @DatumType @RedeemerType + wrap = mkUntypedValidator @DatumType @RedeemerType validatorScript :: SerialisedScript validatorScript = serialiseCompiledCode compiledValidator diff --git a/hydra-plutus/src/Hydra/Contract/HeadTokens.hs b/hydra-plutus/src/Hydra/Contract/HeadTokens.hs index 30113a3c2d7..cdb215215cd 100644 --- a/hydra-plutus/src/Hydra/Contract/HeadTokens.hs +++ b/hydra-plutus/src/Hydra/Contract/HeadTokens.hs @@ -30,7 +30,7 @@ import Hydra.Contract.HeadTokensError (HeadTokensError (..), errorCode) import Hydra.Contract.Initial qualified as Initial import Hydra.Contract.MintAction (MintAction (Burn, Mint)) import Hydra.Contract.Util (hasST) -import Hydra.Plutus.Extras (MintingPolicyType, wrapMintingPolicy) +import Hydra.Plutus.Extras (MintingPolicyType, mkUntypedMintingPolicy) import Hydra.ScriptContext (ScriptContext (..), TxInfo (txInfoInputs, txInfoMint), ownCurrencySymbol, scriptOutputsAt) import PlutusCore.Core (plcVersion100) import PlutusLedgerApi.V2 ( @@ -179,7 +179,7 @@ validateTokensBurning context = -- | Raw minting policy code where the 'TxOutRef' is still a parameter. unappliedMintingPolicy :: CompiledCode (TxOutRef -> MintingPolicyType) unappliedMintingPolicy = - $$(PlutusTx.compile [||\vInitial vHead ref -> wrapMintingPolicy (validate vInitial vHead ref)||]) + $$(PlutusTx.compile [||\vInitial vHead ref -> mkUntypedMintingPolicy (validate vInitial vHead ref)||]) `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion100 Initial.validatorHash `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion100 Head.validatorHash diff --git a/hydra-plutus/src/Hydra/Contract/Initial.hs b/hydra-plutus/src/Hydra/Contract/Initial.hs index df74dc4f603..7064f6c304e 100644 --- a/hydra-plutus/src/Hydra/Contract/Initial.hs +++ b/hydra-plutus/src/Hydra/Contract/Initial.hs @@ -17,7 +17,7 @@ import Hydra.Contract.Commit qualified as Commit import Hydra.Contract.Error (errorCode) import Hydra.Contract.InitialError (InitialError (..)) import Hydra.Contract.Util (mustBurnST) -import Hydra.Plutus.Extras (ValidatorType, scriptValidatorHash, wrapValidator) +import Hydra.Plutus.Extras (ValidatorType, mkUntypedValidator, scriptValidatorHash) import Hydra.ScriptContext ( ScriptContext (..), TxInfo (txInfoMint, txInfoSignatories), @@ -181,7 +181,7 @@ compiledValidator = $$(PlutusTx.compile [||wrap . validator||]) `PlutusTx.unsafeApplyCode` PlutusTx.liftCode plcVersion100 Commit.validatorHash where - wrap = wrapValidator @DatumType @RedeemerType + wrap = mkUntypedValidator @DatumType @RedeemerType validatorScript :: SerialisedScript validatorScript = serialiseCompiledCode compiledValidator diff --git a/plutus-cbor/exe/encoding-cost/Plutus/Codec/CBOR/Encoding/Validator.hs b/plutus-cbor/exe/encoding-cost/Plutus/Codec/CBOR/Encoding/Validator.hs index e759c98a772..d75156510e5 100644 --- a/plutus-cbor/exe/encoding-cost/Plutus/Codec/CBOR/Encoding/Validator.hs +++ b/plutus-cbor/exe/encoding-cost/Plutus/Codec/CBOR/Encoding/Validator.hs @@ -32,7 +32,7 @@ import PlutusLedgerApi.V1 ( Value (..), ) -import Hydra.Plutus.Extras (wrapValidator) +import Hydra.Plutus.Extras (mkUntypedValidator) import PlutusLedgerApi.Common (SerialisedScript, serialiseCompiledCode) import PlutusTx qualified as Plutus @@ -48,12 +48,12 @@ encodeIntegerValidator :: ValidatorKind -> SerialisedScript encodeIntegerValidator = \case BaselineValidator -> serialiseCompiledCode - $$(Plutus.compile [||wrapValidator $ \() (_ :: Integer) (_ :: ScriptContext) -> True||]) + $$(Plutus.compile [||mkUntypedValidator $ \() (_ :: Integer) (_ :: ScriptContext) -> True||]) RealValidator -> serialiseCompiledCode $$( Plutus.compile [|| - wrapValidator $ \() a (_ :: ScriptContext) -> + mkUntypedValidator $ \() a (_ :: ScriptContext) -> let bytes = encodingToBuiltinByteString (encodeInteger a) in lengthOfByteString bytes > 0 ||] @@ -63,12 +63,12 @@ encodeByteStringValidator :: ValidatorKind -> SerialisedScript encodeByteStringValidator = \case BaselineValidator -> serialiseCompiledCode - $$(Plutus.compile [||wrapValidator $ \() (_ :: BuiltinByteString) (_ :: ScriptContext) -> True||]) + $$(Plutus.compile [||mkUntypedValidator $ \() (_ :: BuiltinByteString) (_ :: ScriptContext) -> True||]) RealValidator -> serialiseCompiledCode $$( Plutus.compile [|| - wrapValidator $ \() a (_ :: ScriptContext) -> + mkUntypedValidator $ \() a (_ :: ScriptContext) -> let bytes = encodingToBuiltinByteString (encodeByteString a) in lengthOfByteString bytes > 0 ||] @@ -78,12 +78,12 @@ encodeListValidator :: ValidatorKind -> SerialisedScript encodeListValidator = \case BaselineValidator -> serialiseCompiledCode - $$(Plutus.compile [||wrapValidator $ \() (_ :: [BuiltinByteString]) (_ :: ScriptContext) -> True||]) + $$(Plutus.compile [||mkUntypedValidator $ \() (_ :: [BuiltinByteString]) (_ :: ScriptContext) -> True||]) RealValidator -> serialiseCompiledCode $$( Plutus.compile [|| - wrapValidator $ \() xs (_ :: ScriptContext) -> + mkUntypedValidator $ \() xs (_ :: ScriptContext) -> let bytes = encodingToBuiltinByteString $ encodeList encodeByteString xs @@ -95,12 +95,12 @@ encodeTxOutValidator :: ValidatorKind -> SerialisedScript encodeTxOutValidator = \case BaselineValidator -> serialiseCompiledCode - $$(Plutus.compile [||wrapValidator $ \() (_ :: TxOut) (_ :: ScriptContext) -> True||]) + $$(Plutus.compile [||mkUntypedValidator $ \() (_ :: TxOut) (_ :: ScriptContext) -> True||]) RealValidator -> serialiseCompiledCode $$( Plutus.compile [|| - wrapValidator $ \() o (_ :: ScriptContext) -> + mkUntypedValidator $ \() o (_ :: ScriptContext) -> let bytes = encodingToBuiltinByteString (encodeTxOut o) in lengthOfByteString bytes > 0 ||] @@ -110,12 +110,12 @@ encodeTxOutsValidator :: ValidatorKind -> SerialisedScript encodeTxOutsValidator = \case BaselineValidator -> serialiseCompiledCode - $$(Plutus.compile [||wrapValidator $ \() (_ :: [TxOut]) (_ :: ScriptContext) -> True||]) + $$(Plutus.compile [||mkUntypedValidator $ \() (_ :: [TxOut]) (_ :: ScriptContext) -> True||]) RealValidator -> serialiseCompiledCode $$( Plutus.compile [|| - wrapValidator $ \() xs (_ :: ScriptContext) -> + mkUntypedValidator $ \() xs (_ :: ScriptContext) -> let bytes = encodingToBuiltinByteString (encodeList encodeTxOut xs) in lengthOfByteString bytes > 0 ||] diff --git a/plutus-merkle-tree/bench/Validators.hs b/plutus-merkle-tree/bench/Validators.hs index 5d8eb0c7788..48b1a1f38bc 100644 --- a/plutus-merkle-tree/bench/Validators.hs +++ b/plutus-merkle-tree/bench/Validators.hs @@ -9,7 +9,7 @@ module Validators where import PlutusTx.Prelude -import Hydra.Plutus.Extras (wrapValidator) +import Hydra.Plutus.Extras (mkUntypedValidator) import Plutus.MerkleTree qualified as MT import PlutusLedgerApi.Common (SerialisedScript, serialiseCompiledCode) import PlutusLedgerApi.V2 (ScriptContext) @@ -21,7 +21,7 @@ merkleTreeMemberValidator = serialiseCompiledCode $$( Plutus.compile [|| - wrapValidator $ + mkUntypedValidator $ \() (e, root, proof) (_ :: ScriptContext) -> MT.member e root proof ||] @@ -34,7 +34,7 @@ merkleTreeBuilderValidator = serialiseCompiledCode $$( Plutus.compile [|| - wrapValidator $ + mkUntypedValidator $ \() (utxos, root) (_ :: ScriptContext) -> MT.rootHash (MT.fromList utxos) == root ||]