Enforce zk-SNARK validity during consensus.

This commit is contained in:
Sean Bowe
2016-01-08 02:00:54 -07:00
parent 0a87fc4ad0
commit 03bff15fe2
4 changed files with 23 additions and 1 deletions

View File

@@ -945,6 +945,17 @@ bool CheckTransaction(const CTransaction& tx, CValidationState &state)
if (txin.prevout.IsNull())
return state.DoS(10, error("CheckTransaction(): prevout is null"),
REJECT_INVALID, "bad-txns-prevout-null");
// Ensure that zk-SNARKs verify
if (state.PerformPourVerification()) {
BOOST_FOREACH(const CPourTx &pour, tx.vpour) {
if (!pour.Verify(*pzerocashParams)) {
return state.DoS(100, error("CheckTransaction(): pour does not verify"),
REJECT_INVALID, "bad-txns-pour-verification-failed");
}
}
}
}
return true;