add PlutusTX validatorHashToTokenName

This commit is contained in:
fanghr 2022-05-06 13:22:28 +08:00
parent 49adccbbeb
commit a14d98e077
No known key found for this signature in database
GPG key ID: 35CD9A71CD5D5870
2 changed files with 10 additions and 4 deletions

View file

@ -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

View file

@ -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