pub type RangeCircuitBuilder<F> = BaseCircuitBuilder<F>;
Expand description
Keeping the naming RangeCircuitBuilder
for backwards compatibility.
Aliased Type§
struct RangeCircuitBuilder<F> {
pub config_params: BaseCircuitParams,
pub assigned_instances: Vec<Vec<AssignedValue<F>>>,
/* private fields */
}
Fields§
§config_params: BaseCircuitParams
Configuration parameters for the circuit shape
assigned_instances: Vec<Vec<AssignedValue<F>>>
The assigned instances to expose publicly at the end of circuit synthesis
Implementations
Source§impl<F: ScalarField> BaseCircuitBuilder<F>
impl<F: ScalarField> BaseCircuitBuilder<F>
Sourcepub fn core(&self) -> &MultiPhaseCoreManager<F>
pub fn core(&self) -> &MultiPhaseCoreManager<F>
Virtual region for each challenge phase. These cannot be shared across threads while keeping circuit deterministic.
Sourcepub fn lookup_manager(&self) -> &[LookupAnyManager<F, 1>; 3]
pub fn lookup_manager(&self) -> &[LookupAnyManager<F, 1>; 3]
The range lookup manager
Source§impl<F: ScalarField> BaseCircuitBuilder<F>
impl<F: ScalarField> BaseCircuitBuilder<F>
Sourcepub fn core_mut(&mut self) -> &mut MultiPhaseCoreManager<F>
pub fn core_mut(&mut self) -> &mut MultiPhaseCoreManager<F>
Virtual region for each challenge phase. These cannot be shared across threads while keeping circuit deterministic.
Sourcepub fn lookup_manager_mut(&mut self) -> &mut [LookupAnyManager<F, 1>; 3]
pub fn lookup_manager_mut(&mut self) -> &mut [LookupAnyManager<F, 1>; 3]
The range lookup manager
Source§impl<F: ScalarField> BaseCircuitBuilder<F>
impl<F: ScalarField> BaseCircuitBuilder<F>
Sourcepub fn set_core(&mut self, val: MultiPhaseCoreManager<F>) -> &mut Self
pub fn set_core(&mut self, val: MultiPhaseCoreManager<F>) -> &mut Self
Virtual region for each challenge phase. These cannot be shared across threads while keeping circuit deterministic.
Sourcepub fn set_lookup_manager(
&mut self,
val: [LookupAnyManager<F, 1>; 3],
) -> &mut Self
pub fn set_lookup_manager( &mut self, val: [LookupAnyManager<F, 1>; 3], ) -> &mut Self
The range lookup manager
Source§impl<F: ScalarField> BaseCircuitBuilder<F>
impl<F: ScalarField> BaseCircuitBuilder<F>
Sourcepub fn new(witness_gen_only: bool) -> Self
pub fn new(witness_gen_only: bool) -> Self
Creates a new BaseCircuitBuilder with all default managers.
witness_gen_only
:- If true, the builder only does witness asignments and does not store constraint information – this should only be used for the real prover.
- If false, the builder also imposes constraints (selectors, fixed columns, copy constraints). Primarily used for keygen and mock prover (but can also be used for real prover).
By default, no circuit configuration parameters have been set.
These should be set separately using use_params
, or use_k
, use_lookup_bits
, and calculate_params
.
Upon construction, there are no public instances (aka all witnesses are private).
The intended usage is that before calling synthesize
, witness generation can be done to populate
assigned instances, which are supplied as assigned_instances
to this struct.
The Circuit
implementation for this struct will then expose these instances and constrain
them using the Halo2 API.
Sourcepub fn from_stage(stage: CircuitBuilderStage) -> Self
pub fn from_stage(stage: CircuitBuilderStage) -> Self
Creates a new MultiPhaseCoreManager depending on the stage of circuit building. If the stage is CircuitBuilderStage::Prover, the MultiPhaseCoreManager is used for witness generation only.
Sourcepub fn prover(
config_params: BaseCircuitParams,
break_points: MultiPhaseThreadBreakPoints,
) -> Self
pub fn prover( config_params: BaseCircuitParams, break_points: MultiPhaseThreadBreakPoints, ) -> Self
Creates a new BaseCircuitBuilder with a pinned circuit configuration given by config_params
and break_points
.
Sourcepub fn set_copy_manager(&mut self, copy_manager: SharedCopyConstraintManager<F>)
pub fn set_copy_manager(&mut self, copy_manager: SharedCopyConstraintManager<F>)
Sets the copy manager to the given one in all shared references.
Sourcepub fn use_copy_manager(
self,
copy_manager: SharedCopyConstraintManager<F>,
) -> Self
pub fn use_copy_manager( self, copy_manager: SharedCopyConstraintManager<F>, ) -> Self
Returns self
with a given copy manager
Sourcepub fn deep_clone(&self) -> Self
pub fn deep_clone(&self) -> Self
Deep clone of self
, where the underlying object of shared references in SharedCopyConstraintManager and LookupAnyManager are cloned.
Sourcepub fn lookup_bits(&self) -> Option<usize>
pub fn lookup_bits(&self) -> Option<usize>
The log_2 size of the lookup table, if using.
Sourcepub fn set_lookup_bits(&mut self, lookup_bits: usize)
pub fn set_lookup_bits(&mut self, lookup_bits: usize)
Set lookup bits
Sourcepub fn use_lookup_bits(self, lookup_bits: usize) -> Self
pub fn use_lookup_bits(self, lookup_bits: usize) -> Self
Returns new with lookup bits
Sourcepub fn set_instance_columns(&mut self, num_instance_columns: usize)
pub fn set_instance_columns(&mut self, num_instance_columns: usize)
Set the number of instance columns. This resizes self.assigned_instances
.
Sourcepub fn use_instance_columns(self, num_instance_columns: usize) -> Self
pub fn use_instance_columns(self, num_instance_columns: usize) -> Self
Returns new with self.assigned_instances
resized to specified number of instance columns.
Sourcepub fn set_params(&mut self, params: BaseCircuitParams)
pub fn set_params(&mut self, params: BaseCircuitParams)
Set config params
Sourcepub fn use_params(self, params: BaseCircuitParams) -> Self
pub fn use_params(self, params: BaseCircuitParams) -> Self
Returns new with config params
Sourcepub fn break_points(&self) -> MultiPhaseThreadBreakPoints
pub fn break_points(&self) -> MultiPhaseThreadBreakPoints
The break points of the circuit.
Sourcepub fn set_break_points(&mut self, break_points: MultiPhaseThreadBreakPoints)
pub fn set_break_points(&mut self, break_points: MultiPhaseThreadBreakPoints)
Sets the break points of the circuit.
Sourcepub fn use_break_points(self, break_points: MultiPhaseThreadBreakPoints) -> Self
pub fn use_break_points(self, break_points: MultiPhaseThreadBreakPoints) -> Self
Returns new with break points
Sourcepub fn witness_gen_only(&self) -> bool
pub fn witness_gen_only(&self) -> bool
Returns if the circuit is only used for witness generation.
Sourcepub fn unknown(self, use_unknown: bool) -> Self
pub fn unknown(self, use_unknown: bool) -> Self
Creates a new MultiPhaseCoreManager with use_unknown
flag set.
use_unknown
: If true, during key generation witnessValue
s are replaced withValue::unknown()
for safety.
Sourcepub fn main(&mut self, phase: usize) -> &mut Context<F>
pub fn main(&mut self, phase: usize) -> &mut Context<F>
Returns a mutable reference to the Context of a gate thread. Spawns a new thread for the given phase, if none exists.
phase
: The challenge phase (as an index) of the gate thread.
Sourcepub fn pool(&mut self, phase: usize) -> &mut SinglePhaseCoreManager<F>
pub fn pool(&mut self, phase: usize) -> &mut SinglePhaseCoreManager<F>
Returns SinglePhaseCoreManager with the virtual region with all core threads in the given phase.
Sourcepub fn new_thread(&mut self, phase: usize) -> &mut Context<F>
pub fn new_thread(&mut self, phase: usize) -> &mut Context<F>
Spawns a new thread for a new given phase
. Returns a mutable reference to the Context of the new thread.
phase
: The phase (index) of the gate thread.
Sourcepub fn statistics(&self) -> RangeStatistics
pub fn statistics(&self) -> RangeStatistics
Returns some statistics about the virtual region.
Sourcepub fn calculate_params(
&mut self,
minimum_rows: Option<usize>,
) -> BaseCircuitParams
pub fn calculate_params( &mut self, minimum_rows: Option<usize>, ) -> BaseCircuitParams
Auto-calculates configuration parameters for the circuit and sets them.
k
: The number of in the circuit (i.e. numeber of rows = 2k)minimum_rows
: The minimum number of rows in the circuit that cannot be used for witness assignments and contain randomblinding factors
to ensure zk property, defaults to 0.lookup_bits
: The fixed lookup table will consist of [0, 2lookup_bits)
Sourcepub fn assign_instances(
&self,
instance_columns: &[Column<Instance>],
layouter: impl Layouter<F>,
)
pub fn assign_instances( &self, instance_columns: &[Column<Instance>], layouter: impl Layouter<F>, )
Copies assigned_instances
to the instance columns. Should only be called at the very end of
synthesize
after virtual assigned_instances
have been assigned to physical circuit.
Sourcepub fn range_chip(&self) -> RangeChip<F>
pub fn range_chip(&self) -> RangeChip<F>
Creates a new RangeChip sharing the same LookupAnyManagers as self
.
Sourcepub fn assign_lookups_in_phase(
&self,
config: &RangeConfig<F>,
region: &mut Region<'_, F>,
phase: usize,
)
pub fn assign_lookups_in_phase( &self, config: &RangeConfig<F>, region: &mut Region<'_, F>, phase: usize, )
Copies the queued cells to be range looked up in phase phase
to special advice lookup columns
using LookupAnyManager.
§Special case
Just for RangeConfig, we have special handling for the case where there is a single (physical)
advice column in super::FlexGateConfig. In this case, RangeConfig
does not create extra lookup advice columns,
the single advice column has lookup enabled, and there is a selector to toggle when lookup should
be turned on.
Trait Implementations
Source§impl<F: ScalarField> AsMut<BaseCircuitBuilder<F>> for BaseCircuitBuilder<F>
impl<F: ScalarField> AsMut<BaseCircuitBuilder<F>> for BaseCircuitBuilder<F>
Source§fn as_mut(&mut self) -> &mut BaseCircuitBuilder<F>
fn as_mut(&mut self) -> &mut BaseCircuitBuilder<F>
Source§impl<F: ScalarField> AsRef<BaseCircuitBuilder<F>> for BaseCircuitBuilder<F>
impl<F: ScalarField> AsRef<BaseCircuitBuilder<F>> for BaseCircuitBuilder<F>
Source§fn as_ref(&self) -> &BaseCircuitBuilder<F>
fn as_ref(&self) -> &BaseCircuitBuilder<F>
Source§impl<F: ScalarField> Circuit<F> for BaseCircuitBuilder<F>
impl<F: ScalarField> Circuit<F> for BaseCircuitBuilder<F>
Source§fn without_witnesses(&self) -> Self
fn without_witnesses(&self) -> Self
Creates a new instance of the BaseCircuitBuilder without witnesses by setting the witness_gen_only flag to false
Source§fn 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
Configures a new circuit using BaseCircuitParams
Source§fn synthesize(
&self,
config: Self::Config,
layouter: impl Layouter<F>,
) -> Result<(), Error>
fn synthesize( &self, config: Self::Config, layouter: impl Layouter<F>, ) -> Result<(), Error>
Performs the actual computation on the circuit (e.g., witness generation), populating the lookup table and filling in all the advice values for a particular proof.
Source§type Config = BaseConfig<F>
type Config = BaseConfig<F>
Source§type FloorPlanner = SimpleFloorPlanner
type FloorPlanner = SimpleFloorPlanner
Circuit
trait because its behaviour is circuit-critical.Source§type Params = BaseCircuitParams
type Params = BaseCircuitParams
circuit-params
feature.Source§fn params(&self) -> Self::Params
fn params(&self) -> Self::Params
circuit-params
feature.Source§fn configure(_: &mut ConstraintSystem<F>) -> Self::Config
fn configure(_: &mut ConstraintSystem<F>) -> Self::Config
Source§impl<F: Clone + ScalarField> Clone for BaseCircuitBuilder<F>
impl<F: Clone + ScalarField> Clone for BaseCircuitBuilder<F>
Source§fn clone(&self) -> BaseCircuitBuilder<F>
fn clone(&self) -> BaseCircuitBuilder<F>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<F: Debug + ScalarField> Debug for BaseCircuitBuilder<F>
impl<F: Debug + ScalarField> Debug for BaseCircuitBuilder<F>
Source§impl<F: ScalarField> Default for BaseCircuitBuilder<F>
impl<F: ScalarField> Default for BaseCircuitBuilder<F>
Source§fn default() -> Self
fn default() -> Self
Quick start default circuit builder which can be used for MockProver, Keygen, and real prover. For best performance during real proof generation, we recommend using BaseCircuitBuilder::prover instead.