add comments to Multisig module
This commit is contained in:
parent
d8ae2f7b33
commit
9dc89bcf55
2 changed files with 25 additions and 17 deletions
|
|
@ -27,7 +27,8 @@ import Spec.Sample.Stake qualified as Stake
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
tests :: [TestTree]
|
tests :: [TestTree]
|
||||||
tests =
|
tests =
|
||||||
[ testGroup "policy" $
|
[ testGroup
|
||||||
|
"policy"
|
||||||
[ scriptTest "minting" (compile $ stakePolicy Stake.stake # pforgetData (pconstantData ()) # pconstant Stake.stakeCreation)
|
[ scriptTest "minting" (compile $ stakePolicy Stake.stake # pforgetData (pconstantData ()) # pconstant Stake.stakeCreation)
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
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.
|
||||||
|
|
||||||
|
A basic N of M multisignature validation function.
|
||||||
-}
|
-}
|
||||||
module Agora.MultiSig (
|
module Agora.MultiSig (
|
||||||
validatedByMultisig,
|
validatedByMultisig,
|
||||||
|
|
@ -13,7 +15,7 @@ module Agora.MultiSig (
|
||||||
|
|
||||||
import Plutarch.Api.V1 (
|
import Plutarch.Api.V1 (
|
||||||
PPubKeyHash,
|
PPubKeyHash,
|
||||||
PScriptContext (..),
|
PTxInfo (..),
|
||||||
)
|
)
|
||||||
import Plutarch.DataRepr (
|
import Plutarch.DataRepr (
|
||||||
DerivePConstantViaData (DerivePConstantViaData),
|
DerivePConstantViaData (DerivePConstantViaData),
|
||||||
|
|
@ -51,6 +53,7 @@ data MultiSig = MultiSig
|
||||||
PlutusTx.makeLift ''MultiSig
|
PlutusTx.makeLift ''MultiSig
|
||||||
PlutusTx.unstableMakeIsData ''MultiSig
|
PlutusTx.unstableMakeIsData ''MultiSig
|
||||||
|
|
||||||
|
-- | Plutarch-level MultiSig
|
||||||
newtype PMultiSig (s :: S) = PMultiSig
|
newtype PMultiSig (s :: S) = PMultiSig
|
||||||
{ getMultiSig ::
|
{ getMultiSig ::
|
||||||
Term
|
Term
|
||||||
|
|
@ -73,20 +76,24 @@ deriving via (DerivePConstantViaData MultiSig PMultiSig) instance (PConstant Mul
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
validatedByMultisig :: MultiSig -> Term s (PScriptContext :--> PBool)
|
-- | Check if a Haskell-level MultiSig signs this transaction
|
||||||
validatedByMultisig params = pvalidatedByMultisig # pconstant params
|
validatedByMultisig :: MultiSig -> Term s (PTxInfo :--> PBool)
|
||||||
|
validatedByMultisig params =
|
||||||
|
phoistAcyclic $
|
||||||
|
pvalidatedByMultisig # pconstant params
|
||||||
|
|
||||||
pvalidatedByMultisig :: Term s (PMultiSig :--> PScriptContext :--> PBool)
|
-- | Check if a Plutarch-level MultiSig signs this transaction
|
||||||
|
pvalidatedByMultisig :: Term s (PMultiSig :--> PTxInfo :--> PBool)
|
||||||
pvalidatedByMultisig =
|
pvalidatedByMultisig =
|
||||||
plam $ \multi' ctx' -> P.do
|
phoistAcyclic $
|
||||||
ctx <- pletFields @'["txInfo", "purpose"] ctx'
|
plam $ \multi' txInfo -> P.do
|
||||||
multi <- pletFields @'["keys", "minSigs"] multi'
|
multi <- pletFields @'["keys", "minSigs"] multi'
|
||||||
let signatories = pfield @"signatories" # ctx.txInfo
|
let signatories = pfield @"signatories" # txInfo
|
||||||
(pfromData multi.minSigs)
|
pfromData multi.minSigs
|
||||||
#<= ( plength #$ pfilter
|
#<= ( plength #$ pfilter
|
||||||
# plam
|
# plam
|
||||||
( \a ->
|
( \a ->
|
||||||
pelem # a # pfromData signatories
|
pelem # a # pfromData signatories
|
||||||
)
|
)
|
||||||
# multi.keys
|
# multi.keys
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue