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) -> Output where
Fn: FnOnce() -> <Output as Inject>::Primitive,
Output: Inject,
fn new_witness<Fn, Output>(mode: Mode, logic: Fn) -> Output where
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) -> Output where
S: Into<String>,
Fn: FnOnce() -> Output,
fn scope<S, Fn, Output>(name: S, logic: Fn) -> Output where
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) -> T where
S: Into<String>,
fn halt<S, T>(message: S) -> T where
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 = const EDWARDS_A: Self::BaseField =
<Self::Network as console::Environment>::EDWARDS_A;
const EDWARDS_A: Self::BaseField = const EDWARDS_A: Self::BaseField = <Self::Network as console::Environment>::EDWARDS_A;
The coefficient A
of the twisted Edwards curve.
sourceconst EDWARDS_D: Self::BaseField = const EDWARDS_D: Self::BaseField =
<Self::Network as console::Environment>::EDWARDS_D;
const EDWARDS_D: Self::BaseField = const EDWARDS_D: Self::BaseField = <Self::Network as console::Environment>::EDWARDS_D;
The coefficient D
of the twisted Edwards curve.
sourceconst MONTGOMERY_A: Self::BaseField = const MONTGOMERY_A: Self::BaseField =
<Self::Network as console::Environment>::MONTGOMERY_A;
const MONTGOMERY_A: Self::BaseField = const MONTGOMERY_A: Self::BaseField = <Self::Network as console::Environment>::MONTGOMERY_A;
The coefficient A
of the Montgomery curve.
sourceconst MONTGOMERY_B: Self::BaseField = const MONTGOMERY_B: Self::BaseField =
<Self::Network as console::Environment>::MONTGOMERY_B;
const MONTGOMERY_B: Self::BaseField = const MONTGOMERY_B: Self::BaseField = <Self::Network as console::Environment>::MONTGOMERY_B;
The coefficient B
of the Montgomery curve.
sourceconst MAX_STRING_BYTES: u32 = const MAX_STRING_BYTES: u32 =
<Self::Network as console::Environment>::MAX_STRING_BYTES;
const MAX_STRING_BYTES: u32 = const MAX_STRING_BYTES: u32 = <Self::Network as console::Environment>::MAX_STRING_BYTES;
The maximum number of bytes allowed in a string.
sourcefn assert<Boolean>(boolean: Boolean) where
Boolean: Into<LinearCombination<Self::BaseField>>,
fn assert<Boolean>(boolean: Boolean) where
Boolean: Into<LinearCombination<Self::BaseField>>,
Adds one constraint enforcing that the given boolean is 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>>,
Adds one constraint enforcing that the A == B
.
sourceimpl PartialEq<Circuit> for Circuit
impl PartialEq<Circuit> for Circuit
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 T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.