From 9dc4a87ab39b85a50ea26e997880def1b9625c2e Mon Sep 17 00:00:00 2001 From: fanghr Date: Sat, 7 May 2022 14:13:33 +0800 Subject: [PATCH] require `PtryFrom PData (PAsData datum)` in `makeEffect` --- agora/Agora/Effect.hs | 4 ++-- agora/Agora/Effect/GovernorMutation.hs | 4 ++-- agora/Agora/Effect/NoOp.hs | 6 +++--- agora/Agora/Effect/TreasuryWithdrawal.hs | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/agora/Agora/Effect.hs b/agora/Agora/Effect.hs index 8fb40ba..c35ed55 100644 --- a/agora/Agora/Effect.hs +++ b/agora/Agora/Effect.hs @@ -23,7 +23,7 @@ import Plutus.V1.Ledger.Value (CurrencySymbol) -} makeEffect :: forall (datum :: PType). - (PIsData datum, PTryFrom PData datum) => + (PIsData datum, PTryFrom PData (PAsData datum)) => CurrencySymbol -> (forall (s :: S). Term s PCurrencySymbol -> Term s datum -> Term s PTxOutRef -> Term s (PAsData PTxInfo) -> Term s POpaque) -> ClosedTerm PValidator @@ -35,7 +35,7 @@ makeEffect gatCs' f = -- convert input datum, PData, into desierable type -- the way this conversion is performed should be defined -- by PTryFrom for each datum in effect script. - (datum', _) <- tctryFrom @datum datum + (pfromData -> datum', _) <- tctryFrom datum -- ensure purpose is Spending. PSpending txOutRef <- tcmatch $ pfromData ctx.purpose diff --git a/agora/Agora/Effect/GovernorMutation.hs b/agora/Agora/Effect/GovernorMutation.hs index af98850..20ec5ba 100644 --- a/agora/Agora/Effect/GovernorMutation.hs +++ b/agora/Agora/Effect/GovernorMutation.hs @@ -106,8 +106,8 @@ instance PUnsafeLiftDecl PMutateGovernorDatum where type PLifted PMutateGovernor deriving via (DerivePConstantViaData MutateGovernorDatum PMutateGovernorDatum) instance (PConstantDecl MutateGovernorDatum) -- TODO: Derive this. -instance PTryFrom PData PMutateGovernorDatum where - type PTryFromExcess PData PMutateGovernorDatum = Const () +instance PTryFrom PData (PAsData PMutateGovernorDatum) where + type PTryFromExcess PData (PAsData PMutateGovernorDatum) = Const () ptryFrom' d k = k (punsafeCoerce d, ()) diff --git a/agora/Agora/Effect/NoOp.hs b/agora/Agora/Effect/NoOp.hs index a384675..39c63ee 100644 --- a/agora/Agora/Effect/NoOp.hs +++ b/agora/Agora/Effect/NoOp.hs @@ -18,13 +18,13 @@ import Plutus.V1.Ledger.Value (CurrencySymbol) newtype PNoOp (s :: S) = PNoOp (Term s PUnit) deriving (PlutusType, PIsData) via (DerivePNewtype PNoOp PUnit) -instance PTryFrom PData PNoOp where - type PTryFromExcess PData PNoOp = Const () +instance PTryFrom PData (PAsData PNoOp) where + type PTryFromExcess PData (PAsData PNoOp) = Const () ptryFrom' _ cont = -- JUSTIFICATION: -- We don't care anything about data. -- It should always be reduced to Unit. - cont (pcon $ PNoOp (pconstant ()), ()) + cont (pdata $ pcon $ PNoOp (pconstant ()), ()) -- | Dummy effect which can only burn its GAT. noOpValidator :: CurrencySymbol -> ClosedTerm PValidator diff --git a/agora/Agora/Effect/TreasuryWithdrawal.hs b/agora/Agora/Effect/TreasuryWithdrawal.hs index 5bad045..6bb2851 100644 --- a/agora/Agora/Effect/TreasuryWithdrawal.hs +++ b/agora/Agora/Effect/TreasuryWithdrawal.hs @@ -82,8 +82,8 @@ deriving via instance (PConstantDecl TreasuryWithdrawalDatum) -instance PTryFrom PData PTreasuryWithdrawalDatum where - type PTryFromExcess PData PTreasuryWithdrawalDatum = Const () +instance PTryFrom PData (PAsData PTreasuryWithdrawalDatum) where + type PTryFromExcess PData (PAsData PTreasuryWithdrawalDatum) = Const () ptryFrom' opq cont = -- TODO: This should not use 'punsafeCoerce'. -- Blocked by 'PCredential', and 'PTuple'.