Skip to content

Commit

Permalink
Add checks for requiresSignature
Browse files Browse the repository at this point in the history
  • Loading branch information
jhbertra committed Nov 24, 2022
1 parent 278c54f commit 8c3af48
Showing 1 changed file with 22 additions and 4 deletions.
Expand Up @@ -88,7 +88,7 @@ violations marloweVersion marloweContext utxos constraints txBodyContent = fold
, ("mustPayToRole: " <>) <$> mustPayToRoleViolations marloweVersion marloweContext constraints txBodyContent
, ("mustConsumeMarloweOutput: " <>) <$> mustConsumeMarloweOutputViolations marloweVersion marloweContext constraints txBodyContent
, ("mustConsumePayouts: " <>) <$> mustConsumePayoutsViolations marloweVersion marloweContext constraints txBodyContent
, ("requiresSignature: " <>) <$> requiresSignatureViolations marloweVersion constraints txBodyContent
, ("requiresSignature: " <>) <$> requiresSignatureViolations marloweVersion utxos constraints txBodyContent
, ("requiresMetadata: " <>) <$> requiresMetadataViolations marloweVersion constraints txBodyContent
]

Expand Down Expand Up @@ -300,10 +300,28 @@ mustConsumePayoutsViolations MarloweV1 MarloweContext{..} TxConstraints{..} TxBo
, check (all isPayoutUtxo matchingInputs) "Not all matching inputs come from the payout address"
]


requiresSignatureViolations
:: MarloweVersion v -> TxConstraints v -> TxBodyContent BuildTx BabbageEra -> [String]
requiresSignatureViolations MarloweV1 TxConstraints{..} TxBodyContent{..} = []
:: MarloweVersion v
-> Chain.UTxOs
-> TxConstraints v
-> TxBodyContent BuildTx BabbageEra
-> [String]
requiresSignatureViolations MarloweV1 utxos TxConstraints{..} TxBodyContent{..} = do
pkh <- Set.toList signatureConstraints
let
inInput ref = case Chain.lookupUTxO ref utxos of
Nothing -> False
Just Chain.TransactionOutput{..} -> case Chain.paymentCredential address of
Just (Chain.PaymentKeyCredential pkh') -> pkh' == pkh
_ -> False
inExtraKeyWits = case txExtraKeyWits of
TxExtraKeyWitnessesNone -> False
TxExtraKeyWitnesses _ hashes -> any ((== pkh) . fromCardanoPaymentKeyHash) hashes
inInputs = any (inInput . fromCardanoTxIn . fst) txIns
(("pkh" <> show pkh <> ": ") <>) <$> check
(inExtraKeyWits || inInputs)
"Witness missing from either extra key wits or inputs"


requiresMetadataViolations
:: MarloweVersion v -> TxConstraints v -> TxBodyContent BuildTx BabbageEra -> [String]
Expand Down

0 comments on commit 8c3af48

Please sign in to comment.