From af1b6680e8a63c30a2f972fc8ef140e057af0e67 Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Tue, 22 Nov 2022 08:02:22 -0800 Subject: [PATCH] Switch to Vec --- plonky2/src/plonk/circuit_builder.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plonky2/src/plonk/circuit_builder.rs b/plonky2/src/plonk/circuit_builder.rs index 9c899643..c2c13b2c 100644 --- a/plonky2/src/plonk/circuit_builder.rs +++ b/plonky2/src/plonk/circuit_builder.rs @@ -40,7 +40,7 @@ use crate::plonk::circuit_data::{ CircuitConfig, CircuitData, CommonCircuitData, ProverCircuitData, ProverOnlyCircuitData, VerifierCircuitData, VerifierCircuitTarget, VerifierOnlyCircuitData, }; -use crate::plonk::config::{GenericConfig, Hasher}; +use crate::plonk::config::{GenericConfig, GenericHashOut, Hasher}; use crate::plonk::copy_constraint::CopyConstraint; use crate::plonk::permutation_argument::Forest; use crate::plonk::plonk_common::PlonkOracle; @@ -56,7 +56,7 @@ pub struct CircuitBuilder, const D: usize> { /// A domain separator, which is included in the initial Fiat-Shamir seed. This is generally not /// needed, but can be used to ensure that proofs for one application are not valid for another. /// Defaults to zero. - domain_separator: Option, + domain_separator: Option>, /// The types of gates used in this circuit. gates: HashSet>, @@ -151,7 +151,7 @@ impl, const D: usize> CircuitBuilder { ); } - pub fn set_domain_separator(&mut self, separator: F) { + pub fn set_domain_separator(&mut self, separator: Vec) { assert!(self.domain_separator.is_none()); self.domain_separator = Some(separator); } @@ -860,11 +860,13 @@ impl, const D: usize> CircuitBuilder { num_partial_products(self.config.num_routed_wires, quotient_degree_factor); let constants_sigmas_cap = constants_sigmas_commitment.merkle_tree.cap.clone(); + let domain_separator = self.domain_separator.unwrap_or_default(); + let domain_separator_digest = C::Hasher::hash_pad(&domain_separator); // TODO: This should also include an encoding of gate constraints. let circuit_digest_parts = [ constants_sigmas_cap.flatten(), + domain_separator_digest.to_vec(), vec![ - self.domain_separator.unwrap_or_default(), F::from_canonical_usize(degree_bits), /* Add other circuit data here */ ],