pub struct GKRCircuitVerifierConfig {
lazy_beta_evals: bool,
circuit_description_hash_type: CircuitHashType,
claim_agg_strategy: ClaimAggregationStrategy,
claim_agg_constant_column_optimization: bool,
}Expand description
A config which informs a GKR circuit verifier about how to verify a GKR circuit + proof, including flags e.g. how to aggregate claims.
Fields§
§lazy_beta_evals: boolWhether to evaluate the beta function within gate layers lazily, i.e. to compute the values on the fly rather than via initializing a beta evaluations “table”.
circuit_description_hash_type: CircuitHashTypeThe type of hash function to be used for hashing the circuit description to be added to transcript.
claim_agg_strategy: ClaimAggregationStrategyWhich claim aggregation (RLC vs. deterministic) to use for reducing the validity of multiple claims on a layer to that of a single claim.
claim_agg_constant_column_optimization: boolWhether to use the “constant column optimization”, i.e. whether to reduce the implicit degree of the prover-claimed polynomial Q(x) =? V_i(l(x)) when there are variable indices within all claims where all challenges within that index are identical.
Implementations§
Source§impl GKRCircuitVerifierConfig
impl GKRCircuitVerifierConfig
Sourcepub fn matches_global_verifier_config(
&self,
prover_verifier_config_instance: &RwLockReadGuard<'_, (GKRCircuitProverConfig, GKRCircuitVerifierConfig)>,
) -> bool
pub fn matches_global_verifier_config( &self, prover_verifier_config_instance: &RwLockReadGuard<'_, (GKRCircuitProverConfig, GKRCircuitVerifierConfig)>, ) -> bool
Returns whether the calling GKRCircuitVerifierConfig, i.e. the “expected” config, matches the one which is currently configured globally. A match implies that we are ready to start verifying.
Note that the prover_verifier_config_instance should be held for
the ENTIRE DURATION of verifying to prevent any changes
from happening to the config in the middle of verifying!
Sourcepub fn matches_proof_config(&self, proof_config: &ProofConfig) -> bool
pub fn matches_proof_config(&self, proof_config: &ProofConfig) -> bool
Returns whether the current (expected) GKRCircuitVerifierConfig matches the ProofConfig for the given proof.
Source§impl GKRCircuitVerifierConfig
impl GKRCircuitVerifierConfig
Sourcepub fn new_from_prover_config(
prover_config: &GKRCircuitProverConfig,
verifier_lazy_beta_evals: bool,
) -> Self
pub fn new_from_prover_config( prover_config: &GKRCircuitProverConfig, verifier_lazy_beta_evals: bool, ) -> Self
Constructs a GKRCircuitVerifierConfig from the GKRCircuitProverConfig used for the corresponding prover.
Sourcepub const fn new(
lazy_beta_evals: bool,
circuit_description_hash_type: CircuitHashType,
claim_agg_strategy: ClaimAggregationStrategy,
claim_agg_constant_column_optimization: bool,
) -> Self
pub const fn new( lazy_beta_evals: bool, circuit_description_hash_type: CircuitHashType, claim_agg_strategy: ClaimAggregationStrategy, claim_agg_constant_column_optimization: bool, ) -> Self
Constructs a new GKRCircuitVerifierConfig from scratch.
Sourcepub fn new_from_proof_config(
proof_config: &ProofConfig,
verifier_lazy_beta_evals: bool,
) -> Self
pub fn new_from_proof_config( proof_config: &ProofConfig, verifier_lazy_beta_evals: bool, ) -> Self
Constructs a GKRCircuitVerifierConfig from the corresponding ProofConfig used within the proof.
Sourcepub const fn hyrax_compatible_runtime_optimized_default() -> Self
pub const fn hyrax_compatible_runtime_optimized_default() -> Self
Returns a runtime-optimal configuration for a version of the GKR circuit verifier compatible with Hyrax.
In particular, this turns OFF the lazy_beta_evals, and additionally
turns OFF the claim_agg_constant_column_optimization option as well.
Sourcepub fn set_lazy_beta_evals(&mut self, updated_lazy_beta_evals: bool)
pub fn set_lazy_beta_evals(&mut self, updated_lazy_beta_evals: bool)
Setter function for lazy beta evals.
Sourcepub fn set_claim_agg_strategy(
&mut self,
updated_claim_agg_strategy: ClaimAggregationStrategy,
)
pub fn set_claim_agg_strategy( &mut self, updated_claim_agg_strategy: ClaimAggregationStrategy, )
Setter function for claim agg strategy.
Sourcepub fn set_circuit_description_hash_type(
&mut self,
updated_circuit_description_hash_type: CircuitHashType,
)
pub fn set_circuit_description_hash_type( &mut self, updated_circuit_description_hash_type: CircuitHashType, )
Setter function for circuit hash type.
Sourcepub fn set_claim_agg_constant_column_optimization(
&mut self,
updated_claim_agg_constant_column_optimization: bool,
)
pub fn set_claim_agg_constant_column_optimization( &mut self, updated_claim_agg_constant_column_optimization: bool, )
Setter function for constant column optimization.
Sourcepub fn get_lazy_beta_evals(&self) -> bool
pub fn get_lazy_beta_evals(&self) -> bool
Getter function for lazy beta evals.
Sourcepub fn get_claim_agg_strategy(&self) -> ClaimAggregationStrategy
pub fn get_claim_agg_strategy(&self) -> ClaimAggregationStrategy
Getter function for claim agg strategy.
Sourcepub fn get_circuit_description_hash_type(&self) -> CircuitHashType
pub fn get_circuit_description_hash_type(&self) -> CircuitHashType
Getter function for circuit hash type.
Sourcepub fn get_claim_agg_constant_column_optimization(&self) -> bool
pub fn get_claim_agg_constant_column_optimization(&self) -> bool
Getter function for constant column optimization.
Trait Implementations§
Source§impl Clone for GKRCircuitVerifierConfig
impl Clone for GKRCircuitVerifierConfig
Source§fn clone(&self) -> GKRCircuitVerifierConfig
fn clone(&self) -> GKRCircuitVerifierConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GKRCircuitVerifierConfig
impl Debug for GKRCircuitVerifierConfig
Source§impl<'de> Deserialize<'de> for GKRCircuitVerifierConfig
impl<'de> Deserialize<'de> for GKRCircuitVerifierConfig
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 Serialize for GKRCircuitVerifierConfig
impl Serialize for GKRCircuitVerifierConfig
impl Copy for GKRCircuitVerifierConfig
Auto Trait Implementations§
impl Freeze for GKRCircuitVerifierConfig
impl RefUnwindSafe for GKRCircuitVerifierConfig
impl Send for GKRCircuitVerifierConfig
impl Sync for GKRCircuitVerifierConfig
impl Unpin for GKRCircuitVerifierConfig
impl UnwindSafe for GKRCircuitVerifierConfig
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<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§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<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.