pub struct ConstraintSystem<F: PrimeField> {
pub public: usize,
pub prev_challenges: usize,
pub domain: EvaluationDomains<F>,
pub gates: Arc<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: Arc<LazyCache<Result<Option<LookupConstraintSystem<F>>, LookupError>>>,
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: Arc<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: Arc<LazyCache<Result<Option<LookupConstraintSystem<F>>, LookupError>>>
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
,lazy_mode: 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(), lazy_mode()
- Finally call the
build()
method and unwrap theResult
to obtain yourConstraintSystem
pub fn precomputations(&self) -> 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 duplicate 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
F: PrimeField,
EvaluationDomains<F>: Serialize + DeserializeOwned,
CircuitGate<F>: Serialize + DeserializeOwned,
LookupConstraintSystem<F>: Serialize + DeserializeOwned,
impl<'de, F> Deserialize<'de> for ConstraintSystem<F>where
F: PrimeField,
EvaluationDomains<F>: Serialize + DeserializeOwned,
CircuitGate<F>: Serialize + DeserializeOwned,
LookupConstraintSystem<F>: Serialize + DeserializeOwned,
Source§fn deserialize<D>(deserializer: D) -> Result<ConstraintSystem<F>, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<ConstraintSystem<F>, 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> Freeze for ConstraintSystem<F>where
F: Freeze,
impl<F> !RefUnwindSafe for ConstraintSystem<F>
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>
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