pub struct FRIVerifier<'a, F, FA, VCS>{ /* private fields */ }Expand description
A verifier for the FRI query phase.
The verifier is instantiated after the folding rounds and is used to test consistency of the round messages and the original purported codeword.
Implementations§
Source§impl<'a, F, FA, VCS> FRIVerifier<'a, F, FA, VCS>where
F: TowerField + ExtensionField<FA>,
FA: BinaryField,
VCS: MerkleTreeScheme<F, Digest: DeserializeBytes>,
impl<'a, F, FA, VCS> FRIVerifier<'a, F, FA, VCS>where
F: TowerField + ExtensionField<FA>,
FA: BinaryField,
VCS: MerkleTreeScheme<F, Digest: DeserializeBytes>,
pub fn new( params: &'a FRIParams<F, FA>, vcs: &'a VCS, codeword_commitment: &'a VCS::Digest, round_commitments: &'a [VCS::Digest], challenges: &'a [F], ) -> Result<Self, Error>
pub fn verify<Challenger_>(
&self,
transcript: &mut VerifierTranscript<Challenger_>,
) -> Result<F, Error>where
Challenger_: Challenger,
Sourcepub fn verify_last_oracle(&self, terminate_codeword: &[F]) -> Result<F, Error>
pub fn verify_last_oracle(&self, terminate_codeword: &[F]) -> Result<F, Error>
Verifies that the last oracle sent is a codeword.
Returns the fully-folded message value.
Sourcepub fn verify_query<B: Buf>(
&self,
index: usize,
terminate_codeword: &[F],
layers: &[Vec<VCS::Digest>],
advice: &mut TranscriptReader<'_, B>,
) -> Result<(), Error>
pub fn verify_query<B: Buf>( &self, index: usize, terminate_codeword: &[F], layers: &[Vec<VCS::Digest>], advice: &mut TranscriptReader<'_, B>, ) -> Result<(), Error>
Verifies a FRI challenge query.
A FRI challenge query tests for consistency between all consecutive oracles sent by the
prover. The verifier has full access to the last oracle sent, and this is probabilistically
verified to be a codeword by Self::verify_last_oracle.
§Arguments
index- an index into the original codeword domainproof- a query proof
Trait Implementations§
Source§impl<'a, F, FA, VCS> Debug for FRIVerifier<'a, F, FA, VCS>where
F: BinaryField + ExtensionField<FA> + Debug,
FA: BinaryField + Debug,
VCS: MerkleTreeScheme<F> + Debug,
VCS::Digest: Debug,
impl<'a, F, FA, VCS> Debug for FRIVerifier<'a, F, FA, VCS>where
F: BinaryField + ExtensionField<FA> + Debug,
FA: BinaryField + Debug,
VCS: MerkleTreeScheme<F> + Debug,
VCS::Digest: Debug,
Auto Trait Implementations§
impl<'a, F, FA, VCS> Freeze for FRIVerifier<'a, F, FA, VCS>
impl<'a, F, FA, VCS> RefUnwindSafe for FRIVerifier<'a, F, FA, VCS>where
<FA as WithUnderlier>::Underlier: Sized,
<F as WithUnderlier>::Underlier: Sized,
VCS: RefUnwindSafe,
<VCS as MerkleTreeScheme<F>>::Digest: RefUnwindSafe,
F: RefUnwindSafe,
FA: RefUnwindSafe,
impl<'a, F, FA, VCS> Send for FRIVerifier<'a, F, FA, VCS>where
<FA as WithUnderlier>::Underlier: Sized,
<F as WithUnderlier>::Underlier: Sized,
<VCS as MerkleTreeScheme<F>>::Digest: Sync,
impl<'a, F, FA, VCS> Sync for FRIVerifier<'a, F, FA, VCS>where
<FA as WithUnderlier>::Underlier: Sized,
<F as WithUnderlier>::Underlier: Sized,
<VCS as MerkleTreeScheme<F>>::Digest: Sync,
impl<'a, F, FA, VCS> Unpin for FRIVerifier<'a, F, FA, VCS>
impl<'a, F, FA, VCS> UnwindSafe for FRIVerifier<'a, F, FA, VCS>where
<FA as WithUnderlier>::Underlier: Sized,
<F as WithUnderlier>::Underlier: Sized,
VCS: RefUnwindSafe,
<VCS as MerkleTreeScheme<F>>::Digest: RefUnwindSafe,
F: RefUnwindSafe + UnwindSafe,
FA: RefUnwindSafe,
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
Mutably borrows from an owned value. Read more
§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> ⓘ
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 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> ⓘ
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