pub struct SnarkyConstraintSystem<Field>where
    Field: PrimeField,{ /* private fields */ }
Expand description

The constraint system.

Implementations§

source§

impl<Field: PrimeField> SnarkyConstraintSystem<Field>

source

pub fn set_primary_input_size(&mut self, num_pub_inputs: usize)

Sets the number of public-input. It must and can only be called once.

source

pub fn set_prev_challenges(&mut self, prev_challenges: usize)

source

pub fn compute_witness_for_ocaml( &mut self, public_inputs: &[Field], private_inputs: &[Field] ) -> [Vec<Field>; 15]

source

pub fn compute_witness<FUNC>( &mut self, external_values: FUNC ) -> [Vec<Field>; 15]where FUNC: Fn(usize) -> Field,

Compute the witness, given the constraint system sys and a function that converts the indexed secret inputs to their concrete values.

Panics

Will panic if some inputs like public_input_size are unknown(None value).

source

pub fn create(constants: Constants<Field>) -> Self

source

pub fn get_primary_input_size(&self) -> usize

Returns the number of public inputs.

Panics

Will panic if public_input_size is None.

source

pub fn get_prev_challenges(&self) -> Option<usize>

source

pub fn set_public_input_size(&mut self, x: usize)

Sets the number of public-input. It should only be called once.

source

pub fn get_rows_len(&self) -> usize

Returns the number of rows in the constraint system. Note: This is not necessarily the number of rows of the compiled circuit. If the circuit has not finished compiling, you will only get the current number of rows.

source

pub fn finalize(&mut self)

Fill the gate values(input and output), and finalize the circuit.

Panics

Will panic if circuit is completed.

source

pub fn digest(&mut self) -> [u8; 32]

Produces a digest of the constraint system.

Panics

Will panic if the constraint system has not previously been compiled (via Self::finalize).

source

pub fn finalize_and_get_gates(&mut self) -> &mut Vec<CircuitGate<Field>>

source§

impl<Field: PrimeField> SnarkyConstraintSystem<Field>

source

pub fn add_basic_snarky_constraint<Cvar>( &mut self, labels: &[Cow<'static, str>], loc: &Cow<'static, str>, constraint: BasicSnarkyConstraint<Cvar> )where Cvar: SnarkyCvar<Field = Field>,

Applies the basic SnarkyConstraint. Simply, place the values of selector(sl, sr, so …) and input(l, r, o, m).

Panics

Will panic if constant selector constraints are not matching.

source

pub fn add_constraint<Cvar>( &mut self, labels: &[Cow<'static, str>], loc: &Cow<'static, str>, constraint: KimchiConstraint<Cvar, Field> )where Cvar: SnarkyCvar<Field = Field>,

Applies the KimchiConstraint(s) to the circuit.

Panics

Will panic if witness fields are empty.

Trait Implementations§

source§

impl<Field> Clone for SnarkyConstraintSystem<Field>where Field: PrimeField + Clone,

source§

fn clone(&self) -> SnarkyConstraintSystem<Field>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Field> Debug for SnarkyConstraintSystem<Field>where Field: PrimeField + Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<Field> RefUnwindSafe for SnarkyConstraintSystem<Field>where Field: RefUnwindSafe,

§

impl<Field> Send for SnarkyConstraintSystem<Field>

§

impl<Field> Sync for SnarkyConstraintSystem<Field>

§

impl<Field> Unpin for SnarkyConstraintSystem<Field>where Field: Unpin,

§

impl<Field> UnwindSafe for SnarkyConstraintSystem<Field>where Field: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V