Struct snarkvm_circuit::prelude::Circuit
source · pub struct Circuit;
Trait Implementations
sourceimpl ConstraintSynthesizer<Fp256<FrParameters>> for Circuit
impl ConstraintSynthesizer<Fp256<FrParameters>> for Circuit
sourcefn generate_constraints<CS>(&self, cs: &mut CS) -> Result<(), SynthesisError>where
CS: ConstraintSystem<Fp256<FrParameters>>,
fn generate_constraints<CS>(&self, cs: &mut CS) -> Result<(), SynthesisError>where
CS: ConstraintSystem<Fp256<FrParameters>>,
Synthesizes the constraints from the environment into a snarkvm_r1cs
-compliant constraint system.
sourceimpl Environment for Circuit
impl Environment for Circuit
sourcefn zero() -> LinearCombination<<Circuit as Environment>::BaseField>
fn zero() -> LinearCombination<<Circuit as Environment>::BaseField>
Returns the zero
constant.
sourcefn one() -> LinearCombination<<Circuit as Environment>::BaseField>
fn one() -> LinearCombination<<Circuit as Environment>::BaseField>
Returns the one
constant.
sourcefn new_variable(
mode: Mode,
value: <Circuit as Environment>::BaseField
) -> Variable<<Circuit as Environment>::BaseField>
fn new_variable(
mode: Mode,
value: <Circuit as Environment>::BaseField
) -> Variable<<Circuit as Environment>::BaseField>
Returns a new variable of the given mode and value.
sourcefn new_witness<Fn, Output>(mode: Mode, logic: Fn) -> Outputwhere
Fn: FnOnce() -> <Output as Inject>::Primitive,
Output: Inject,
fn new_witness<Fn, Output>(mode: Mode, logic: Fn) -> Outputwhere
Fn: FnOnce() -> <Output as Inject>::Primitive,
Output: Inject,
Returns a new witness of the given mode and value.
sourcefn scope<S, Fn, Output>(name: S, logic: Fn) -> Outputwhere
S: Into<String>,
Fn: FnOnce() -> Output,
fn scope<S, Fn, Output>(name: S, logic: Fn) -> Outputwhere
S: Into<String>,
Fn: FnOnce() -> Output,
Enters a new scope for the environment.
sourcefn enforce<Fn, A, B, C>(constraint: Fn)where
Fn: FnOnce() -> (A, B, C),
A: Into<LinearCombination<<Circuit as Environment>::BaseField>>,
B: Into<LinearCombination<<Circuit as Environment>::BaseField>>,
C: Into<LinearCombination<<Circuit as Environment>::BaseField>>,
fn enforce<Fn, A, B, C>(constraint: Fn)where
Fn: FnOnce() -> (A, B, C),
A: Into<LinearCombination<<Circuit as Environment>::BaseField>>,
B: Into<LinearCombination<<Circuit as Environment>::BaseField>>,
C: Into<LinearCombination<<Circuit as Environment>::BaseField>>,
Adds one constraint enforcing that (A * B) == C
.
sourcefn is_satisfied() -> bool
fn is_satisfied() -> bool
Returns true
if all constraints in the environment are satisfied.
sourcefn is_satisfied_in_scope() -> bool
fn is_satisfied_in_scope() -> bool
Returns true
if all constraints in the current scope are satisfied.
sourcefn num_constants() -> u64
fn num_constants() -> u64
Returns the number of constants in the entire circuit.
sourcefn num_public() -> u64
fn num_public() -> u64
Returns the number of public variables in the entire circuit.
sourcefn num_private() -> u64
fn num_private() -> u64
Returns the number of private variables in the entire circuit.
sourcefn num_constraints() -> u64
fn num_constraints() -> u64
Returns the number of constraints in the entire circuit.
sourcefn num_constants_in_scope() -> u64
fn num_constants_in_scope() -> u64
Returns the number of constants for the current scope.
sourcefn num_public_in_scope() -> u64
fn num_public_in_scope() -> u64
Returns the number of public variables for the current scope.
sourcefn num_private_in_scope() -> u64
fn num_private_in_scope() -> u64
Returns the number of private variables for the current scope.
sourcefn num_constraints_in_scope() -> u64
fn num_constraints_in_scope() -> u64
Returns the number of constraints for the current scope.
sourcefn num_gates_in_scope() -> u64
fn num_gates_in_scope() -> u64
Returns the number of gates for the current scope.
sourcefn halt<S, T>(message: S) -> Twhere
S: Into<String>,
fn halt<S, T>(message: S) -> Twhere
S: Into<String>,
Halts the program from further synthesis, evaluation, and execution in the current environment.
sourcefn inject_r1cs(r1cs: R1CS<<Circuit as Environment>::BaseField>)
fn inject_r1cs(r1cs: R1CS<<Circuit as Environment>::BaseField>)
TODO (howardwu): Abstraction - Refactor this into an appropriate design. Circuits should not have easy access to this during synthesis. Returns the R1CS circuit, resetting the circuit.
sourcefn eject_r1cs_and_reset() -> R1CS<<Circuit as Environment>::BaseField>
fn eject_r1cs_and_reset() -> R1CS<<Circuit as Environment>::BaseField>
TODO (howardwu): Abstraction - Refactor this into an appropriate design. Circuits should not have easy access to this during synthesis. Returns the R1CS circuit, resetting the circuit.
sourcefn eject_assignment_and_reset(
) -> Assignment<<<Circuit as Environment>::Network as Environment>::Field>
fn eject_assignment_and_reset(
) -> Assignment<<<Circuit as Environment>::Network as Environment>::Field>
TODO (howardwu): Abstraction - Refactor this into an appropriate design. Circuits should not have easy access to this during synthesis. Returns the R1CS assignment of the circuit, resetting the circuit.
type Affine = <Testnet3 as Environment>::Affine
type BaseField = <Testnet3 as Environment>::Field
type Network = Testnet3
type ScalarField = <Testnet3 as Environment>::Scalar
sourceconst EDWARDS_A: Self::BaseField = <Self::Network as console::Environment>::EDWARDS_A
const EDWARDS_A: Self::BaseField = <Self::Network as console::Environment>::EDWARDS_A
A
of the twisted Edwards curve.sourceconst EDWARDS_D: Self::BaseField = <Self::Network as console::Environment>::EDWARDS_D
const EDWARDS_D: Self::BaseField = <Self::Network as console::Environment>::EDWARDS_D
D
of the twisted Edwards curve.sourceconst MONTGOMERY_A: Self::BaseField = <Self::Network as console::Environment>::MONTGOMERY_A
const MONTGOMERY_A: Self::BaseField = <Self::Network as console::Environment>::MONTGOMERY_A
A
of the Montgomery curve.sourceconst MONTGOMERY_B: Self::BaseField = <Self::Network as console::Environment>::MONTGOMERY_B
const MONTGOMERY_B: Self::BaseField = <Self::Network as console::Environment>::MONTGOMERY_B
B
of the Montgomery curve.sourceconst MAX_STRING_BYTES: u32 = <Self::Network as console::Environment>::MAX_STRING_BYTES
const MAX_STRING_BYTES: u32 = <Self::Network as console::Environment>::MAX_STRING_BYTES
sourcefn assert<Boolean>(boolean: Boolean)where
Boolean: Into<LinearCombination<Self::BaseField>>,
fn assert<Boolean>(boolean: Boolean)where
Boolean: Into<LinearCombination<Self::BaseField>>,
true
.sourcefn assert_eq<A, B>(a: A, b: B)where
A: Into<LinearCombination<Self::BaseField>>,
B: Into<LinearCombination<Self::BaseField>>,
fn assert_eq<A, B>(a: A, b: B)where
A: Into<LinearCombination<Self::BaseField>>,
B: Into<LinearCombination<Self::BaseField>>,
A == B
.sourcefn assert_neq<A, B>(a: A, b: B)where
A: Into<LinearCombination<Self::BaseField>>,
B: Into<LinearCombination<Self::BaseField>>,
fn assert_neq<A, B>(a: A, b: B)where
A: Into<LinearCombination<Self::BaseField>>,
B: Into<LinearCombination<Self::BaseField>>,
A != B
.impl Copy for Circuit
impl Eq for Circuit
impl StructuralEq for Circuit
impl StructuralPartialEq for Circuit
Auto Trait Implementations
impl RefUnwindSafe for Circuit
impl Send for Circuit
impl Sync for Circuit
impl Unpin for Circuit
impl UnwindSafe for Circuit
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.