This commit is contained in:
wborgeaud 2021-08-10 16:18:42 +02:00
parent e73c1d7769
commit 9f004c9664
9 changed files with 14 additions and 24 deletions

View File

@ -3,8 +3,7 @@ use rayon::prelude::*;
use crate::field::extension_field::Extendable;
use crate::field::field_types::Field;
use crate::fri::proof::FriProof;
use crate::fri::{prover::fri_proof, verifier::verify_fri_proof};
use crate::hash::hash_types::HashOut;
use crate::fri::prover::fri_proof;
use crate::hash::merkle_tree::MerkleTree;
use crate::iop::challenger::Challenger;
use crate::plonk::circuit_data::CommonCircuitData;
@ -246,7 +245,9 @@ mod tests {
use anyhow::Result;
use super::*;
use crate::fri::verifier::verify_fri_proof;
use crate::fri::FriConfig;
use crate::hash::hash_types::HashOut;
use crate::plonk::circuit_data::CircuitConfig;
fn gen_random_test_case<F: Field + Extendable<D>, const D: usize>(

View File

@ -4,7 +4,7 @@ use crate::field::extension_field::target::ExtensionTarget;
use crate::field::extension_field::Extendable;
use crate::field::field_types::Field;
use crate::gadgets::polynomial::PolynomialCoeffsExtTarget;
use crate::hash::hash_types::{HashOut, HashOutTarget, MerkleCapTarget};
use crate::hash::hash_types::MerkleCapTarget;
use crate::hash::merkle_proofs::{MerkleProof, MerkleProofTarget};
use crate::hash::merkle_tree::MerkleCap;
use crate::iop::target::Target;

View File

@ -154,7 +154,6 @@ fn fri_prover_query_round<F: Field + Extendable<D>, const D: usize>(
.collect::<Vec<_>>();
for (i, tree) in trees.iter().enumerate() {
let arity_bits = config.reduction_arity_bits[i];
let arity = 1 << arity_bits;
let evals = unflatten(tree.get(x_index >> arity_bits));
let merkle_proof = tree.prove(x_index >> arity_bits);

View File

@ -3,7 +3,7 @@ use crate::field::extension_field::Extendable;
use crate::field::field_types::Field;
use crate::fri::proof::{FriInitialTreeProofTarget, FriProofTarget, FriQueryRoundTarget};
use crate::fri::FriConfig;
use crate::hash::hash_types::{HashOutTarget, MerkleCapTarget};
use crate::hash::hash_types::MerkleCapTarget;
use crate::iop::challenger::RecursiveChallenger;
use crate::iop::target::Target;
use crate::plonk::circuit_builder::CircuitBuilder;
@ -212,7 +212,6 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
let config = self.config.clone();
let degree_log = common_data.config.cap_height + proof.evals_proofs[0].1.siblings.len()
- config.rate_bits;
let one = self.one_extension();
let subgroup_x = self.convert_to_ext(subgroup_x);
let vanish_zeta = self.sub_extension(subgroup_x, zeta);
let mut alpha = ReducingFactorTarget::new(alpha);

View File

@ -5,7 +5,6 @@ use crate::field::field_types::Field;
use crate::field::interpolation::{barycentric_weights, interpolate, interpolate2};
use crate::fri::proof::{FriInitialTreeProof, FriProof, FriQueryRound};
use crate::fri::FriConfig;
use crate::hash::hash_types::HashOut;
use crate::hash::hashing::hash_n_to_1;
use crate::hash::merkle_proofs::verify_merkle_proof;
use crate::hash::merkle_tree::MerkleCap;

View File

@ -1,5 +1,3 @@
use std::convert::TryInto;
use anyhow::{ensure, Result};
use serde::{Deserialize, Serialize};
@ -62,6 +60,7 @@ pub(crate) fn verify_merkle_proof<F: Field>(
impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
/// Verifies that the given leaf data is present at the given index in the Merkle tree with the
/// given cap. The index is given by it's little-endian bits.
/// Note: Works only for D=4.
pub(crate) fn verify_merkle_proof(
&mut self,
leaf_data: Vec<Target>,
@ -113,24 +112,22 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
let index = self.le_sum(leaf_index_bits[proof.siblings.len()..].to_vec().into_iter());
let mut state_ext = [zero; D];
for i in 0..D {
state_ext[i] = state.elements[i];
}
state_ext[..D].copy_from_slice(&state.elements[..D]);
let state_ext = ExtensionTarget(state_ext);
let cap_ext = merkle_cap
.0
.iter()
.map(|h| {
let mut tmp = [zero; D];
for i in 0..D {
tmp[i] = h.elements[i];
}
tmp[..D].copy_from_slice(&h.elements[..D]);
ExtensionTarget(tmp)
})
.collect();
self.random_access(index, state_ext, cap_ext);
}
/// Same a `verify_merkle_proof` but with the final "cap index" as extra parameter.
/// Note: Works only for D=4.
pub(crate) fn verify_merkle_proof_with_cap_index(
&mut self,
leaf_data: Vec<Target>,
@ -182,18 +179,14 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
}
let mut state_ext = [zero; D];
for i in 0..D {
state_ext[i] = state.elements[i];
}
state_ext[..D].copy_from_slice(&state.elements[..D]);
let state_ext = ExtensionTarget(state_ext);
let cap_ext = merkle_cap
.0
.iter()
.map(|h| {
let mut tmp = [zero; D];
for i in 0..D {
tmp[i] = h.elements[i];
}
tmp[..D].copy_from_slice(&h.elements[..D]);
ExtensionTarget(tmp)
})
.collect();

View File

@ -15,7 +15,6 @@ use crate::gates::noop::NoopGate;
use crate::gates::public_input::PublicInputGate;
use crate::hash::hash_types::{HashOutTarget, MerkleCapTarget};
use crate::hash::hashing::hash_n_to_hash;
use crate::hash::merkle_tree::MerkleCap;
use crate::iop::generator::{CopyGenerator, RandomValueGenerator, WitnessGenerator};
use crate::iop::target::Target;
use crate::iop::wire::Wire;

View File

@ -7,7 +7,7 @@ use crate::field::field_types::Field;
use crate::fri::commitment::PolynomialBatchCommitment;
use crate::fri::FriConfig;
use crate::gates::gate::{GateInstance, PrefixedGate};
use crate::hash::hash_types::{HashOut, HashOutTarget, MerkleCapTarget};
use crate::hash::hash_types::{HashOut, MerkleCapTarget};
use crate::hash::merkle_tree::MerkleCap;
use crate::iop::generator::WitnessGenerator;
use crate::iop::target::Target;

View File

@ -5,7 +5,7 @@ use crate::field::extension_field::target::ExtensionTarget;
use crate::field::extension_field::Extendable;
use crate::fri::commitment::PolynomialBatchCommitment;
use crate::fri::proof::{FriProof, FriProofTarget};
use crate::hash::hash_types::{HashOut, HashOutTarget, MerkleCapTarget};
use crate::hash::hash_types::MerkleCapTarget;
use crate::hash::merkle_tree::MerkleCap;
use crate::iop::target::Target;
use crate::plonk::circuit_data::CommonCircuitData;