From 30a44483a1e2c162b84f8535052afa124246b73a Mon Sep 17 00:00:00 2001 From: Hongrui Fang Date: Thu, 10 Nov 2022 18:47:07 +0800 Subject: [PATCH] disallow calling `UnlockStake` without any stake inputs --- agora/Agora/Proposal/Scripts.hs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/agora/Agora/Proposal/Scripts.hs b/agora/Agora/Proposal/Scripts.hs index 2d70e33..7a362a3 100644 --- a/agora/Agora/Proposal/Scripts.hs +++ b/agora/Agora/Proposal/Scripts.hs @@ -325,16 +325,21 @@ proposalValidator = presolveStakeInputDatum # (ptoScottEncodingT # sstClass) # txInfoF.datums + spendStakes' :: Term _ ((PStakeInputsContext :--> PUnit) :--> PUnit) <- pletC $ - plam $ - let stakeInputs = - pmapMaybe @PList - # resolveStakeInputDatum - # pfromData txInfoF.inputs + plam $ \val -> unTermCont $ do + stakeInputs <- + pletC $ + pmapMaybe @PList + # resolveStakeInputDatum + # pfromData txInfoF.inputs - ctx = pcon $ PStakeInputsContext stakeInputs - in (# ctx) + pguardC "Stake inputs not null" $ + pnot #$ pnull # stakeInputs + + let ctx = pcon $ PStakeInputsContext stakeInputs + pure $ val # ctx let spendStakes :: ( PStakeInputsContext _ ->