From a14d98e077fe73e5590f120991b8ddd5392b2448 Mon Sep 17 00:00:00 2001 From: fanghr Date: Fri, 6 May 2022 13:22:28 +0800 Subject: [PATCH 1/2] 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 From f92d5a6d78ac67a5668976927386ffd4d3c2f4d1 Mon Sep 17 00:00:00 2001 From: fanghr Date: Fri, 6 May 2022 14:06:27 +0800 Subject: [PATCH 2/2] run linter --- agora/Agora/Utils.hs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/agora/Agora/Utils.hs b/agora/Agora/Utils.hs index a2f5cd4..7c71c36 100644 --- a/agora/Agora/Utils.hs +++ b/agora/Agora/Utils.hs @@ -45,7 +45,11 @@ module Agora.Utils ( -------------------------------------------------------------------------------- -import Plutus.V1.Ledger.Api (TokenName (..), ValidatorHash (..)) +import Plutus.V1.Ledger.Api ( + CurrencySymbol, + TokenName (..), + ValidatorHash (..), + ) import Plutus.V1.Ledger.Value (AssetClass (..)) -------------------------------------------------------------------------------- @@ -78,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