Modified formatting, hopefully passes CI

This commit is contained in:
Riley Kilgore 2022-03-10 06:16:33 -08:00
parent 9d1952e981
commit d0595f4869
2 changed files with 93 additions and 85 deletions

View file

@ -1,10 +1,10 @@
{-# LANGUAGE TemplateHaskell #-}
{- | {- |
Module : Agora.MultiSig Module : Agora.MultiSig
Maintainer : riley_kilgore@outlook.com Maintainer : riley_kilgore@outlook.com
Description: A basic N of M multisignature validation function. Description: A basic N of M multisignature validation function.
-} -}
{-# LANGUAGE TemplateHaskell #-}
module Agora.MultiSig ( module Agora.MultiSig (
validatedByMultisig, validatedByMultisig,
pvalidatedByMultisig, pvalidatedByMultisig,
@ -27,7 +27,7 @@ import Plutarch.Lift (
import Plutarch.Monadic qualified as P import Plutarch.Monadic qualified as P
import Plutus.V1.Ledger.Crypto (PubKeyHash) import Plutus.V1.Ledger.Crypto (PubKeyHash)
import qualified PlutusTx import PlutusTx qualified
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -41,19 +41,25 @@ import Prelude
are present on a transaction. are present on a transaction.
-} -}
data MultiSig = MultiSig data MultiSig = MultiSig
{ keys :: [PubKeyHash] { keys :: [PubKeyHash]
-- ^ List of PubKeyHashes that must be present in the list of signatories. -- ^ List of PubKeyHashes that must be present in the list of signatories.
, minSigs :: Integer , minSigs :: Integer
} deriving stock (GHC.Generic) }
deriving anyclass (Generic) deriving stock (GHC.Generic)
deriving anyclass (Generic)
PlutusTx.makeLift ''MultiSig PlutusTx.makeLift ''MultiSig
PlutusTx.unstableMakeIsData ''MultiSig PlutusTx.unstableMakeIsData ''MultiSig
newtype PMultiSig (s :: S) = PMultiSig newtype PMultiSig (s :: S) = PMultiSig
{ getMultiSig :: { getMultiSig ::
Term s (PDataRecord '[ "keys" ':= PBuiltinList (PAsData PPubKeyHash) Term
, "minSigs" ':= PInteger]) s
( PDataRecord
'[ "keys" ':= PBuiltinList (PAsData PPubKeyHash)
, "minSigs" ':= PInteger
]
)
} }
deriving stock (GHC.Generic) deriving stock (GHC.Generic)
deriving anyclass (Generic) deriving anyclass (Generic)
@ -68,9 +74,7 @@ deriving via (DerivePConstantViaData MultiSig PMultiSig) instance (PConstant Mul
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
validatedByMultisig :: MultiSig -> Term s (PScriptContext :--> PBool) validatedByMultisig :: MultiSig -> Term s (PScriptContext :--> PBool)
validatedByMultisig params = validatedByMultisig params = pvalidatedByMultisig # pconstant params
plam $ \ctx' -> P.do
pvalidatedByMultisig # (pconstant params) # ctx'
pvalidatedByMultisig :: Term s (PMultiSig :--> PScriptContext :--> PBool) pvalidatedByMultisig :: Term s (PMultiSig :--> PScriptContext :--> PBool)
pvalidatedByMultisig = pvalidatedByMultisig =
@ -78,7 +82,11 @@ pvalidatedByMultisig =
ctx <- pletFields @'["txInfo", "purpose"] ctx' ctx <- pletFields @'["txInfo", "purpose"] ctx'
multi <- pletFields @'["keys", "minSigs"] multi' multi <- pletFields @'["keys", "minSigs"] multi'
let signatories = pfield @"signatories" # ctx.txInfo let signatories = pfield @"signatories" # ctx.txInfo
((pfromData multi.minSigs) #<= (plength #$ pfilter ( (pfromData multi.minSigs)
# (plam $ \a -> #<= ( plength #$ pfilter
(pelem # a # pfromData signatories)) # ( plam $ \a ->
# multi.keys)) (pelem # a # pfromData signatories)
)
# multi.keys
)
)