mirror of
https://github.com/Qortal/pirate-librustzcash.git
synced 2025-02-11 17:55:46 +00:00
Make loading of Sprout key optional in zcash_proofs API
This commit is contained in:
parent
2d43e3be7c
commit
9ae5a9d624
@ -210,8 +210,8 @@ fn init_zksnark_params(
|
||||
spend_hash,
|
||||
output_path,
|
||||
output_hash,
|
||||
sprout_path,
|
||||
sprout_hash,
|
||||
Some(sprout_path),
|
||||
Some(sprout_hash),
|
||||
);
|
||||
|
||||
// Caller is responsible for calling this function once, so
|
||||
@ -223,7 +223,7 @@ fn init_zksnark_params(
|
||||
|
||||
SAPLING_SPEND_VK = Some(spend_vk);
|
||||
SAPLING_OUTPUT_VK = Some(output_vk);
|
||||
SPROUT_GROTH16_VK = Some(sprout_vk);
|
||||
SPROUT_GROTH16_VK = Some(sprout_vk.unwrap());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,25 +20,26 @@ pub fn load_parameters(
|
||||
spend_hash: &str,
|
||||
output_path: &Path,
|
||||
output_hash: &str,
|
||||
sprout_path: &Path,
|
||||
sprout_hash: &str,
|
||||
sprout_path: Option<&Path>,
|
||||
sprout_hash: Option<&str>,
|
||||
) -> (
|
||||
Parameters<Bls12>,
|
||||
PreparedVerifyingKey<Bls12>,
|
||||
Parameters<Bls12>,
|
||||
PreparedVerifyingKey<Bls12>,
|
||||
PreparedVerifyingKey<Bls12>,
|
||||
Option<PreparedVerifyingKey<Bls12>>,
|
||||
) {
|
||||
// Load from each of the paths
|
||||
let spend_fs = File::open(spend_path).expect("couldn't load Sapling spend parameters file");
|
||||
let output_fs = File::open(output_path).expect("couldn't load Sapling output parameters file");
|
||||
let sprout_fs = File::open(sprout_path).expect("couldn't load Sprout groth16 parameters file");
|
||||
let sprout_fs =
|
||||
sprout_path.map(|p| File::open(p).expect("couldn't load Sprout groth16 parameters file"));
|
||||
|
||||
let mut spend_fs = hashreader::HashReader::new(BufReader::with_capacity(1024 * 1024, spend_fs));
|
||||
let mut output_fs =
|
||||
hashreader::HashReader::new(BufReader::with_capacity(1024 * 1024, output_fs));
|
||||
let mut sprout_fs =
|
||||
hashreader::HashReader::new(BufReader::with_capacity(1024 * 1024, sprout_fs));
|
||||
sprout_fs.map(|fs| hashreader::HashReader::new(BufReader::with_capacity(1024 * 1024, fs)));
|
||||
|
||||
// Deserialize params
|
||||
let spend_params = Parameters::<Bls12>::read(&mut spend_fs, false)
|
||||
@ -49,8 +50,10 @@ pub fn load_parameters(
|
||||
// We only deserialize the verifying key for the Sprout parameters, which
|
||||
// appears at the beginning of the parameter file. The rest is loaded
|
||||
// during proving time.
|
||||
let sprout_vk = VerifyingKey::<Bls12>::read(&mut sprout_fs)
|
||||
.expect("couldn't deserialize Sprout Groth16 verifying key");
|
||||
let sprout_vk = sprout_fs.as_mut().map(|mut fs| {
|
||||
VerifyingKey::<Bls12>::read(&mut fs)
|
||||
.expect("couldn't deserialize Sprout Groth16 verifying key")
|
||||
});
|
||||
|
||||
// There is extra stuff (the transcript) at the end of the parameter file which is
|
||||
// used to verify the parameter validity, but we're not interested in that. We do
|
||||
@ -61,8 +64,10 @@ pub fn load_parameters(
|
||||
.expect("couldn't finish reading Sapling spend parameter file");
|
||||
io::copy(&mut output_fs, &mut sink)
|
||||
.expect("couldn't finish reading Sapling output parameter file");
|
||||
io::copy(&mut sprout_fs, &mut sink)
|
||||
.expect("couldn't finish reading Sprout groth16 parameter file");
|
||||
if let Some(mut sprout_fs) = sprout_fs.as_mut() {
|
||||
io::copy(&mut sprout_fs, &mut sink)
|
||||
.expect("couldn't finish reading Sprout groth16 parameter file");
|
||||
}
|
||||
|
||||
if spend_fs.into_hash() != spend_hash {
|
||||
panic!("Sapling spend parameter file is not correct, please clean your `~/.zcash-params/` and re-run `fetch-params`.");
|
||||
@ -72,14 +77,14 @@ pub fn load_parameters(
|
||||
panic!("Sapling output parameter file is not correct, please clean your `~/.zcash-params/` and re-run `fetch-params`.");
|
||||
}
|
||||
|
||||
if sprout_fs.into_hash() != sprout_hash {
|
||||
if sprout_fs.map(|fs| fs.into_hash()) != sprout_hash.map(|h| h.to_owned()) {
|
||||
panic!("Sprout groth16 parameter file is not correct, please clean your `~/.zcash-params/` and re-run `fetch-params`.");
|
||||
}
|
||||
|
||||
// Prepare verifying keys
|
||||
let spend_vk = prepare_verifying_key(&spend_params.vk);
|
||||
let output_vk = prepare_verifying_key(&output_params.vk);
|
||||
let sprout_vk = prepare_verifying_key(&sprout_vk);
|
||||
let sprout_vk = sprout_vk.map(|vk| prepare_verifying_key(&vk));
|
||||
|
||||
(spend_params, spend_vk, output_params, output_vk, sprout_vk)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user