From fecbf6678282732aff01c21ea6de62630df1fb2b Mon Sep 17 00:00:00 2001 From: Seungheon Oh Date: Mon, 11 Apr 2022 18:43:50 -0500 Subject: [PATCH] formatted Treasury Withdrawal Effect --- agora/Agora/Effect/TreasuryWithdrawal.hs | 68 ++++++++++++++---------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/agora/Agora/Effect/TreasuryWithdrawal.hs b/agora/Agora/Effect/TreasuryWithdrawal.hs index 9a32143..f56391c 100644 --- a/agora/Agora/Effect/TreasuryWithdrawal.hs +++ b/agora/Agora/Effect/TreasuryWithdrawal.hs @@ -3,25 +3,31 @@ Module : Agora.Effect.TreasuryWithdrawal Maintainer : seungheon.ooh@gmail.com Description: An Effect that withdraws treasury deposit -} -module Agora.Effect.TreasuryWithdrawal (treasuryWithdrawalDatum) where +module Agora.Effect.TreasuryWithdrawal (PTreasuryWithdrawalDatum, treasuryWithdrawalValidator) where import GHC.Generics qualified as GHC -import Generics.SOP +import Generics.SOP (Generic, I (I)) -import Agora.Effect -import Agora.Utils -import Plutus.V1.Ledger.Value -import Plutarch -import qualified Plutarch.Monadic as P -import Plutarch.Api.V1 -import Plutarch.DataRepr +import Agora.Effect (makeEffect) +import Agora.Utils (passert) +import Plutarch (popaque) +import Plutarch.Api.V1 ( + PCredential, + PTuple, + PValidator, + PValue, + ptuple, + ) +import Plutarch.DataRepr (PDataFields, PIsDataReprInstances (..)) +import Plutarch.Monadic qualified as P +import Plutus.V1.Ledger.Value (CurrencySymbol) data PTreasuryWithdrawalDatum (s :: S) = PTreasuryWithdrawalDatum ( Term s - (PDataRecord - '[ "receivers" ':= PBuiltinList (PAsData (PTuple PCredential PValue)) ] + ( PDataRecord + '["receivers" ':= PBuiltinList (PAsData (PTuple PCredential PValue))] ) ) deriving stock (GHC.Generic) @@ -30,22 +36,26 @@ data PTreasuryWithdrawalDatum (s :: S) (PlutusType, PIsData, PDataFields) via PIsDataReprInstances PTreasuryWithdrawalDatum -treasuryWithdrawalDatum :: forall {s :: S}. CurrencySymbol -> Term s PValidator -treasuryWithdrawalDatum currSymbol = makeEffect currSymbol $ +treasuryWithdrawalValidator :: forall {s :: S}. CurrencySymbol -> Term s PValidator +treasuryWithdrawalValidator currSymbol = makeEffect currSymbol $ \_cs (_datum :: Term _ PTreasuryWithdrawalDatum) _txOutRef _txInfo -> P.do - let outputs = pmap # - plam (\_out -> P.do - out <- pletFields @'["address", "value"] $ pfromData _out - cred <- pletFields @'["credential"] $ pfromData out.address - pdata $ ptuple # cred.credential # out.value - ) #$ - pfield @"outputs" # _txInfo - recivers = pfromData (pfield @"receivers" # _datum) - checkOutputs = pall # plam id #$ pmap # - plam (\_out -> P.do - pelem # _out # outputs - ) #$ - recivers - passert "Transaction output does not match receivers" checkOutputs - popaque $ pconstant () - + let outputs = + pmap + # plam + ( \_out -> P.do + out <- pletFields @'["address", "value"] $ pfromData _out + cred <- pletFields @'["credential"] $ pfromData out.address + pdata $ ptuple # cred.credential # out.value + ) + #$ pfield @"outputs" + # _txInfo + recivers = pfromData $ pfield @"receivers" # _datum + checkOutputs = + pall # plam id #$ pmap + # plam + ( \_out -> P.do + pelem # _out # outputs + ) + #$ recivers + passert "Transaction output does not match receivers" checkOutputs + popaque $ pconstant ()