pub trait FieldChallenger<F: Field>:
CanObserve<F>
+ CanSample<F>
+ CanSampleBits<usize>
+ Sync {
// Provided methods
fn observe_algebra_element<A: BasedVectorSpace<F>>(&mut self, alg_elem: A) { ... }
fn observe_algebra_slice<A: BasedVectorSpace<F> + Clone>(
&mut self,
alg_elems: &[A],
) { ... }
fn sample_algebra_element<A: BasedVectorSpace<F>>(&mut self) -> A { ... }
fn observe_base_as_algebra_element<EF>(&mut self, val: F)
where EF: Algebra<F> + BasedVectorSpace<F> { ... }
}Expand description
A high-level trait combining observation and sampling over a finite field.
Provided Methods§
Sourcefn observe_algebra_element<A: BasedVectorSpace<F>>(&mut self, alg_elem: A)
fn observe_algebra_element<A: BasedVectorSpace<F>>(&mut self, alg_elem: A)
Absorb an element from a vector space over the base field.
Decomposes the element into its basis coefficients and absorbs each.
Sourcefn observe_algebra_slice<A: BasedVectorSpace<F> + Clone>(
&mut self,
alg_elems: &[A],
)
fn observe_algebra_slice<A: BasedVectorSpace<F> + Clone>( &mut self, alg_elems: &[A], )
Absorb a slice of elements from a vector space over the base field.
Decomposes each element into its basis coefficients and absorbs them.
Sourcefn sample_algebra_element<A: BasedVectorSpace<F>>(&mut self) -> A
fn sample_algebra_element<A: BasedVectorSpace<F>>(&mut self) -> A
Sample an element of a vector space over the base field.
Constructs the element by sampling basis coefficients.
Sourcefn observe_base_as_algebra_element<EF>(&mut self, val: F)where
EF: Algebra<F> + BasedVectorSpace<F>,
fn observe_base_as_algebra_element<EF>(&mut self, val: F)where
EF: Algebra<F> + BasedVectorSpace<F>,
Observe base field elements as extension field elements for recursion-friendly transcripts.
This simplifies recursive verifier circuits by using a uniform extension field challenger. Instead of observing a mix of base and extension field elements, we convert all base field observations (metadata, public values) to extension field elements before passing to the challenger.
§Recursion Benefits
In recursive proof systems, the verifier circuit needs to verify the inner proof. Since STARK verification operates entirely in the extension field (challenges, opened values, constraint evaluation), having a challenger that only observes extension field elements significantly simplifies the recursive circuit implementation.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.