Addressed PR comments.

This commit is contained in:
Riley Kilgore 2022-03-09 12:52:32 -08:00
parent aa6626c913
commit c98b3b9c89

View file

@ -41,8 +41,8 @@ data MultiSig = MultiSig
newtype PMultiSig (s :: S) = PMultiSig newtype PMultiSig (s :: S) = PMultiSig
{ getMultiSig :: { getMultiSig ::
Term s (PDataRecord '[ "pkeys" ':= PBuiltinList (PAsData PPubKeyHash) Term s (PDataRecord '[ "keys" ':= PBuiltinList (PAsData PPubKeyHash)
, "pminSigs" ':= PInteger]) , "minSigs" ':= PInteger])
} }
deriving stock (GHC.Generic) deriving stock (GHC.Generic)
deriving anyclass (Generic) deriving anyclass (Generic)
@ -65,9 +65,9 @@ pubKeysToPPubKeys xs = case xs of
multisigToPMultisig :: forall s. MultiSig -> Term s PMultiSig multisigToPMultisig :: forall s. MultiSig -> Term s PMultiSig
multisigToPMultisig m = multisigToPMultisig m =
pcon $ PMultiSig (pdcons @"pkeys" @(PBuiltinList (PAsData PPubKeyHash)) pcon $ PMultiSig (pdcons @"keys" @(PBuiltinList (PAsData PPubKeyHash))
# (pdata $ pcon (pubKeysToPPubKeys m.keys)) # (pdata $ pcon (pubKeysToPPubKeys m.keys))
#$ pdcons @"pminSigs" @PInteger # (pdata $ fromInteger m.minSigs) # pdnil) #$ pdcons @"minSigs" @PInteger # (pdata $ fromInteger m.minSigs) # pdnil)
validatedByMultisig :: MultiSig -> Term s (PScriptContext :--> PBool) validatedByMultisig :: MultiSig -> Term s (PScriptContext :--> PBool)
validatedByMultisig params = validatedByMultisig params =
@ -78,12 +78,9 @@ pvalidatedByMultisig :: Term s (PMultiSig :--> PScriptContext :--> PBool)
pvalidatedByMultisig = pvalidatedByMultisig =
plam $ \multi' ctx' -> P.do plam $ \multi' ctx' -> P.do
ctx <- pletFields @'["txInfo", "purpose"] ctx' ctx <- pletFields @'["txInfo", "purpose"] ctx'
multi <- pletFields @'["pkeys", "pminSigs"] multi' multi <- pletFields @'["keys", "minSigs"] multi'
let signatories = pfield @"signatories" # ctx.txInfo let signatories = pfield @"signatories" # ctx.txInfo
pif ((pfromData multi.minSigs) #<= (plength #$ pfilter
((pfromData multi.pminSigs) #<= (plength #$ pfilter # (plam $ \a ->
# (plam $ \a -> (pelem # a # pfromData signatories))
(pelem # a # pfromData signatories)) # multi.keys))
# multi.pkeys))
(pcon PTrue)
perror