Add verify_transform utility.
This commit is contained in:
parent
7c86f96035
commit
5c804fbfd0
|
@ -14,6 +14,9 @@ required-features = ["verification"]
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "compute"
|
name = "compute"
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "verify_transform"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
phase2 = "0.2.1"
|
phase2 = "0.2.1"
|
||||||
pairing = "0.14"
|
pairing = "0.14"
|
||||||
|
|
|
@ -13,13 +13,13 @@ fn main() {
|
||||||
let params = File::open("params").unwrap();
|
let params = File::open("params").unwrap();
|
||||||
let mut params = BufReader::with_capacity(1024 * 1024, params);
|
let mut params = BufReader::with_capacity(1024 * 1024, params);
|
||||||
|
|
||||||
let sapling_spend = phase2::MPCParameters::read(&mut params, false)
|
let sapling_spend = phase2::MPCParameters::read(&mut params, true)
|
||||||
.expect("couldn't deserialize Sapling Spend params");
|
.expect("couldn't deserialize Sapling Spend params");
|
||||||
|
|
||||||
let sapling_output = phase2::MPCParameters::read(&mut params, false)
|
let sapling_output = phase2::MPCParameters::read(&mut params, true)
|
||||||
.expect("couldn't deserialize Sapling Output params");
|
.expect("couldn't deserialize Sapling Output params");
|
||||||
|
|
||||||
let sprout_joinsplit = phase2::MPCParameters::read(&mut params, false)
|
let sprout_joinsplit = phase2::MPCParameters::read(&mut params, true)
|
||||||
.expect("couldn't deserialize Sprout JoinSplit params");
|
.expect("couldn't deserialize Sprout JoinSplit params");
|
||||||
|
|
||||||
let sapling_spend_contributions = sapling_spend.verify(sapling_crypto::circuit::sapling::Spend {
|
let sapling_spend_contributions = sapling_spend.verify(sapling_crypto::circuit::sapling::Spend {
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
extern crate phase2;
|
||||||
|
extern crate pairing;
|
||||||
|
extern crate blake2_rfc;
|
||||||
|
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::BufReader;
|
||||||
|
use blake2_rfc::blake2b::Blake2b;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let params = File::open("params").unwrap();
|
||||||
|
let mut params = BufReader::with_capacity(1024 * 1024, params);
|
||||||
|
|
||||||
|
let new_params = File::open("new_params").unwrap();
|
||||||
|
let mut new_params = BufReader::with_capacity(1024 * 1024, new_params);
|
||||||
|
|
||||||
|
let sapling_spend = phase2::MPCParameters::read(&mut params, false)
|
||||||
|
.expect("couldn't deserialize Sapling Spend params");
|
||||||
|
|
||||||
|
let sapling_output = phase2::MPCParameters::read(&mut params, false)
|
||||||
|
.expect("couldn't deserialize Sapling Output params");
|
||||||
|
|
||||||
|
let sprout_joinsplit = phase2::MPCParameters::read(&mut params, false)
|
||||||
|
.expect("couldn't deserialize Sprout JoinSplit params");
|
||||||
|
|
||||||
|
let new_sapling_spend = phase2::MPCParameters::read(&mut new_params, true)
|
||||||
|
.expect("couldn't deserialize Sapling Spend new_params");
|
||||||
|
|
||||||
|
let new_sapling_output = phase2::MPCParameters::read(&mut new_params, true)
|
||||||
|
.expect("couldn't deserialize Sapling Output new_params");
|
||||||
|
|
||||||
|
let new_sprout_joinsplit = phase2::MPCParameters::read(&mut new_params, true)
|
||||||
|
.expect("couldn't deserialize Sprout JoinSplit new_params");
|
||||||
|
|
||||||
|
let h1 = match phase2::verify_contribution(&sapling_spend, &new_sapling_spend) {
|
||||||
|
Ok(hash) => hash,
|
||||||
|
Err(_) => panic!("invalid transformation!")
|
||||||
|
};
|
||||||
|
|
||||||
|
let h2 = match phase2::verify_contribution(&sapling_output, &new_sapling_output) {
|
||||||
|
Ok(hash) => hash,
|
||||||
|
Err(_) => panic!("invalid transformation!")
|
||||||
|
};
|
||||||
|
|
||||||
|
let h3 = match phase2::verify_contribution(&sprout_joinsplit, &new_sprout_joinsplit) {
|
||||||
|
Ok(hash) => hash,
|
||||||
|
Err(_) => panic!("invalid transformation!")
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut h = Blake2b::new(64);
|
||||||
|
h.update(&h1);
|
||||||
|
h.update(&h2);
|
||||||
|
h.update(&h3);
|
||||||
|
let h = h.finalize();
|
||||||
|
|
||||||
|
println!("{}", into_hex(h.as_ref()));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn into_hex(h: &[u8]) -> String {
|
||||||
|
let mut f = String::new();
|
||||||
|
|
||||||
|
for byte in &h[..] {
|
||||||
|
f += &format!("{:02x}", byte);
|
||||||
|
}
|
||||||
|
|
||||||
|
f
|
||||||
|
}
|
Loading…
Reference in New Issue