diff --git a/agora/Agora/Stake/Scripts.hs b/agora/Agora/Stake/Scripts.hs index 10e0df9..aaadd27 100644 --- a/agora/Agora/Stake/Scripts.hs +++ b/agora/Agora/Stake/Scripts.hs @@ -22,8 +22,8 @@ import Agora.Utils ( psymbolValueOf, ptokenSpent, ptxSignedBy, + pvalidatorHashToTokenName, pvalueSpent, - validatorHashToTokenName, ) import Plutarch.Api.V1 ( PCredential (PPubKeyCredential, PScriptCredential), @@ -117,7 +117,7 @@ stakePolicy gtClassRef = PScriptCredential validatorHash -> P.do stakeDatum <- pletFields @'["owner", "stakedAmount"] stakeDatum' - tn :: Term _ PTokenName <- plet (validatorHashToTokenName $ pfromData $ pfield @"_0" # validatorHash) + tn :: Term _ PTokenName <- plet (pvalidatorHashToTokenName $ pfromData $ pfield @"_0" # validatorHash) let stValue = psingletonValue diff --git a/agora/Agora/Utils.hs b/agora/Agora/Utils.hs index 874ecfe..7c71c36 100644 --- a/agora/Agora/Utils.hs +++ b/agora/Agora/Utils.hs @@ -39,11 +39,17 @@ module Agora.Utils ( findOutputsToAddress, findTxOutDatum, validatorHashToTokenName, + pvalidatorHashToTokenName, getMintingPolicySymbol, ) where -------------------------------------------------------------------------------- +import Plutus.V1.Ledger.Api ( + CurrencySymbol, + TokenName (..), + ValidatorHash (..), + ) import Plutus.V1.Ledger.Value (AssetClass (..)) -------------------------------------------------------------------------------- @@ -76,7 +82,6 @@ import Plutarch.Builtin (ppairDataBuiltin) import Plutarch.Map.Extra (pkeys) import Plutarch.Monadic qualified as P import Plutarch.TryFrom (PTryFrom, ptryFrom) -import Plutus.V1.Ledger.Api (CurrencySymbol) -------------------------------------------------------------------------------- -- Validator-level utility functions @@ -474,8 +479,12 @@ findTxOutDatum = phoistAcyclic $ {- | Safely convert a 'PValidatorHash' into a 'PTokenName'. This can be useful for tagging tokens for extra safety. -} -validatorHashToTokenName :: forall (s :: S). Term s PValidatorHash -> Term s PTokenName -validatorHashToTokenName vh = pcon (PTokenName (pto vh)) +validatorHashToTokenName :: ValidatorHash -> TokenName +validatorHashToTokenName (ValidatorHash hash) = TokenName hash + +-- | Plutarch level 'validatorHashToTokenName'. +pvalidatorHashToTokenName :: forall (s :: S). Term s PValidatorHash -> Term s PTokenName +pvalidatorHashToTokenName vh = pcon (PTokenName (pto vh)) -- | Get the CurrencySymbol of a PMintingPolicy. getMintingPolicySymbol :: ClosedTerm PMintingPolicy -> CurrencySymbol