Struct kimchi::circuits::constraints::ConstraintSystem
source · pub struct ConstraintSystem<F: PrimeField> {
pub public: usize,
pub prev_challenges: usize,
pub domain: EvaluationDomains<F>,
pub gates: Vec<CircuitGate<F>>,
pub zk_rows: u64,
pub feature_flags: FeatureFlags,
pub sid: Vec<F>,
pub shift: [F; 7],
pub endo: F,
pub lookup_constraint_system: Option<LookupConstraintSystem<F>>,
pub disable_gates_checks: bool,
/* private fields */
}
Fields§
§public: usize
number of public inputs
prev_challenges: usize
number of previous evaluation challenges, for recursive proving
domain: EvaluationDomains<F>
evaluation domains
gates: Vec<CircuitGate<F>>
circuit gates
zk_rows: u64
§feature_flags: FeatureFlags
flags for optional features
sid: Vec<F>
SID polynomial
shift: [F; 7]
wire coordinate shifts
endo: F
coefficient for the group endomorphism
lookup_constraint_system: Option<LookupConstraintSystem<F>>
lookup constraint system
disable_gates_checks: bool
Disable gates checks (for testing; only enables with development builds)
Implementations§
source§impl<F: PrimeField> ConstraintSystem<F>
impl<F: PrimeField> ConstraintSystem<F>
sourcepub fn create(gates: Vec<CircuitGate<F>>) -> Builder<F>
pub fn create(gates: Vec<CircuitGate<F>>) -> Builder<F>
Initializes the ConstraintSystem<F>
on input gates
and fr_sponge_params
.
Returns a Builder<F>
It also defaults to the following values of the builder:
public: 0
prev_challenges: 0
lookup_tables: vec![]
,runtime_tables: None
,precomputations: None
,disable_gates_checks: false
,
How to use it:
- Create your instance of your builder for the constraint system using
crate(gates, sponge params)
- Iterativelly invoke any desired number of steps: `public(), lookup(), runtime(), precomputations()``
- Finally call the
build()
method and unwrap theResult
to obtain yourConstraintSystem
pub fn precomputations(&self) -> &Arc<DomainConstantEvaluations<F>>
pub fn set_precomputations( &self, precomputations: Arc<DomainConstantEvaluations<F>> )
sourcepub fn for_testing(gates: Vec<CircuitGate<F>>) -> Self
pub fn for_testing(gates: Vec<CircuitGate<F>>) -> Self
test helpers
pub fn fp_for_testing(gates: Vec<CircuitGate<F>>) -> Self
source§impl<F: PrimeField> ConstraintSystem<F>
impl<F: PrimeField> ConstraintSystem<F>
sourcepub fn evaluate(&self, w: &[DP<F>; 15], z: &DP<F>) -> WitnessOverDomains<F>
pub fn evaluate(&self, w: &[DP<F>; 15], z: &DP<F>) -> WitnessOverDomains<F>
evaluate witness polynomials over domains
source§impl<F: PrimeField> ConstraintSystem<F>
impl<F: PrimeField> ConstraintSystem<F>
pub fn perm_scalars( e: &ProofEvaluations<PointEvaluations<F>>, beta: F, gamma: F, alphas: impl Iterator<Item = F>, zkp_zeta: F ) -> F
Trait Implementations§
source§impl<F: Clone + PrimeField> Clone for ConstraintSystem<F>
impl<F: Clone + PrimeField> Clone for ConstraintSystem<F>
source§fn clone(&self) -> ConstraintSystem<F>
fn clone(&self) -> ConstraintSystem<F>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<F: Debug + PrimeField> Debug for ConstraintSystem<F>
impl<F: Debug + PrimeField> Debug for ConstraintSystem<F>
source§impl<'de, F> Deserialize<'de> for ConstraintSystem<F>where
EvaluationDomains<F>: Serialize + DeserializeOwned,
CircuitGate<F>: Serialize + DeserializeOwned,
LookupConstraintSystem<F>: Serialize + DeserializeOwned,
F: Default + PrimeField,
impl<'de, F> Deserialize<'de> for ConstraintSystem<F>where EvaluationDomains<F>: Serialize + DeserializeOwned, CircuitGate<F>: Serialize + DeserializeOwned, LookupConstraintSystem<F>: Serialize + DeserializeOwned, F: Default + PrimeField,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<'a, F> From<&'a ConstraintSystem<F>> for Circuit<'a, F>where
F: PrimeField,
impl<'a, F> From<&'a ConstraintSystem<F>> for Circuit<'a, F>where F: PrimeField,
source§fn from(cs: &'a ConstraintSystem<F>) -> Self
fn from(cs: &'a ConstraintSystem<F>) -> Self
Converts to this type from the input type.
source§impl<F: PrimeField> Serialize for ConstraintSystem<F>where
EvaluationDomains<F>: Serialize + DeserializeOwned,
CircuitGate<F>: Serialize + DeserializeOwned,
LookupConstraintSystem<F>: Serialize + DeserializeOwned,
impl<F: PrimeField> Serialize for ConstraintSystem<F>where EvaluationDomains<F>: Serialize + DeserializeOwned, CircuitGate<F>: Serialize + DeserializeOwned, LookupConstraintSystem<F>: Serialize + DeserializeOwned,
Auto Trait Implementations§
impl<F> RefUnwindSafe for ConstraintSystem<F>where F: RefUnwindSafe,
impl<F> Send for ConstraintSystem<F>
impl<F> Sync for ConstraintSystem<F>
impl<F> Unpin for ConstraintSystem<F>where F: Unpin,
impl<F> UnwindSafe for ConstraintSystem<F>where F: UnwindSafe + RefUnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more