cargo fmt
This commit is contained in:
parent
7934d34502
commit
0535fae568
|
@ -1,22 +1,22 @@
|
|||
extern crate phase2;
|
||||
extern crate pairing;
|
||||
extern crate rand;
|
||||
extern crate blake2_rfc;
|
||||
extern crate byteorder;
|
||||
extern crate pairing;
|
||||
extern crate phase2;
|
||||
extern crate rand;
|
||||
|
||||
#[macro_use]
|
||||
extern crate hex_literal;
|
||||
|
||||
use std::fs::File;
|
||||
use std::io::{BufWriter, BufReader};
|
||||
use blake2_rfc::blake2b::Blake2b;
|
||||
use std::fs::File;
|
||||
use std::io::{BufReader, BufWriter};
|
||||
|
||||
fn main() {
|
||||
let current_params = File::open("params").expect("couldn't open `./params`");
|
||||
let mut current_params = BufReader::with_capacity(1024*1024, current_params);
|
||||
let mut current_params = BufReader::with_capacity(1024 * 1024, current_params);
|
||||
|
||||
let new_params = File::create("new_params").expect("couldn't create `./new_params`");
|
||||
let mut new_params = BufWriter::with_capacity(1024*1024, new_params);
|
||||
let mut new_params = BufWriter::with_capacity(1024 * 1024, new_params);
|
||||
|
||||
let mut sapling_spend = phase2::MPCParameters::read(&mut current_params, false)
|
||||
.expect("couldn't deserialize Sapling Spend params");
|
||||
|
@ -29,12 +29,13 @@ fn main() {
|
|||
|
||||
// Create an RNG based on the outcome of the random beacon
|
||||
let rng = &mut {
|
||||
use byteorder::{ReadBytesExt, BigEndian};
|
||||
use rand::{SeedableRng};
|
||||
use byteorder::{BigEndian, ReadBytesExt};
|
||||
use rand::chacha::ChaChaRng;
|
||||
use rand::SeedableRng;
|
||||
|
||||
// Place beacon value here (2^42 SHA256 hash of Bitcoin block hash #534861)
|
||||
let beacon_value: [u8; 32] = hex!("2bf41a959668e5b9b688e58d613b3dcc99ee159a880cf764ec67e6488d8b8af3");
|
||||
let beacon_value: [u8; 32] =
|
||||
hex!("2bf41a959668e5b9b688e58d613b3dcc99ee159a880cf764ec67e6488d8b8af3");
|
||||
|
||||
print!("Final result of beacon: ");
|
||||
for b in beacon_value.iter() {
|
||||
|
@ -46,7 +47,9 @@ fn main() {
|
|||
|
||||
let mut seed = [0u32; 8];
|
||||
for i in 0..8 {
|
||||
seed[i] = digest.read_u32::<BigEndian>().expect("digest is large enough for this to work");
|
||||
seed[i] = digest
|
||||
.read_u32::<BigEndian>()
|
||||
.expect("digest is large enough for this to work");
|
||||
}
|
||||
|
||||
ChaChaRng::from_seed(&seed)
|
||||
|
@ -56,9 +59,15 @@ fn main() {
|
|||
let h2 = sapling_output.contribute(rng);
|
||||
let h3 = sprout_joinsplit.contribute(rng);
|
||||
|
||||
sapling_spend.write(&mut new_params).expect("couldn't write new Sapling Spend params");
|
||||
sapling_output.write(&mut new_params).expect("couldn't write new Sapling Spend params");
|
||||
sprout_joinsplit.write(&mut new_params).expect("couldn't write new Sapling Spend params");
|
||||
sapling_spend
|
||||
.write(&mut new_params)
|
||||
.expect("couldn't write new Sapling Spend params");
|
||||
sapling_output
|
||||
.write(&mut new_params)
|
||||
.expect("couldn't write new Sapling Spend params");
|
||||
sprout_joinsplit
|
||||
.write(&mut new_params)
|
||||
.expect("couldn't write new Sapling Spend params");
|
||||
|
||||
let mut h = Blake2b::new(64);
|
||||
h.update(&h1);
|
||||
|
@ -66,9 +75,11 @@ fn main() {
|
|||
h.update(&h3);
|
||||
let h = h.finalize();
|
||||
|
||||
print!("Done!\n\n\
|
||||
Your contribution has been written to `./new_params`\n\n\
|
||||
The contribution you made is bound to the following hash:\n");
|
||||
print!(
|
||||
"Done!\n\n\
|
||||
Your contribution has been written to `./new_params`\n\n\
|
||||
The contribution you made is bound to the following hash:\n"
|
||||
);
|
||||
|
||||
for line in h.as_ref().chunks(16) {
|
||||
print!("\t");
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
extern crate phase2;
|
||||
extern crate pairing;
|
||||
extern crate rand;
|
||||
extern crate blake2_rfc;
|
||||
extern crate pairing;
|
||||
extern crate phase2;
|
||||
extern crate rand;
|
||||
|
||||
use std::fs::File;
|
||||
use std::io::{BufWriter, BufReader};
|
||||
use blake2_rfc::blake2b::Blake2b;
|
||||
use std::fs::File;
|
||||
use std::io::{BufReader, BufWriter};
|
||||
|
||||
fn main() {
|
||||
let current_params = File::open("params").expect("couldn't open `./params`");
|
||||
let mut current_params = BufReader::with_capacity(1024*1024, current_params);
|
||||
let mut current_params = BufReader::with_capacity(1024 * 1024, current_params);
|
||||
|
||||
let new_params = File::create("new_params").expect("couldn't create `./new_params`");
|
||||
let mut new_params = BufWriter::with_capacity(1024*1024, new_params);
|
||||
let mut new_params = BufWriter::with_capacity(1024 * 1024, new_params);
|
||||
|
||||
let mut sapling_spend = phase2::MPCParameters::read(&mut current_params, false)
|
||||
.expect("couldn't deserialize Sapling Spend params");
|
||||
|
@ -29,9 +29,15 @@ fn main() {
|
|||
let h2 = sapling_output.contribute(rng);
|
||||
let h3 = sprout_joinsplit.contribute(rng);
|
||||
|
||||
sapling_spend.write(&mut new_params).expect("couldn't write new Sapling Spend params");
|
||||
sapling_output.write(&mut new_params).expect("couldn't write new Sapling Spend params");
|
||||
sprout_joinsplit.write(&mut new_params).expect("couldn't write new Sapling Spend params");
|
||||
sapling_spend
|
||||
.write(&mut new_params)
|
||||
.expect("couldn't write new Sapling Spend params");
|
||||
sapling_output
|
||||
.write(&mut new_params)
|
||||
.expect("couldn't write new Sapling Spend params");
|
||||
sprout_joinsplit
|
||||
.write(&mut new_params)
|
||||
.expect("couldn't write new Sapling Spend params");
|
||||
|
||||
let mut h = Blake2b::new(64);
|
||||
h.update(&h1);
|
||||
|
@ -39,9 +45,11 @@ fn main() {
|
|||
h.update(&h3);
|
||||
let h = h.finalize();
|
||||
|
||||
print!("Done!\n\n\
|
||||
Your contribution has been written to `./new_params`\n\n\
|
||||
The contribution you made is bound to the following hash:\n");
|
||||
print!(
|
||||
"Done!\n\n\
|
||||
Your contribution has been written to `./new_params`\n\n\
|
||||
The contribution you made is bound to the following hash:\n"
|
||||
);
|
||||
|
||||
for line in h.as_ref().chunks(16) {
|
||||
print!("\t");
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
extern crate pairing;
|
||||
extern crate phase2;
|
||||
extern crate sapling_crypto;
|
||||
extern crate pairing;
|
||||
|
||||
use std::fs::File;
|
||||
use std::io::BufWriter;
|
||||
|
@ -20,8 +20,11 @@ fn main() {
|
|||
commitment_randomness: None,
|
||||
ar: None,
|
||||
auth_path: vec![None; 32], // Tree depth is 32 for sapling
|
||||
anchor: None
|
||||
}).unwrap().write(&mut params).unwrap();
|
||||
anchor: None,
|
||||
})
|
||||
.unwrap()
|
||||
.write(&mut params)
|
||||
.unwrap();
|
||||
|
||||
// Sapling output circuit
|
||||
phase2::MPCParameters::new(sapling_crypto::circuit::sapling::Output {
|
||||
|
@ -29,8 +32,11 @@ fn main() {
|
|||
value_commitment: None,
|
||||
payment_address: None,
|
||||
commitment_randomness: None,
|
||||
esk: None
|
||||
}).unwrap().write(&mut params).unwrap();
|
||||
esk: None,
|
||||
})
|
||||
.unwrap()
|
||||
.write(&mut params)
|
||||
.unwrap();
|
||||
|
||||
// Sprout joinsplit circuit
|
||||
phase2::MPCParameters::new(sapling_crypto::circuit::sprout::JoinSplit {
|
||||
|
@ -38,28 +44,37 @@ fn main() {
|
|||
vpub_new: None,
|
||||
h_sig: None,
|
||||
phi: None,
|
||||
inputs: vec![sapling_crypto::circuit::sprout::JSInput {
|
||||
value: None,
|
||||
a_sk: None,
|
||||
rho: None,
|
||||
r: None,
|
||||
auth_path: [None; 29] // Depth is 29 for Sprout
|
||||
}, sapling_crypto::circuit::sprout::JSInput {
|
||||
value: None,
|
||||
a_sk: None,
|
||||
rho: None,
|
||||
r: None,
|
||||
auth_path: [None; 29] // Depth is 29 for Sprout
|
||||
}],
|
||||
outputs: vec![sapling_crypto::circuit::sprout::JSOutput {
|
||||
value: None,
|
||||
a_pk: None,
|
||||
r: None
|
||||
}, sapling_crypto::circuit::sprout::JSOutput {
|
||||
value: None,
|
||||
a_pk: None,
|
||||
r: None
|
||||
}],
|
||||
inputs: vec![
|
||||
sapling_crypto::circuit::sprout::JSInput {
|
||||
value: None,
|
||||
a_sk: None,
|
||||
rho: None,
|
||||
r: None,
|
||||
auth_path: [None; 29], // Depth is 29 for Sprout
|
||||
},
|
||||
sapling_crypto::circuit::sprout::JSInput {
|
||||
value: None,
|
||||
a_sk: None,
|
||||
rho: None,
|
||||
r: None,
|
||||
auth_path: [None; 29], // Depth is 29 for Sprout
|
||||
},
|
||||
],
|
||||
outputs: vec![
|
||||
sapling_crypto::circuit::sprout::JSOutput {
|
||||
value: None,
|
||||
a_pk: None,
|
||||
r: None,
|
||||
},
|
||||
sapling_crypto::circuit::sprout::JSOutput {
|
||||
value: None,
|
||||
a_pk: None,
|
||||
r: None,
|
||||
},
|
||||
],
|
||||
rt: None,
|
||||
}).unwrap().write(&mut params).unwrap();
|
||||
})
|
||||
.unwrap()
|
||||
.write(&mut params)
|
||||
.unwrap();
|
||||
}
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
//! This binary just splits the parameters up into separate files.
|
||||
|
||||
extern crate phase2;
|
||||
extern crate pairing;
|
||||
extern crate rand;
|
||||
extern crate blake2_rfc;
|
||||
extern crate pairing;
|
||||
extern crate phase2;
|
||||
extern crate rand;
|
||||
|
||||
use std::fs::File;
|
||||
use std::io::{BufWriter, BufReader};
|
||||
use std::io::{BufReader, BufWriter};
|
||||
|
||||
fn main() {
|
||||
let current_params = File::open("params").expect("couldn't open `./params`");
|
||||
let mut current_params = BufReader::with_capacity(1024*1024, current_params);
|
||||
let mut current_params = BufReader::with_capacity(1024 * 1024, current_params);
|
||||
|
||||
let sapling_spend = phase2::MPCParameters::read(&mut current_params, false)
|
||||
.expect("couldn't deserialize Sapling Spend params");
|
||||
|
@ -22,23 +22,29 @@ fn main() {
|
|||
.expect("couldn't deserialize Sprout JoinSplit params");
|
||||
|
||||
{
|
||||
let f = File::create("sapling-spend.params").expect("couldn't create `./sapling-spend.params`");
|
||||
let mut f = BufWriter::with_capacity(1024*1024, f);
|
||||
sapling_spend.write(&mut f)
|
||||
let f =
|
||||
File::create("sapling-spend.params").expect("couldn't create `./sapling-spend.params`");
|
||||
let mut f = BufWriter::with_capacity(1024 * 1024, f);
|
||||
sapling_spend
|
||||
.write(&mut f)
|
||||
.expect("couldn't write new Sapling Spend params");
|
||||
}
|
||||
|
||||
{
|
||||
let f = File::create("sapling-output.params").expect("couldn't create `./sapling-output.params`");
|
||||
let mut f = BufWriter::with_capacity(1024*1024, f);
|
||||
sapling_output.write(&mut f)
|
||||
let f = File::create("sapling-output.params")
|
||||
.expect("couldn't create `./sapling-output.params`");
|
||||
let mut f = BufWriter::with_capacity(1024 * 1024, f);
|
||||
sapling_output
|
||||
.write(&mut f)
|
||||
.expect("couldn't write new Sapling Output params");
|
||||
}
|
||||
|
||||
{
|
||||
let f = File::create("sprout-groth16.params").expect("couldn't create `./sapling-groth16.params`");
|
||||
let mut f = BufWriter::with_capacity(1024*1024, f);
|
||||
sprout_joinsplit.write(&mut f)
|
||||
let f = File::create("sprout-groth16.params")
|
||||
.expect("couldn't create `./sapling-groth16.params`");
|
||||
let mut f = BufWriter::with_capacity(1024 * 1024, f);
|
||||
sprout_joinsplit
|
||||
.write(&mut f)
|
||||
.expect("couldn't write new Sprout JoinSplit params");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
extern crate blake2_rfc;
|
||||
extern crate pairing;
|
||||
extern crate phase2;
|
||||
extern crate sapling_crypto;
|
||||
extern crate pairing;
|
||||
extern crate blake2_rfc;
|
||||
|
||||
use blake2_rfc::blake2b::Blake2b;
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use blake2_rfc::blake2b::Blake2b;
|
||||
|
||||
fn main() {
|
||||
let jubjub_params = sapling_crypto::jubjub::JubjubBls12::new();
|
||||
|
@ -22,56 +22,69 @@ fn main() {
|
|||
let sprout_joinsplit = phase2::MPCParameters::read(&mut params, true)
|
||||
.expect("couldn't deserialize Sprout JoinSplit params");
|
||||
|
||||
let sapling_spend_contributions = sapling_spend.verify(sapling_crypto::circuit::sapling::Spend {
|
||||
params: &jubjub_params,
|
||||
value_commitment: None,
|
||||
proof_generation_key: None,
|
||||
payment_address: None,
|
||||
commitment_randomness: None,
|
||||
ar: None,
|
||||
auth_path: vec![None; 32], // Tree depth is 32 for sapling
|
||||
anchor: None
|
||||
}).expect("parameters are invalid");
|
||||
let sapling_spend_contributions = sapling_spend
|
||||
.verify(sapling_crypto::circuit::sapling::Spend {
|
||||
params: &jubjub_params,
|
||||
value_commitment: None,
|
||||
proof_generation_key: None,
|
||||
payment_address: None,
|
||||
commitment_randomness: None,
|
||||
ar: None,
|
||||
auth_path: vec![None; 32], // Tree depth is 32 for sapling
|
||||
anchor: None,
|
||||
})
|
||||
.expect("parameters are invalid");
|
||||
|
||||
let sapling_output_contributions = sapling_output.verify(sapling_crypto::circuit::sapling::Output {
|
||||
params: &jubjub_params,
|
||||
value_commitment: None,
|
||||
payment_address: None,
|
||||
commitment_randomness: None,
|
||||
esk: None
|
||||
}).expect("parameters are invalid");
|
||||
let sapling_output_contributions = sapling_output
|
||||
.verify(sapling_crypto::circuit::sapling::Output {
|
||||
params: &jubjub_params,
|
||||
value_commitment: None,
|
||||
payment_address: None,
|
||||
commitment_randomness: None,
|
||||
esk: None,
|
||||
})
|
||||
.expect("parameters are invalid");
|
||||
|
||||
let sprout_joinsplit_contributions = sprout_joinsplit.verify(sapling_crypto::circuit::sprout::JoinSplit {
|
||||
vpub_old: None,
|
||||
vpub_new: None,
|
||||
h_sig: None,
|
||||
phi: None,
|
||||
inputs: vec![sapling_crypto::circuit::sprout::JSInput {
|
||||
value: None,
|
||||
a_sk: None,
|
||||
rho: None,
|
||||
r: None,
|
||||
auth_path: [None; 29] // Depth is 29 for Sprout
|
||||
}, sapling_crypto::circuit::sprout::JSInput {
|
||||
value: None,
|
||||
a_sk: None,
|
||||
rho: None,
|
||||
r: None,
|
||||
auth_path: [None; 29] // Depth is 29 for Sprout
|
||||
}],
|
||||
outputs: vec![sapling_crypto::circuit::sprout::JSOutput {
|
||||
value: None,
|
||||
a_pk: None,
|
||||
r: None
|
||||
}, sapling_crypto::circuit::sprout::JSOutput {
|
||||
value: None,
|
||||
a_pk: None,
|
||||
r: None
|
||||
}],
|
||||
rt: None,
|
||||
}).expect("parameters are invalid");
|
||||
let sprout_joinsplit_contributions = sprout_joinsplit
|
||||
.verify(sapling_crypto::circuit::sprout::JoinSplit {
|
||||
vpub_old: None,
|
||||
vpub_new: None,
|
||||
h_sig: None,
|
||||
phi: None,
|
||||
inputs: vec![
|
||||
sapling_crypto::circuit::sprout::JSInput {
|
||||
value: None,
|
||||
a_sk: None,
|
||||
rho: None,
|
||||
r: None,
|
||||
auth_path: [None; 29], // Depth is 29 for Sprout
|
||||
},
|
||||
sapling_crypto::circuit::sprout::JSInput {
|
||||
value: None,
|
||||
a_sk: None,
|
||||
rho: None,
|
||||
r: None,
|
||||
auth_path: [None; 29], // Depth is 29 for Sprout
|
||||
},
|
||||
],
|
||||
outputs: vec![
|
||||
sapling_crypto::circuit::sprout::JSOutput {
|
||||
value: None,
|
||||
a_pk: None,
|
||||
r: None,
|
||||
},
|
||||
sapling_crypto::circuit::sprout::JSOutput {
|
||||
value: None,
|
||||
a_pk: None,
|
||||
r: None,
|
||||
},
|
||||
],
|
||||
rt: None,
|
||||
})
|
||||
.expect("parameters are invalid");
|
||||
|
||||
for ((a, b), c) in sapling_spend_contributions.into_iter()
|
||||
for ((a, b), c) in sapling_spend_contributions
|
||||
.into_iter()
|
||||
.zip(sapling_output_contributions.into_iter())
|
||||
.zip(sprout_joinsplit_contributions)
|
||||
{
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
extern crate phase2;
|
||||
extern crate pairing;
|
||||
extern crate blake2_rfc;
|
||||
extern crate pairing;
|
||||
extern crate phase2;
|
||||
|
||||
use blake2_rfc::blake2b::Blake2b;
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use blake2_rfc::blake2b::Blake2b;
|
||||
|
||||
fn main() {
|
||||
let params = File::open("params").unwrap();
|
||||
|
@ -33,17 +33,17 @@ fn main() {
|
|||
|
||||
let h1 = match phase2::verify_contribution(&sapling_spend, &new_sapling_spend) {
|
||||
Ok(hash) => hash,
|
||||
Err(_) => panic!("invalid transformation!")
|
||||
Err(_) => panic!("invalid transformation!"),
|
||||
};
|
||||
|
||||
let h2 = match phase2::verify_contribution(&sapling_output, &new_sapling_output) {
|
||||
Ok(hash) => hash,
|
||||
Err(_) => panic!("invalid transformation!")
|
||||
Err(_) => panic!("invalid transformation!"),
|
||||
};
|
||||
|
||||
let h3 = match phase2::verify_contribution(&sprout_joinsplit, &new_sprout_joinsplit) {
|
||||
Ok(hash) => hash,
|
||||
Err(_) => panic!("invalid transformation!")
|
||||
Err(_) => panic!("invalid transformation!"),
|
||||
};
|
||||
|
||||
let mut h = Blake2b::new(64);
|
||||
|
|
Loading…
Reference in New Issue