|
|
@@ -7,6 +7,7 @@ use bls12_381::Bls12;
|
|
|
use ff::Field;
|
|
|
use group::{Curve, Group, GroupEncoding};
|
|
|
|
|
|
+use crate::error::Result;
|
|
|
use crate::circuit::mint_contract::MintContract;
|
|
|
|
|
|
pub struct MintRevealedValues {
|
|
|
@@ -73,7 +74,20 @@ impl MintRevealedValues {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-pub fn setup_mint_prover() -> (groth16::Parameters<Bls12>, groth16::PreparedVerifyingKey<Bls12>) {
|
|
|
+pub fn save_params(filename: &str, params: &groth16::Parameters<Bls12>) -> Result<()> {
|
|
|
+ let buffer = std::fs::File::create(filename)?;
|
|
|
+ params.write(buffer)?;
|
|
|
+ Ok(())
|
|
|
+}
|
|
|
+
|
|
|
+pub fn load_params(filename: &str) -> Result<(groth16::Parameters<Bls12>, groth16::PreparedVerifyingKey<Bls12>)> {
|
|
|
+ let buffer = std::fs::File::open(filename)?;
|
|
|
+ let params = groth16::Parameters::<Bls12>::read(buffer, false)?;
|
|
|
+ let pvk = groth16::prepare_verifying_key(¶ms.vk);
|
|
|
+ Ok((params, pvk))
|
|
|
+}
|
|
|
+
|
|
|
+pub fn setup_mint_prover() -> groth16::Parameters<Bls12> {
|
|
|
println!("Making random params...");
|
|
|
let start = Instant::now();
|
|
|
let params = {
|
|
|
@@ -86,9 +100,8 @@ pub fn setup_mint_prover() -> (groth16::Parameters<Bls12>, groth16::PreparedVeri
|
|
|
};
|
|
|
groth16::generate_random_parameters::<Bls12, _, _>(c, &mut OsRng).unwrap()
|
|
|
};
|
|
|
- let pvk = groth16::prepare_verifying_key(¶ms.vk);
|
|
|
println!("Setup: [{:?}]", start.elapsed());
|
|
|
- (params, pvk)
|
|
|
+ params
|
|
|
}
|
|
|
|
|
|
pub fn create_mint_proof(
|