Skip to main content

StarkVerifier

Struct StarkVerifier 

Source
pub struct StarkVerifier<C>{ /* private fields */ }
Expand description

zk-STARK verifier

This is a high-level wrapper around the STARK verification functionality. It provides a convenient interface for verifying STARK proofs with a given configuration.

§Example

use lib_q_zkp::stark::{StarkVerifier, default_config};
use Complex;
use Mersenne31;

type Val = Complex<Mersenne31>;

let config = default_config();
let verifier = StarkVerifier::new(config);
// air: implements Air trait (same as used in proof generation)
// proof: StarkProof<Config>
// public_values: &[Val]
verifier.verify(&air, &proof, &public_values)?;

Implementations§

Source§

impl<C> StarkVerifier<C>

Source

pub fn new(config: C) -> StarkVerifier<C>

Create a new zk-STARK verifier with the given configuration

Source

pub fn verify<A>( &self, air: &A, proof: &Proof<C>, public_values: &[<<<C as StarkGenericConfig>::Pcs as Pcs<<C as StarkGenericConfig>::Challenge, <C as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val], ) -> Result<(), VerificationError<<<C as StarkGenericConfig>::Pcs as Pcs<<C as StarkGenericConfig>::Challenge, <C as StarkGenericConfig>::Challenger>>::Error>>

Verify a STARK proof for the given AIR and public values

§Arguments
  • air - The Algebraic Intermediate Representation that was used to generate the proof
  • proof - The STARK proof to verify
  • public_values - Public values that were used during proof generation
§Returns

Ok(()) if the proof is valid, Err(VerificationError) otherwise

Source

pub fn derive_challenges<A>( &self, air: &A, proof: &Proof<C>, public_values: &[<<<C as StarkGenericConfig>::Pcs as Pcs<<C as StarkGenericConfig>::Challenge, <C as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val], ) -> Result<(<C as StarkGenericConfig>::Challenge, <C as StarkGenericConfig>::Challenge, <C as StarkGenericConfig>::Challenge, Vec<<C as StarkGenericConfig>::Challenge>), VerificationError<<<C as StarkGenericConfig>::Pcs as Pcs<<C as StarkGenericConfig>::Challenge, <C as StarkGenericConfig>::Challenger>>::Error>>

Derive Fiat–Shamir challenges by replaying the verifier transcript.

Returns (zeta, zeta_next, alpha, betas) so that callers (e.g. aggregation) can serialize proofs with real challenges. Only supports proofs without preprocessed trace (preprocessed_width == 0).

Source

pub fn derive_query_positions<A>( &self, air: &A, proof: &Proof<C>, public_values: &[<<<C as StarkGenericConfig>::Pcs as Pcs<<C as StarkGenericConfig>::Challenge, <C as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val], fri_params: &FriQueryParams, ) -> Result<Vec<usize>, VerificationError<<<C as StarkGenericConfig>::Pcs as Pcs<<C as StarkGenericConfig>::Challenge, <C as StarkGenericConfig>::Challenger>>::Error>>

Derive FRI query positions by replaying the Fiat–Shamir challenger through commitments, FRI betas, final polynomial, and PoW, then sampling num_queries indices.

Returns the same query indices the verifier would use when verifying the proof. Call with the same FRI params used to produce the proof (e.g. from config).

Source

pub fn config(&self) -> &C

Get a reference to the underlying configuration

Auto Trait Implementations§

§

impl<C> Freeze for StarkVerifier<C>
where C: Freeze,

§

impl<C> RefUnwindSafe for StarkVerifier<C>
where C: RefUnwindSafe,

§

impl<C> Send for StarkVerifier<C>
where C: Send,

§

impl<C> Sync for StarkVerifier<C>
where C: Sync,

§

impl<C> Unpin for StarkVerifier<C>
where C: Unpin,

§

impl<C> UnsafeUnpin for StarkVerifier<C>
where C: UnsafeUnpin,

§

impl<C> UnwindSafe for StarkVerifier<C>
where C: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more