From c8f5c6af8fbb5abbe9ca21df2e8165675543717d Mon Sep 17 00:00:00 2001 From: Emily Martins Date: Thu, 28 Apr 2022 16:20:05 +0200 Subject: [PATCH] remove `pfindDatum'`, in favour of `ptryFindDatum` --- agora-test/Spec/Sample/Proposal.hs | 13 +++++++------ agora/Agora/Utils.hs | 11 ++--------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/agora-test/Spec/Sample/Proposal.hs b/agora-test/Spec/Sample/Proposal.hs index 7ca6514..91aa9a4 100644 --- a/agora-test/Spec/Sample/Proposal.hs +++ b/agora-test/Spec/Sample/Proposal.hs @@ -154,19 +154,20 @@ stakeRef = TxOutRef "0ca36f3a357bc69579ab2531aecd1e7d3714d993c7820f40b864be15" 0 cosignProposal :: [PubKeyHash] -> TxInfo cosignProposal newSigners = let st = Value.singleton proposalPolicySymbol "" 1 -- Proposal ST + effects = + AssocMap.fromList + [ (ResultTag 0, []) + , (ResultTag 1, []) + ] proposalBefore :: ProposalDatum proposalBefore = ProposalDatum { proposalId = ProposalId 0 - , effects = - AssocMap.fromList - [ (ResultTag 0, []) - , (ResultTag 1, []) - ] + , effects = effects , status = Draft , cosigners = [signer] , thresholds = defaultProposalThresholds - , votes = ProposalVotes AssocMap.empty + , votes = emptyVotesFor effects } stakeDatum :: StakeDatum stakeDatum = StakeDatum (Tagged 50_000_000) signer2 [] diff --git a/agora/Agora/Utils.hs b/agora/Agora/Utils.hs index bb852c4..874ecfe 100644 --- a/agora/Agora/Utils.hs +++ b/agora/Agora/Utils.hs @@ -10,7 +10,6 @@ module Agora.Utils ( passert, pfind', pfindDatum, - pfindDatum', ptryFindDatum, pvalueSpent, ptxSignedBy, @@ -74,7 +73,6 @@ import Plutarch.Api.V1.AssocMap (PMap (PMap)) import Plutarch.Api.V1.Extra (PAssetClass, passetClassValueOf, pvalueOf) import Plutarch.Api.V1.Value (PValue (PValue)) import Plutarch.Builtin (ppairDataBuiltin) -import Plutarch.Internal (punsafeCoerce) import Plutarch.Map.Extra (pkeys) import Plutarch.Monadic qualified as P import Plutarch.TryFrom (PTryFrom, ptryFrom) @@ -102,12 +100,6 @@ ptryFindDatum = phoistAcyclic $ (datum', _) <- ptryFrom (pto datum) pcon (PJust datum') -{- | Find a datum with the given hash. -NOTE: this is unsafe in the sense that, if the data layout is wrong, this is UB. --} -pfindDatum' :: PIsData a => Term s (PDatumHash :--> PBuiltinList (PAsData (PTuple PDatumHash PDatum)) :--> PMaybe (PAsData a)) -pfindDatum' = phoistAcyclic $ plam $ \dh x -> punsafeCoerce $ pfindDatum # dh # x - -- | Check if a PubKeyHash signs this transaction. ptxSignedBy :: Term s (PBuiltinList (PAsData PPubKeyHash) :--> PAsData PPubKeyHash :--> PBool) ptxSignedBy = phoistAcyclic $ @@ -416,6 +408,7 @@ allOutputs = phoistAcyclic $ anyInput :: forall (datum :: PType) s. ( PIsData datum + , PTryFrom PData (PAsData datum) ) => Term s (PTxInfo :--> (PValue :--> PAddress :--> datum :--> PBool) :--> PBool) anyInput = phoistAcyclic $ @@ -429,7 +422,7 @@ anyInput = phoistAcyclic $ PTxOut txOut' <- pmatch (pfromData txOut'') txOut <- pletFields @'["value", "datumHash", "address"] txOut' PDJust dh <- pmatch txOut.datumHash - pmatch (pfindDatum' @datum # (pfield @"_0" # dh) # txInfo.datums) $ \case + pmatch (ptryFindDatum @(PAsData datum) # (pfield @"_0" # dh) # txInfo.datums) $ \case PJust datum -> P.do predicate # txOut.value # txOut.address # pfromData datum PNothing -> pcon PFalse