reorganize traits into a module; cut boilerplate code (#91)

use a default implementation for step circuit
This commit is contained in:
Srinath Setty
2022-07-14 16:15:45 -07:00
committed by GitHub
parent 704d48b528
commit 35cb03f977
10 changed files with 100 additions and 258 deletions

View File

@@ -12,11 +12,13 @@ use neptune::{
Strength,
};
use nova_snark::{
traits::{Group, StepCircuit},
traits::{
circuit::{StepCircuit, TrivialTestCircuit},
Group,
},
CompressedSNARK, PublicParams, RecursiveSNARK,
};
use num_bigint::BigUint;
use std::marker::PhantomData;
use std::time::Instant;
#[derive(Clone, Debug)]
@@ -183,9 +185,7 @@ fn main() {
pc: pc.clone(),
};
let circuit_secondary = TrivialTestCircuit {
_p: Default::default(),
};
let circuit_secondary = TrivialTestCircuit::default();
println!("Nova-based VDF with MinRoot delay function");
println!("==========================================");
@@ -299,26 +299,3 @@ fn main() {
);
assert!(res.is_ok());
}
// A trivial test circuit that we use on the secondary curve
#[derive(Clone, Debug)]
struct TrivialTestCircuit<F: PrimeField> {
_p: PhantomData<F>,
}
impl<F> StepCircuit<F> for TrivialTestCircuit<F>
where
F: PrimeField,
{
fn synthesize<CS: ConstraintSystem<F>>(
&self,
_cs: &mut CS,
z: AllocatedNum<F>,
) -> Result<AllocatedNum<F>, SynthesisError> {
Ok(z)
}
fn compute(&self, z: &F) -> F {
*z
}
}