pub struct VerifierMerkleTranscriptChannel<T, Challenger_, F, H: HashSuite> { /* private fields */ }Expand description
A MerkleIPVerifierChannel over a VerifierTranscript, verifying openings with a
BinaryMerkleTreeScheme.
The transcript is held through a BorrowMut bound, so the channel can own the transcript or
mutably borrow one.
Implementations§
Source§impl<T, Challenger_, F, H: HashSuite> VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H: HashSuite> VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
Sourcepub fn new(transcript: T) -> Self
pub fn new(transcript: T) -> Self
Constructs a channel over the transcript with a default Merkle tree scheme.
Sourcepub const fn with_scheme(
transcript: T,
scheme: BinaryMerkleTreeScheme<F, H>,
) -> Self
pub const fn with_scheme( transcript: T, scheme: BinaryMerkleTreeScheme<F, H>, ) -> Self
Constructs a channel over the transcript with the given Merkle tree scheme.
Sourcepub fn into_transcript(self) -> T
pub fn into_transcript(self) -> T
Returns the wrapped transcript.
Trait Implementations§
Source§impl<T, Challenger_, F, H: HashSuite> GrindingVerifierChannel for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H: HashSuite> GrindingVerifierChannel for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
Source§impl<F, T, Challenger_, H> IPVerifierChannel<F> for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>where
F: Field,
T: BorrowMut<VerifierTranscript<Challenger_>>,
Challenger_: Challenger,
H: HashSuite,
impl<F, T, Challenger_, H> IPVerifierChannel<F> for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>where
F: Field,
T: BorrowMut<VerifierTranscript<Challenger_>>,
Challenger_: Challenger,
H: HashSuite,
Source§fn recv_many(&mut self, n: usize) -> Result<Vec<F>, Error>
fn recv_many(&mut self, n: usize) -> Result<Vec<F>, Error>
Receives
n field elements from the prover.Source§fn recv_array<const N: usize>(&mut self) -> Result<[F; N], Error>
fn recv_array<const N: usize>(&mut self) -> Result<[F; N], Error>
Receives a fixed-size array of field elements from the prover.
Source§fn observe_one(&mut self, val: F) -> F
fn observe_one(&mut self, val: F) -> F
Observes a single field element, feeding it into the Fiat-Shamir state. Read more
Source§fn observe_many(&mut self, vals: &[F]) -> Vec<F>
fn observe_many(&mut self, vals: &[F]) -> Vec<F>
Observes multiple field elements, feeding them into the Fiat-Shamir state. Read more
Source§fn assert_zero(&mut self, val: F) -> Result<(), Error>
fn assert_zero(&mut self, val: F) -> Result<(), Error>
Asserts that a value is zero. Read more
Source§impl<F, T, Challenger_, H> MerkleIPVerifierChannel<F> for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>where
F: BinaryField + FixedSizeSerializeBytes,
T: BorrowMut<VerifierTranscript<Challenger_>>,
Challenger_: Challenger,
H: HashSuite,
Output<H::LeafHash>: DeserializeBytes,
impl<F, T, Challenger_, H> MerkleIPVerifierChannel<F> for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>where
F: BinaryField + FixedSizeSerializeBytes,
T: BorrowMut<VerifierTranscript<Challenger_>>,
Challenger_: Challenger,
H: HashSuite,
Output<H::LeafHash>: DeserializeBytes,
Source§type Commitment = TranscriptMerkleCommitment<Array<u8, <<H as HashSuite>::LeafHash as OutputSizeUser>::OutputSize>>
type Commitment = TranscriptMerkleCommitment<Array<u8, <<H as HashSuite>::LeafHash as OutputSizeUser>::OutputSize>>
A Merkle commitment.
Source§fn recv_merkle_commitment(
&mut self,
leaf_size: usize,
depth: usize,
) -> Result<Self::Commitment, Error>
fn recv_merkle_commitment( &mut self, leaf_size: usize, depth: usize, ) -> Result<Self::Commitment, Error>
Receives a Merkle commitment for a tree with the given depth and leaf size. Read more
Source§fn recv_openings(
&mut self,
commitment: &Self::Commitment,
indices: &[Word],
) -> Result<Vec<F>, Error>
fn recv_openings( &mut self, commitment: &Self::Commitment, indices: &[Word], ) -> Result<Vec<F>, Error>
Receives a multi-opening of leaves, bound by a Merkle commitment. Read more
Source§fn recv_committed_vector(
&mut self,
commitment: &Self::Commitment,
) -> Result<Vec<F>, Error>
fn recv_committed_vector( &mut self, commitment: &Self::Commitment, ) -> Result<Vec<F>, Error>
Receives the full committed vector, bound by a Merkle commitment. Read more
Source§impl<F, T, Challenger_, H> WordIPVerifierChannel<F> for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>where
F: BinaryField,
T: BorrowMut<VerifierTranscript<Challenger_>>,
Challenger_: Challenger,
H: HashSuite,
impl<F, T, Challenger_, H> WordIPVerifierChannel<F> for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>where
F: BinaryField,
T: BorrowMut<VerifierTranscript<Challenger_>>,
Challenger_: Challenger,
H: HashSuite,
Source§fn observe_words(&mut self, words: &[Word]) -> Vec<Word>
fn observe_words(&mut self, words: &[Word]) -> Vec<Word>
Feeds words into the Fiat-Shamir state, each as eight little-endian bytes, and returns them
as this channel’s word type. Read more
Source§fn subset_sum(&mut self, elems: &[F], word: &Word) -> F
fn subset_sum(&mut self, elems: &[F], word: &Word) -> F
Auto Trait Implementations§
impl<T, Challenger_, F, H> Freeze for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H> RefUnwindSafe for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H> Send for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H> Sync for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H> Unpin for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H> UnsafeUnpin for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H> UnwindSafe for VerifierMerkleTranscriptChannel<T, Challenger_, F, H>
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