Trait halo2_proofs::plonk::Circuit
source · pub trait Circuit<F>where
F: Field,{
type Config: Clone;
type FloorPlanner: FloorPlanner;
type Params: Default;
// Required methods
fn without_witnesses(&self) -> Self;
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config;
fn synthesize(
&self,
config: Self::Config,
layouter: impl Layouter<F>
) -> Result<(), Error>;
// Provided methods
fn params(&self) -> Self::Params { ... }
fn configure_with_params(
meta: &mut ConstraintSystem<F>,
_params: Self::Params
) -> Self::Config { ... }
}
Expand description
This is a trait that circuits provide implementations for so that the
backend prover can ask the circuit to synthesize using some given
ConstraintSystem
implementation.
Required Associated Types§
sourcetype FloorPlanner: FloorPlanner
type FloorPlanner: FloorPlanner
The floor planner used for this circuit. This is an associated type of the
Circuit
trait because its behaviour is circuit-critical.
Required Methods§
sourcefn without_witnesses(&self) -> Self
fn without_witnesses(&self) -> Self
Returns a copy of this circuit with no witness values (i.e. all witnesses set to
None
). For most circuits, this will be equal to Self::default()
.
sourcefn configure(meta: &mut ConstraintSystem<F>) -> Self::Config
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config
The circuit is given an opportunity to describe the exact gate arrangement, column arrangement, etc.
Provided Methods§
sourcefn params(&self) -> Self::Params
fn params(&self) -> Self::Params
Returns a reference to the parameters that should be used to configure the circuit.
Requires the circuit-params
feature.
sourcefn configure_with_params(
meta: &mut ConstraintSystem<F>,
_params: Self::Params
) -> Self::Config
fn configure_with_params( meta: &mut ConstraintSystem<F>, _params: Self::Params ) -> Self::Config
The circuit is given an opportunity to describe the exact gate
arrangement, column arrangement, etc. Takes a runtime parameter. The default
implementation calls configure
ignoring the _params
argument in order to easily support
circuits that don’t use configuration parameters.