pub struct Circuit<F: AcirField> {
pub current_witness_index: u32,
pub opcodes: Vec<Opcode<F>>,
pub expression_width: ExpressionWidth,
pub private_parameters: BTreeSet<Witness>,
pub public_parameters: PublicInputs,
pub return_values: PublicInputs,
pub assert_messages: Vec<(OpcodeLocation, AssertionPayload<F>)>,
}
Expand description
Representation of a single ACIR circuit. The execution trace of this structure is dictated by the construction of a crate::native_types::WitnessMap
Fields§
§current_witness_index: u32
current_witness_index is the highest witness index in the circuit. The next witness to be added to this circuit will take on this value. (The value is cached here as an optimization.)
opcodes: Vec<Opcode<F>>
The circuit opcodes representing the relationship between witness values.
The opcodes should be further converted into a backend-specific circuit representation. When initial witness inputs are provided, these opcodes can also be used for generating an execution trace.
expression_width: ExpressionWidth
Maximum width of the expression’s which will be constrained
private_parameters: BTreeSet<Witness>
The set of private inputs to the circuit.
public_parameters: PublicInputs
The set of public inputs provided by the prover.
return_values: PublicInputs
The set of public inputs calculated within the circuit.
assert_messages: Vec<(OpcodeLocation, AssertionPayload<F>)>
Maps opcode locations to failed assertion payloads. The data in the payload is embedded in the circuit to provide useful feedback to users when a constraint in the circuit is not satisfied.
Implementations§
Source§impl<F: AcirField> Circuit<F>
impl<F: AcirField> Circuit<F>
pub fn num_vars(&self) -> u32
Sourcepub fn circuit_arguments(&self) -> BTreeSet<Witness>
pub fn circuit_arguments(&self) -> BTreeSet<Witness>
Returns all witnesses which are required to execute the circuit successfully.
Sourcepub fn public_inputs(&self) -> PublicInputs
pub fn public_inputs(&self) -> PublicInputs
Returns all public inputs. This includes those provided as parameters to the circuit and those computed as return values.
Trait Implementations§
Source§impl<'de, F> Deserialize<'de> for Circuit<F>where
F: Deserialize<'de> + AcirField,
impl<'de, F> Deserialize<'de> for Circuit<F>where
F: Deserialize<'de> + AcirField,
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>,
Source§impl<F: AcirField> ProtoCodec<Circuit<F>, Circuit> for ProtoSchema<F>
impl<F: AcirField> ProtoCodec<Circuit<F>, Circuit> for ProtoSchema<F>
Source§fn decode(value: &Circuit) -> Result<Circuit<F>>
fn decode(value: &Circuit) -> Result<Circuit<F>>
R
to domain type T
.Source§fn encode_some(value: &T) -> Option<R>
fn encode_some(value: &T) -> Option<R>
Some
.Source§fn encode_vec<'a, I>(values: I) -> Vec<R>where
I: IntoIterator<Item = &'a T>,
T: 'a,
fn encode_vec<'a, I>(values: I) -> Vec<R>where
I: IntoIterator<Item = &'a T>,
T: 'a,
Source§fn decode_wrap(value: &R, msg: &'static str) -> Result<T, Report>
fn decode_wrap(value: &R, msg: &'static str) -> Result<T, Report>
Source§fn decode_vec_wrap(values: &[R], msg: &'static str) -> Result<Vec<T>, Report>
fn decode_vec_wrap(values: &[R], msg: &'static str) -> Result<Vec<T>, Report>
Source§fn decode_arr<const N: usize>(values: &[R]) -> Result<[T; N], Report>
fn decode_arr<const N: usize>(values: &[R]) -> Result<[T; N], Report>
Source§fn decode_arr_wrap<const N: usize>(
values: &[R],
msg: &'static str,
) -> Result<[T; N], Report>
fn decode_arr_wrap<const N: usize>( values: &[R], msg: &'static str, ) -> Result<[T; N], Report>
Source§fn decode_box_arr<const N: usize>(values: &[R]) -> Result<Box<[T; N]>, Report>
fn decode_box_arr<const N: usize>(values: &[R]) -> Result<Box<[T; N]>, Report>
Source§fn decode_box_arr_wrap<const N: usize>(
values: &[R],
msg: &'static str,
) -> Result<Box<[T; N]>, Report>
fn decode_box_arr_wrap<const N: usize>( values: &[R], msg: &'static str, ) -> Result<Box<[T; N]>, Report>
Source§fn decode_some(value: &Option<R>) -> Result<T, Report>
fn decode_some(value: &Option<R>) -> Result<T, Report>
None
.Source§fn decode_some_wrap(value: &Option<R>, msg: &'static str) -> Result<T, Report>
fn decode_some_wrap(value: &Option<R>, msg: &'static str) -> Result<T, Report>
Source§fn decode_opt_wrap(
value: &Option<R>,
msg: &'static str,
) -> Result<Option<T>, Report>
fn decode_opt_wrap( value: &Option<R>, msg: &'static str, ) -> Result<Option<T>, Report>
None
if the field is missing.impl<F: Eq + AcirField> Eq for Circuit<F>
impl<F: AcirField> StructuralPartialEq for Circuit<F>
Auto Trait Implementations§
impl<F> Freeze for Circuit<F>
impl<F> RefUnwindSafe for Circuit<F>where
F: RefUnwindSafe,
impl<F> Send for Circuit<F>where
F: Send,
impl<F> Sync for Circuit<F>where
F: Sync,
impl<F> Unpin for Circuit<F>where
F: Unpin,
impl<F> UnwindSafe for Circuit<F>where
F: UnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
] or
a color-specific method, such as [OwoColorize::green
], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
] or
a color-specific method, such as [OwoColorize::on_yellow
], Read more