desprout
This commit is contained in:
@@ -28,73 +28,5 @@ class JoinSplitCircuit : public JoinSplit<NumInputs, NumOutputs> {
|
|||||||
public:
|
public:
|
||||||
JoinSplitCircuit() {}
|
JoinSplitCircuit() {}
|
||||||
~JoinSplitCircuit() {}
|
~JoinSplitCircuit() {}
|
||||||
|
|
||||||
/*
|
|
||||||
SproutProof prove(
|
|
||||||
const std::array<JSInput, NumInputs>& inputs,
|
|
||||||
const std::array<JSOutput, NumOutputs>& outputs,
|
|
||||||
std::array<SproutNote, NumOutputs>& out_notes,
|
|
||||||
std::array<ZCNoteEncryption::Ciphertext, NumOutputs>& out_ciphertexts,
|
|
||||||
uint256& out_ephemeralKey,
|
|
||||||
const uint256& joinSplitPubKey,
|
|
||||||
uint256& out_randomSeed,
|
|
||||||
std::array<uint256, NumInputs>& out_macs,
|
|
||||||
std::array<uint256, NumInputs>& out_nullifiers,
|
|
||||||
std::array<uint256, NumOutputs>& out_commitments,
|
|
||||||
uint64_t vpub_old,
|
|
||||||
uint64_t vpub_new,
|
|
||||||
const uint256& rt,
|
|
||||||
bool computeProof,
|
|
||||||
uint256 *out_esk // Payment disclosure
|
|
||||||
) {
|
|
||||||
GrothProof proof;
|
|
||||||
return proof;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
template<size_t NumInputs, size_t NumOutputs>
|
|
||||||
JoinSplit<NumInputs, NumOutputs>* JoinSplit<NumInputs, NumOutputs>::Prepared()
|
|
||||||
{
|
|
||||||
return new JoinSplitCircuit<NumInputs, NumOutputs>();
|
|
||||||
}
|
|
||||||
|
|
||||||
template<size_t NumInputs, size_t NumOutputs>
|
|
||||||
uint256 JoinSplit<NumInputs, NumOutputs>::h_sig(
|
|
||||||
const uint256& randomSeed,
|
|
||||||
const std::array<uint256, NumInputs>& nullifiers,
|
|
||||||
const uint256& joinSplitPubKey
|
|
||||||
) {
|
|
||||||
const unsigned char personalization[crypto_generichash_blake2b_PERSONALBYTES]
|
|
||||||
= {'Z','c','a','s','h','C','o','m','p','u','t','e','h','S','i','g'};
|
|
||||||
|
|
||||||
std::vector<unsigned char> block(randomSeed.begin(), randomSeed.end());
|
|
||||||
|
|
||||||
for (size_t i = 0; i < NumInputs; i++) {
|
|
||||||
block.insert(block.end(), nullifiers[i].begin(), nullifiers[i].end());
|
|
||||||
}
|
|
||||||
|
|
||||||
block.insert(block.end(), joinSplitPubKey.begin(), joinSplitPubKey.end());
|
|
||||||
|
|
||||||
uint256 output;
|
|
||||||
|
|
||||||
if (crypto_generichash_blake2b_salt_personal(output.begin(), 32,
|
|
||||||
&block[0], block.size(),
|
|
||||||
NULL, 0, // No key.
|
|
||||||
NULL, // No salt.
|
|
||||||
personalization
|
|
||||||
) != 0)
|
|
||||||
{
|
|
||||||
throw std::logic_error("hash function failure");
|
|
||||||
}
|
|
||||||
|
|
||||||
return output;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template class JoinSplit<ZC_NUM_JS_INPUTS,
|
|
||||||
ZC_NUM_JS_OUTPUTS>;
|
|
||||||
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user