mirror of
https://github.com/logos-storage/proof-aggregation.git
synced 2026-01-07 08:13:07 +00:00
add hash as type to circuit so we don't hardcode it.
This commit is contained in:
parent
2cf92cfedf
commit
7b2c084339
@ -12,9 +12,10 @@ use plonky2::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
use plonky2::plonk::config::AlgebraicHasher;
|
||||||
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
||||||
use crate::circuits::keyed_compress::key_compress_circuit;
|
use crate::circuits::keyed_compress::key_compress_circuit;
|
||||||
use crate::circuits::params::HF;
|
// use crate::circuits::params::HF;
|
||||||
use crate::circuits::utils::{add_assign_hash_out_target, mul_hash_out_target};
|
use crate::circuits::utils::{add_assign_hash_out_target, mul_hash_out_target};
|
||||||
use crate::Result;
|
use crate::Result;
|
||||||
use crate::error::CircuitError;
|
use crate::error::CircuitError;
|
||||||
@ -47,14 +48,16 @@ pub struct MerkleProofTarget {
|
|||||||
pub struct MerkleTreeCircuit<
|
pub struct MerkleTreeCircuit<
|
||||||
F: RichField + Extendable<D> + Poseidon2,
|
F: RichField + Extendable<D> + Poseidon2,
|
||||||
const D: usize,
|
const D: usize,
|
||||||
|
H: AlgebraicHasher<F>,
|
||||||
> {
|
> {
|
||||||
pub phantom_data: PhantomData<F>,
|
pub phantom_data: PhantomData<(F,H)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<
|
impl<
|
||||||
F: RichField + Extendable<D> + Poseidon2,
|
F: RichField + Extendable<D> + Poseidon2,
|
||||||
const D: usize,
|
const D: usize,
|
||||||
> MerkleTreeCircuit<F, D> {
|
H: AlgebraicHasher<F>,
|
||||||
|
> MerkleTreeCircuit<F, D, H> {
|
||||||
|
|
||||||
|
|
||||||
pub fn new() -> Self{
|
pub fn new() -> Self{
|
||||||
@ -143,7 +146,7 @@ impl<
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Compress them with a keyed-hash function
|
// Compress them with a keyed-hash function
|
||||||
let combined_hash = key_compress_circuit::<F, D, HF>
|
let combined_hash = key_compress_circuit::<F, D, H>
|
||||||
(builder,
|
(builder,
|
||||||
HashOutTarget::from_vec(left),
|
HashOutTarget::from_vec(left),
|
||||||
HashOutTarget::from_vec(right),
|
HashOutTarget::from_vec(right),
|
||||||
|
|||||||
@ -2,13 +2,6 @@
|
|||||||
|
|
||||||
use anyhow::{Result, Context};
|
use anyhow::{Result, Context};
|
||||||
use std::env;
|
use std::env;
|
||||||
use plonky2::hash::poseidon::PoseidonHash;
|
|
||||||
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2Hash;
|
|
||||||
|
|
||||||
// hash function used. this is hackish way of doing it because
|
|
||||||
// H::Hash is not consistent with HashOut<F> and causing a lot of headache
|
|
||||||
// will look into this later.
|
|
||||||
pub type HF = PoseidonHash;
|
|
||||||
|
|
||||||
/// params used for the circuits
|
/// params used for the circuits
|
||||||
/// should be defined prior to building the circuit
|
/// should be defined prior to building the circuit
|
||||||
|
|||||||
@ -19,12 +19,13 @@ use plonky2::{
|
|||||||
},
|
},
|
||||||
plonk::circuit_builder::CircuitBuilder,
|
plonk::circuit_builder::CircuitBuilder,
|
||||||
};
|
};
|
||||||
|
use plonky2::plonk::config::AlgebraicHasher;
|
||||||
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
circuits::{
|
circuits::{
|
||||||
merkle_circuit::{MerkleProofTarget, MerkleTreeCircuit, MerkleTreeTargets},
|
merkle_circuit::{MerkleProofTarget, MerkleTreeCircuit, MerkleTreeTargets},
|
||||||
params::{CircuitParams, HF},
|
params::CircuitParams,
|
||||||
sponge::{hash_n_no_padding, hash_n_with_padding},
|
sponge::{hash_n_no_padding, hash_n_with_padding},
|
||||||
utils::{assign_hash_out_targets, ceiling_log2},
|
utils::{assign_hash_out_targets, ceiling_log2},
|
||||||
},
|
},
|
||||||
@ -37,15 +38,17 @@ use crate::{
|
|||||||
pub struct SampleCircuit<
|
pub struct SampleCircuit<
|
||||||
F: RichField + Extendable<D> + Poseidon2,
|
F: RichField + Extendable<D> + Poseidon2,
|
||||||
const D: usize,
|
const D: usize,
|
||||||
|
H: AlgebraicHasher<F>,
|
||||||
> {
|
> {
|
||||||
params: CircuitParams,
|
params: CircuitParams,
|
||||||
phantom_data: PhantomData<F>,
|
phantom_data: PhantomData<(F,H)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<
|
impl<
|
||||||
F: RichField + Extendable<D> + Poseidon2,
|
F: RichField + Extendable<D> + Poseidon2,
|
||||||
const D: usize,
|
const D: usize,
|
||||||
> SampleCircuit<F, D> {
|
H: AlgebraicHasher<F>,
|
||||||
|
> SampleCircuit<F, D, H> {
|
||||||
pub fn new(params: CircuitParams) -> Self{
|
pub fn new(params: CircuitParams) -> Self{
|
||||||
Self{
|
Self{
|
||||||
params,
|
params,
|
||||||
@ -122,7 +125,8 @@ pub struct Cell<
|
|||||||
impl<
|
impl<
|
||||||
F: RichField + Extendable<D> + Poseidon2,
|
F: RichField + Extendable<D> + Poseidon2,
|
||||||
const D: usize,
|
const D: usize,
|
||||||
> SampleCircuit<F, D> {
|
H: AlgebraicHasher<F>,
|
||||||
|
> SampleCircuit<F, D, H> {
|
||||||
|
|
||||||
/// samples and registers the public input
|
/// samples and registers the public input
|
||||||
pub fn sample_slot_circuit_with_public_input(
|
pub fn sample_slot_circuit_with_public_input(
|
||||||
@ -190,7 +194,7 @@ impl<
|
|||||||
|
|
||||||
// dataset reconstructed root
|
// dataset reconstructed root
|
||||||
let d_reconstructed_root =
|
let d_reconstructed_root =
|
||||||
MerkleTreeCircuit::<F,D>::reconstruct_merkle_root_circuit_with_mask(builder, &mut d_targets, max_log2_n_slots)?;
|
MerkleTreeCircuit::<F,D, H>::reconstruct_merkle_root_circuit_with_mask(builder, &mut d_targets, max_log2_n_slots)?;
|
||||||
|
|
||||||
// expected Merkle root
|
// expected Merkle root
|
||||||
let d_expected_root = builder.add_virtual_hash(); // public input
|
let d_expected_root = builder.add_virtual_hash(); // public input
|
||||||
@ -237,7 +241,7 @@ impl<
|
|||||||
let mut hash_inputs:Vec<Target>= Vec::new();
|
let mut hash_inputs:Vec<Target>= Vec::new();
|
||||||
hash_inputs.extend_from_slice(&data_i);
|
hash_inputs.extend_from_slice(&data_i);
|
||||||
// let data_i_hash = builder.hash_n_to_hash_no_pad::<HF>(hash_inputs);
|
// let data_i_hash = builder.hash_n_to_hash_no_pad::<HF>(hash_inputs);
|
||||||
let data_i_hash = hash_n_no_padding::<F,D,HF>(builder, hash_inputs)?;
|
let data_i_hash = hash_n_no_padding::<F,D,H>(builder, hash_inputs)?;
|
||||||
// make the counter into hash digest
|
// make the counter into hash digest
|
||||||
let ctr_target = builder.constant(F::from_canonical_u64((i+1) as u64));
|
let ctr_target = builder.constant(F::from_canonical_u64((i+1) as u64));
|
||||||
let mut ctr = builder.add_virtual_hash();
|
let mut ctr = builder.add_virtual_hash();
|
||||||
@ -269,7 +273,7 @@ impl<
|
|||||||
};
|
};
|
||||||
|
|
||||||
// reconstruct block root
|
// reconstruct block root
|
||||||
let b_root = MerkleTreeCircuit::<F,D>::reconstruct_merkle_root_circuit_with_mask(builder, &mut block_targets, block_tree_depth)?;
|
let b_root = MerkleTreeCircuit::<F,D,H>::reconstruct_merkle_root_circuit_with_mask(builder, &mut block_targets, block_tree_depth)?;
|
||||||
|
|
||||||
let mut slot_targets = MerkleTreeTargets {
|
let mut slot_targets = MerkleTreeTargets {
|
||||||
leaf: b_root,
|
leaf: b_root,
|
||||||
@ -280,7 +284,7 @@ impl<
|
|||||||
};
|
};
|
||||||
|
|
||||||
// reconstruct slot root with block root as leaf
|
// reconstruct slot root with block root as leaf
|
||||||
let slot_reconstructed_root = MerkleTreeCircuit::<F,D>::reconstruct_merkle_root_circuit_with_mask(builder, &mut slot_targets, max_depth-block_tree_depth)?;
|
let slot_reconstructed_root = MerkleTreeCircuit::<F,D,H>::reconstruct_merkle_root_circuit_with_mask(builder, &mut slot_targets, max_depth-block_tree_depth)?;
|
||||||
|
|
||||||
// check equality with expected root
|
// check equality with expected root
|
||||||
for i in 0..NUM_HASH_OUT_ELTS {
|
for i in 0..NUM_HASH_OUT_ELTS {
|
||||||
@ -323,7 +327,7 @@ impl<
|
|||||||
hash_inputs.extend_from_slice(&slot_root.elements);
|
hash_inputs.extend_from_slice(&slot_root.elements);
|
||||||
hash_inputs.extend_from_slice(&ctr.elements);
|
hash_inputs.extend_from_slice(&ctr.elements);
|
||||||
|
|
||||||
let hash_out = hash_n_with_padding::<F,D,HF>(builder, hash_inputs)?;
|
let hash_out = hash_n_with_padding::<F,D,H>(builder, hash_inputs)?;
|
||||||
let cell_index_bits = builder.low_bits(hash_out.elements[0], self.params.max_depth, 64);
|
let cell_index_bits = builder.low_bits(hash_out.elements[0], self.params.max_depth, 64);
|
||||||
|
|
||||||
let mut masked_cell_index_bits = vec![];
|
let mut masked_cell_index_bits = vec![];
|
||||||
|
|||||||
@ -2,12 +2,11 @@
|
|||||||
|
|
||||||
use plonky2::hash::hash_types::{HashOut, RichField};
|
use plonky2::hash::hash_types::{HashOut, RichField};
|
||||||
use plonky2_field::extension::Extendable;
|
use plonky2_field::extension::Extendable;
|
||||||
use codex_plonky2_circuits::circuits::params::HF;
|
|
||||||
use codex_plonky2_circuits::circuits::sample_cells::Cell;
|
use codex_plonky2_circuits::circuits::sample_cells::Cell;
|
||||||
use plonky2_field::types::Sample;
|
use plonky2_field::types::Sample;
|
||||||
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
||||||
use crate::merkle_tree::merkle_safe::{MerkleProof, MerkleTree};
|
use crate::merkle_tree::merkle_safe::{MerkleProof, MerkleTree};
|
||||||
use crate::params::TestParams;
|
use crate::params::{TestParams, HF};
|
||||||
use crate::sponge::hash_bytes_no_padding;
|
use crate::sponge::hash_bytes_no_padding;
|
||||||
use crate::utils::{bits_le_padded_to_usize, calculate_cell_index_bits, usize_to_bits_le};
|
use crate::utils::{bits_le_padded_to_usize, calculate_cell_index_bits, usize_to_bits_le};
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ use plonky2::plonk::config::{GenericConfig, Hasher};
|
|||||||
use plonky2_field::extension::Extendable;
|
use plonky2_field::extension::Extendable;
|
||||||
use plonky2_field::types::Field;
|
use plonky2_field::types::Field;
|
||||||
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
||||||
use codex_plonky2_circuits::circuits::params::{CircuitParams, HF};
|
use codex_plonky2_circuits::circuits::params::CircuitParams;
|
||||||
use crate::params::TestParams;
|
use crate::params::TestParams;
|
||||||
use crate::utils::{bits_le_padded_to_usize, calculate_cell_index_bits, ceiling_log2, usize_to_bits_le};
|
use crate::utils::{bits_le_padded_to_usize, calculate_cell_index_bits, ceiling_log2, usize_to_bits_le};
|
||||||
use crate::merkle_tree::merkle_safe::MerkleProof;
|
use crate::merkle_tree::merkle_safe::MerkleProof;
|
||||||
@ -14,7 +14,7 @@ use plonky2::plonk::circuit_data::{CircuitConfig, CircuitData};
|
|||||||
use plonky2::plonk::proof::ProofWithPublicInputs;
|
use plonky2::plonk::proof::ProofWithPublicInputs;
|
||||||
use crate::data_structs::DatasetTree;
|
use crate::data_structs::DatasetTree;
|
||||||
use crate::sponge::hash_bytes_no_padding;
|
use crate::sponge::hash_bytes_no_padding;
|
||||||
use crate::params::{C, D, F};
|
use crate::params::{C, D, F, HF};
|
||||||
|
|
||||||
/// generates circuit input (SampleCircuitInput) from fake data for testing
|
/// generates circuit input (SampleCircuitInput) from fake data for testing
|
||||||
/// which can be later stored into json see json.rs
|
/// which can be later stored into json see json.rs
|
||||||
@ -169,7 +169,7 @@ pub fn build_circuit_with_targets(n_samples: usize, slot_index: usize) -> anyhow
|
|||||||
circuit_params.n_samples = n_samples;
|
circuit_params.n_samples = n_samples;
|
||||||
|
|
||||||
// build the circuit
|
// build the circuit
|
||||||
let circ = SampleCircuit::new(circuit_params.clone());
|
let circ = SampleCircuit::<F,D,HF>::new(circuit_params.clone());
|
||||||
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
||||||
|
|
||||||
// Create a PartialWitness and assign
|
// Create a PartialWitness and assign
|
||||||
@ -238,7 +238,7 @@ mod tests {
|
|||||||
circuit_params.n_samples = 10;
|
circuit_params.n_samples = 10;
|
||||||
|
|
||||||
// build the circuit
|
// build the circuit
|
||||||
let circ = SampleCircuit::new(circuit_params.clone());
|
let circ = SampleCircuit::<F,D,HF>::new(circuit_params.clone());
|
||||||
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
||||||
|
|
||||||
// Create a PartialWitness and assign
|
// Create a PartialWitness and assign
|
||||||
|
|||||||
@ -36,6 +36,7 @@ pub struct MerkleTreeCircuitInput<
|
|||||||
pub fn build_circuit<
|
pub fn build_circuit<
|
||||||
F: RichField + Extendable<D> + Poseidon2,
|
F: RichField + Extendable<D> + Poseidon2,
|
||||||
const D: usize,
|
const D: usize,
|
||||||
|
H: AlgebraicHasher<F>,
|
||||||
>(
|
>(
|
||||||
builder: &mut CircuitBuilder::<F, D>,
|
builder: &mut CircuitBuilder::<F, D>,
|
||||||
depth: usize,
|
depth: usize,
|
||||||
@ -68,7 +69,7 @@ pub fn build_circuit<
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Add Merkle proof verification constraints to the circuit
|
// Add Merkle proof verification constraints to the circuit
|
||||||
let reconstructed_root_target = MerkleTreeCircuit::reconstruct_merkle_root_circuit_with_mask(builder, &mut targets, depth)?;
|
let reconstructed_root_target = MerkleTreeCircuit::<F,D,H>::reconstruct_merkle_root_circuit_with_mask(builder, &mut targets, depth)?;
|
||||||
|
|
||||||
// Return MerkleTreeTargets
|
// Return MerkleTreeTargets
|
||||||
Ok((targets, reconstructed_root_target))
|
Ok((targets, reconstructed_root_target))
|
||||||
@ -175,7 +176,7 @@ mod tests {
|
|||||||
// create the circuit
|
// create the circuit
|
||||||
let config = CircuitConfig::standard_recursion_config();
|
let config = CircuitConfig::standard_recursion_config();
|
||||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
let (mut targets, reconstructed_root_target) = build_circuit(&mut builder, max_depth)?;
|
let (mut targets, reconstructed_root_target) = build_circuit::<F,D,H>(&mut builder, max_depth)?;
|
||||||
|
|
||||||
// expected Merkle root
|
// expected Merkle root
|
||||||
let expected_root = builder.add_virtual_hash();
|
let expected_root = builder.add_virtual_hash();
|
||||||
@ -251,7 +252,7 @@ mod tests {
|
|||||||
|
|
||||||
let config = CircuitConfig::standard_recursion_config();
|
let config = CircuitConfig::standard_recursion_config();
|
||||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
let (mut targets, reconstructed_root_target) = build_circuit(&mut builder, max_depth)?;
|
let (mut targets, reconstructed_root_target) = build_circuit::<F,D,H>(&mut builder, max_depth)?;
|
||||||
|
|
||||||
// expected Merkle root
|
// expected Merkle root
|
||||||
let expected_root_target = builder.add_virtual_hash();
|
let expected_root_target = builder.add_virtual_hash();
|
||||||
|
|||||||
@ -46,7 +46,7 @@ pub fn read_bytes_from_file<P: AsRef<Path>>(path: P) -> io::Result<Vec<u8>> {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::params::{C, D, F};
|
use crate::params::{C, D, F, HF};
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
use codex_plonky2_circuits::circuits::params::CircuitParams;
|
use codex_plonky2_circuits::circuits::params::CircuitParams;
|
||||||
use codex_plonky2_circuits::circuits::sample_cells::SampleCircuit;
|
use codex_plonky2_circuits::circuits::sample_cells::SampleCircuit;
|
||||||
@ -117,7 +117,7 @@ mod tests {
|
|||||||
|
|
||||||
let circuit_params = CircuitParams::default();
|
let circuit_params = CircuitParams::default();
|
||||||
|
|
||||||
let circ = SampleCircuit::new(circuit_params.clone());
|
let circ = SampleCircuit::<F,D,HF>::new(circuit_params.clone());
|
||||||
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
||||||
|
|
||||||
// Create a PartialWitness and assign
|
// Create a PartialWitness and assign
|
||||||
@ -178,7 +178,7 @@ mod tests {
|
|||||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
|
|
||||||
let circuit_params = CircuitParams::default();
|
let circuit_params = CircuitParams::default();
|
||||||
let circ = SampleCircuit::new(circuit_params.clone());
|
let circ = SampleCircuit::<F,D,HF>::new(circuit_params.clone());
|
||||||
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
||||||
|
|
||||||
// Create a PartialWitness and assign
|
// Create a PartialWitness and assign
|
||||||
@ -230,7 +230,7 @@ mod tests {
|
|||||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
|
|
||||||
let circuit_params = CircuitParams::default();
|
let circuit_params = CircuitParams::default();
|
||||||
let circ = SampleCircuit::new(circuit_params.clone());
|
let circ = SampleCircuit::<F,D,HF>::new(circuit_params.clone());
|
||||||
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
||||||
|
|
||||||
// Create a PartialWitness and assign
|
// Create a PartialWitness and assign
|
||||||
|
|||||||
@ -171,8 +171,7 @@ pub fn hash_bytes_to_m_no_padding<
|
|||||||
mod tests {
|
mod tests {
|
||||||
use plonky2::field::types::Field;
|
use plonky2::field::types::Field;
|
||||||
use crate::sponge::hash_n_with_padding;
|
use crate::sponge::hash_n_with_padding;
|
||||||
use crate::params::{D, F};
|
use crate::params::{D, F, HF};
|
||||||
use codex_plonky2_circuits::circuits::params::HF;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_sponge_hash_rate_8() {
|
fn test_sponge_hash_rate_8() {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
use plonky2::hash::hash_types::{HashOut, RichField};
|
use plonky2::hash::hash_types::{HashOut, RichField};
|
||||||
use plonky2_field::extension::Extendable;
|
use plonky2_field::extension::Extendable;
|
||||||
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
use plonky2_poseidon2::poseidon2_hash::poseidon2::Poseidon2;
|
||||||
use codex_plonky2_circuits::circuits::params::HF;
|
use crate::params::HF;
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use plonky2::hash::hashing::PlonkyPermutation;
|
use plonky2::hash::hashing::PlonkyPermutation;
|
||||||
use crate::sponge::hash_n_with_padding;
|
use crate::sponge::hash_n_with_padding;
|
||||||
|
|||||||
@ -7,7 +7,7 @@ use codex_plonky2_circuits::circuits::sample_cells::SampleCircuit;
|
|||||||
use plonky2_poseidon2::serialization::{DefaultGateSerializer,DefaultGeneratorSerializer};
|
use plonky2_poseidon2::serialization::{DefaultGateSerializer,DefaultGeneratorSerializer};
|
||||||
use proof_input::serialization::json::write_bytes_to_file;
|
use proof_input::serialization::json::write_bytes_to_file;
|
||||||
use proof_input::params::Params;
|
use proof_input::params::Params;
|
||||||
use proof_input::params::{D, C, F};
|
use proof_input::params::{D, C, F,HF};
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
// Load the parameters from environment variables
|
// Load the parameters from environment variables
|
||||||
@ -17,7 +17,7 @@ fn main() -> Result<()> {
|
|||||||
let config = CircuitConfig::standard_recursion_config();
|
let config = CircuitConfig::standard_recursion_config();
|
||||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
let circuit_params = params.circuit_params;
|
let circuit_params = params.circuit_params;
|
||||||
let circ = SampleCircuit::new(circuit_params);
|
let circ = SampleCircuit::<F,D,HF>::new(circuit_params);
|
||||||
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder);
|
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder);
|
||||||
|
|
||||||
// Build the circuit
|
// Build the circuit
|
||||||
|
|||||||
@ -8,7 +8,7 @@ use std::time::Instant;
|
|||||||
use proof_input::serialization::circuit_input::import_circ_input_from_json;
|
use proof_input::serialization::circuit_input::import_circ_input_from_json;
|
||||||
use codex_plonky2_circuits::circuits::sample_cells::{SampleCircuit, SampleCircuitInput};
|
use codex_plonky2_circuits::circuits::sample_cells::{SampleCircuit, SampleCircuitInput};
|
||||||
use codex_plonky2_circuits::circuits::params::CircuitParams;
|
use codex_plonky2_circuits::circuits::params::CircuitParams;
|
||||||
use proof_input::params::{D, C, F};
|
use proof_input::params::{D, C, F, HF};
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
// Load the parameters from environment variables
|
// Load the parameters from environment variables
|
||||||
@ -21,7 +21,7 @@ fn main() -> Result<()> {
|
|||||||
// Create the circuit
|
// Create the circuit
|
||||||
let config = CircuitConfig::standard_recursion_config();
|
let config = CircuitConfig::standard_recursion_config();
|
||||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
let circ = SampleCircuit::new(circuit_params);
|
let circ = SampleCircuit::<F,D,HF>::new(circuit_params);
|
||||||
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
||||||
|
|
||||||
// Create a PartialWitness and assign
|
// Create a PartialWitness and assign
|
||||||
|
|||||||
@ -8,7 +8,7 @@ use std::time::Instant;
|
|||||||
use proof_input::serialization::circuit_input::import_circ_input_from_json;
|
use proof_input::serialization::circuit_input::import_circ_input_from_json;
|
||||||
use codex_plonky2_circuits::circuits::sample_cells::{SampleCircuit, SampleCircuitInput};
|
use codex_plonky2_circuits::circuits::sample_cells::{SampleCircuit, SampleCircuitInput};
|
||||||
use codex_plonky2_circuits::circuits::params::CircuitParams;
|
use codex_plonky2_circuits::circuits::params::CircuitParams;
|
||||||
use proof_input::params::{D, C, F};
|
use proof_input::params::{D, C, F, HF};
|
||||||
|
|
||||||
fn main() -> Result<()> {
|
fn main() -> Result<()> {
|
||||||
// Load the parameters from environment variables
|
// Load the parameters from environment variables
|
||||||
@ -22,7 +22,7 @@ fn main() -> Result<()> {
|
|||||||
let config = CircuitConfig::standard_recursion_config();
|
let config = CircuitConfig::standard_recursion_config();
|
||||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||||
|
|
||||||
let circ = SampleCircuit::new(circuit_params);
|
let circ = SampleCircuit::<F,D,HF>::new(circuit_params);
|
||||||
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
let mut targets = circ.sample_slot_circuit_with_public_input(&mut builder)?;
|
||||||
|
|
||||||
// Create a PartialWitness and assign
|
// Create a PartialWitness and assign
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user