Add optional bool to disable computation of proof in JSDescription constructor

This commit is contained in:
Jack Grigg 2016-08-24 15:49:38 +12:00
parent 77a99f4a2a
commit 5db5e42ec3
4 changed files with 18 additions and 7 deletions

View File

@ -15,11 +15,14 @@ JSDescription::JSDescription(ZCJoinSplit& params,
const boost::array<libzcash::JSInput, ZC_NUM_JS_INPUTS>& inputs,
const boost::array<libzcash::JSOutput, ZC_NUM_JS_OUTPUTS>& outputs,
CAmount vpub_old,
CAmount vpub_new) : vpub_old(vpub_old), vpub_new(vpub_new), anchor(anchor)
CAmount vpub_new,
bool computeProof) : vpub_old(vpub_old), vpub_new(vpub_new), anchor(anchor)
{
boost::array<libzcash::Note, ZC_NUM_JS_OUTPUTS> notes;
params.loadProvingKey();
if (computeProof) {
params.loadProvingKey();
}
proof = params.prove(
inputs,
outputs,
@ -33,7 +36,8 @@ JSDescription::JSDescription(ZCJoinSplit& params,
commitments,
vpub_old,
vpub_new,
anchor
anchor,
computeProof
);
}

View File

@ -74,7 +74,8 @@ public:
const boost::array<libzcash::JSInput, ZC_NUM_JS_INPUTS>& inputs,
const boost::array<libzcash::JSOutput, ZC_NUM_JS_OUTPUTS>& outputs,
CAmount vpub_old,
CAmount vpub_new
CAmount vpub_new,
bool computeProof = true // Set to false in some tests
);
// Verifies that the JoinSplit proof is correct.

View File

@ -173,9 +173,10 @@ public:
boost::array<uint256, NumOutputs>& out_commitments,
uint64_t vpub_old,
uint64_t vpub_new,
const uint256& rt
const uint256& rt,
bool computeProof
) {
if (!pk) {
if (computeProof && !pk) {
throw std::runtime_error("JoinSplit proving key not loaded");
}
@ -231,6 +232,10 @@ public:
out_macs[i] = PRF_pk(inputs[i].key, i, h_sig);
}
if (!computeProof) {
return ZCProof();
}
protoboard<FieldT> pb;
{
joinsplit_gadget<FieldT, NumInputs, NumOutputs> g(pb);

View File

@ -73,7 +73,8 @@ public:
boost::array<uint256, NumOutputs>& out_commitments,
uint64_t vpub_old,
uint64_t vpub_new,
const uint256& rt
const uint256& rt,
bool computeProof = true
) = 0;
virtual bool verify(