From a14d98e077fe73e5590f120991b8ddd5392b2448 Mon Sep 17 00:00:00 2001 From: fanghr Date: Fri, 6 May 2022 13:22:28 +0800 Subject: [PATCH] add PlutusTX `validatorHashToTokenName` --- agora/Agora/Stake/Scripts.hs | 4 ++-- agora/Agora/Utils.hs | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) 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..a2f5cd4 100644 --- a/agora/Agora/Utils.hs +++ b/agora/Agora/Utils.hs @@ -39,11 +39,13 @@ module Agora.Utils ( findOutputsToAddress, findTxOutDatum, validatorHashToTokenName, + pvalidatorHashToTokenName, getMintingPolicySymbol, ) where -------------------------------------------------------------------------------- +import Plutus.V1.Ledger.Api (TokenName (..), ValidatorHash (..)) import Plutus.V1.Ledger.Value (AssetClass (..)) -------------------------------------------------------------------------------- @@ -474,8 +476,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