diff --git a/src/circuit_builder.rs b/src/circuit_builder.rs index a796967a..d21279d2 100644 --- a/src/circuit_builder.rs +++ b/src/circuit_builder.rs @@ -14,11 +14,11 @@ use crate::gates::gate::{GateInstance, GateRef}; use crate::gates::noop::NoopGate; use crate::generator::{CopyGenerator, WitnessGenerator}; use crate::hash::hash_n_to_hash; +use crate::merkle_tree::MerkleTree; use crate::polynomial::polynomial::PolynomialValues; use crate::target::Target; use crate::util::{log2_strict, transpose, transpose_poly_values}; use crate::wire::Wire; -use crate::merkle_tree::MerkleTree; pub struct CircuitBuilder { pub(crate) config: CircuitConfig, diff --git a/src/circuit_data.rs b/src/circuit_data.rs index e009ced9..f75e7275 100644 --- a/src/circuit_data.rs +++ b/src/circuit_data.rs @@ -1,11 +1,11 @@ use crate::field::field::Field; use crate::gates::gate::GateRef; use crate::generator::WitnessGenerator; +use crate::merkle_tree::MerkleTree; use crate::proof::{Hash, HashTarget, Proof}; use crate::prover::prove; use crate::verifier::verify; use crate::witness::PartialWitness; -use crate::merkle_tree::MerkleTree; #[derive(Copy, Clone)] pub struct CircuitConfig { diff --git a/src/prover.rs b/src/prover.rs index 088cd00d..4801b79d 100644 --- a/src/prover.rs +++ b/src/prover.rs @@ -7,6 +7,7 @@ use crate::circuit_data::{CommonCircuitData, ProverOnlyCircuitData}; use crate::field::fft::{fft, ifft}; use crate::field::field::Field; use crate::generator::generate_partial_witness; +use crate::merkle_tree::MerkleTree; use crate::plonk_challenger::Challenger; use crate::plonk_common::{eval_l_1, evaluate_gate_constraints, reduce_with_powers_multi}; use crate::polynomial::division::divide_by_z_h; @@ -16,7 +17,6 @@ use crate::util::{transpose, transpose_poly_values}; use crate::vars::EvaluationVars; use crate::wire::Wire; use crate::witness::PartialWitness; -use crate::merkle_tree::MerkleTree; pub(crate) fn prove( prover_data: &ProverOnlyCircuitData, @@ -61,7 +61,7 @@ pub(crate) fn prove( // TODO: Could avoid cloning if it's significant? let start_wires_root = Instant::now(); - let wires_tree = MerkleTree::new(wire_ldes_t.clone(), true); + let wires_tree = MerkleTree::new(wire_ldes_t, true); info!( "{:.3}s to Merklize wire LDEs", start_wires_root.elapsed().as_secs_f32() @@ -86,7 +86,7 @@ pub(crate) fn prove( ); let start_plonk_z_root = Instant::now(); - let plonk_zs_tree = MerkleTree::new(plonk_z_ldes_t.clone(), true); + let plonk_zs_tree = MerkleTree::new(plonk_z_ldes_t, true); info!( "{:.3}s to Merklize Z's", start_plonk_z_root.elapsed().as_secs_f32() @@ -100,8 +100,8 @@ pub(crate) fn prove( let vanishing_polys = compute_vanishing_polys( common_data, prover_data, - wire_ldes_t, - plonk_z_ldes_t, + &wires_tree, + &plonk_zs_tree, &betas, &gammas, &alphas, @@ -164,8 +164,8 @@ fn compute_z(common_data: &CommonCircuitData, i: usize) -> Polynomi fn compute_vanishing_polys( common_data: &CommonCircuitData, prover_data: &ProverOnlyCircuitData, - wire_ldes_t: Vec>, - plonk_z_lde_t: Vec>, + wires_tree: &MerkleTree, + plonk_zs_tree: &MerkleTree, betas: &[F], gammas: &[F], alphas: &[F], @@ -180,12 +180,10 @@ fn compute_vanishing_polys( .enumerate() .map(|(i, x)| { let i_next = (i + 1) % lde_size; - let local_wires = &wire_ldes_t[i]; - let next_wires = &wire_ldes_t[i_next]; + let local_wires = &wires_tree.leaves[i]; let local_constants = &prover_data.constants_tree.leaves[i]; - let next_constants = &prover_data.constants_tree.leaves[i_next]; // TODO: "next" is deprecated - let local_plonk_zs = &plonk_z_lde_t[i]; - let next_plonk_zs = &plonk_z_lde_t[i_next]; + let local_plonk_zs = &plonk_zs_tree.leaves[i]; + let next_plonk_zs = &plonk_zs_tree.leaves[i_next]; let s_sigmas = &prover_data.sigmas_tree.leaves[i]; debug_assert_eq!(local_wires.len(), common_data.config.num_wires);