HyperNova: add multi-instances folding to AugmentedFCircuit & IVC (#119)

- Adds the logic to support multi-instances folding in HyperNova's
AugmentedFCircuit & IVC.
- Adds also methods to generate new LCCCS & CCCS instances that don't
depend on the main folding chain, to be folded in in the next step
- Updates CycleFold circuit & methods to work other folding schemes than
  Nova, adapting it to fold multiple points per circuit (instead of
2-to-1 as till now)
- Handle multi-instances folding in the FoldingScheme trait
  interface, which expects 'None' in Nova, and 'Some' in HyperNova &
other multi-folding schemes.
This commit is contained in:
2024-07-16 02:59:56 +02:00
committed by GitHub
parent cc1f6316a7
commit edadcdd520
22 changed files with 807 additions and 252 deletions

View File

@@ -324,7 +324,7 @@ mod tests {
);
let nova_params = NOVA::preprocess(&mut rng, &prep_param).unwrap();
let nova = NOVA::init(
nova_params.clone(),
&nova_params,
f_circuit.clone(),
vec![Fr::zero(); f_circuit.state_len()].clone(),
)
@@ -358,9 +358,9 @@ mod tests {
let mut rng = rand::rngs::OsRng;
let mut nova = NOVA::<FC>::init(fs_params, f_circuit, z_0).unwrap();
let mut nova = NOVA::<FC>::init(&fs_params, f_circuit, z_0).unwrap();
for _ in 0..n_steps {
nova.prove_step(&mut rng, vec![]).unwrap();
nova.prove_step(&mut rng, vec![], None).unwrap();
}
let start = Instant::now();