pub struct ProverMerkleTranscriptChannel<T, Challenger_, F, H: ParallelHashSuite, A: Allocator = GlobalAllocator> { /* private fields */ }Expand description
A MerkleIPProverChannel over a ProverTranscript, committing with a
BinaryMerkleTreeProver.
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: ParallelHashSuite> ProverMerkleTranscriptChannel<T, Challenger_, F, H>
impl<T, Challenger_, F, H: ParallelHashSuite> ProverMerkleTranscriptChannel<T, Challenger_, F, H>
Source§impl<T, Challenger_, F, H: ParallelHashSuite, A: Allocator> ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
impl<T, Challenger_, F, H: ParallelHashSuite, A: Allocator> ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
Sourcepub const fn with_merkle_prover(
transcript: T,
merkle_prover: BinaryMerkleTreeProver<F, H, A>,
) -> Self
pub const fn with_merkle_prover( transcript: T, merkle_prover: BinaryMerkleTreeProver<F, H, A>, ) -> Self
Constructs a channel over the transcript with the given Merkle tree prover.
The prover carries the allocator every committed tree draws its nodes from.
Sourcepub fn into_transcript(self) -> T
pub fn into_transcript(self) -> T
Returns the wrapped transcript.
Trait Implementations§
Source§impl<T, Challenger_, F, H: ParallelHashSuite, A: Allocator> GrindingProverChannel for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
impl<T, Challenger_, F, H: ParallelHashSuite, A: Allocator> GrindingProverChannel for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
Source§impl<F, T, Challenger_, H, A> IPProverChannel<F> for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>where
F: Field,
T: BorrowMut<ProverTranscript<Challenger_>>,
Challenger_: Challenger,
H: ParallelHashSuite,
A: Allocator,
impl<F, T, Challenger_, H, A> IPProverChannel<F> for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>where
F: Field,
T: BorrowMut<ProverTranscript<Challenger_>>,
Challenger_: Challenger,
H: ParallelHashSuite,
A: Allocator,
Source§fn observe_one(&mut self, val: F)
fn observe_one(&mut self, val: F)
Observes a single field element, feeding it into the Fiat-Shamir state.
Source§fn observe_many(&mut self, vals: &[F])
fn observe_many(&mut self, vals: &[F])
Observes multiple field elements, feeding them into the Fiat-Shamir state.
Source§fn send_public_claim(&mut self, elem: F)
fn send_public_claim(&mut self, elem: F)
Sends a value the verifier could compute for itself, as advice. Read more
Source§fn sample_many(&mut self, n: usize) -> Vec<F>
fn sample_many(&mut self, n: usize) -> Vec<F>
Samples
n random challenges.Source§fn sample_array<const N: usize>(&mut self) -> [F; N]
fn sample_array<const N: usize>(&mut self) -> [F; N]
Samples a fixed-size array of random challenges.
Source§impl<F, T, Challenger_, H, A> MerkleIPProverChannel<F> for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>where
F: Field,
T: BorrowMut<ProverTranscript<Challenger_>>,
Challenger_: Challenger,
H: ParallelHashSuite,
A: Allocator,
Output<H::LeafHash>: SerializeBytes,
impl<F, T, Challenger_, H, A> MerkleIPProverChannel<F> for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>where
F: Field,
T: BorrowMut<ProverTranscript<Challenger_>>,
Challenger_: Challenger,
H: ParallelHashSuite,
A: Allocator,
Output<H::LeafHash>: SerializeBytes,
Source§type Commitment = ProverMerkleCommitment<BinaryMerkleTree<Array<u8, <<H as HashSuite>::LeafHash as OutputSizeUser>::OutputSize>, A>>
type Commitment = ProverMerkleCommitment<BinaryMerkleTree<Array<u8, <<H as HashSuite>::LeafHash as OutputSizeUser>::OutputSize>, A>>
A Merkle commitment, carrying the data required to open it later.
Source§fn send_merkle_commitment<P: PackedField<Scalar = F>>(
&mut self,
data: FieldSlice<'_, P>,
leaf_size: usize,
) -> Self::Commitment
fn send_merkle_commitment<P: PackedField<Scalar = F>>( &mut self, data: FieldSlice<'_, P>, leaf_size: usize, ) -> Self::Commitment
Commits
data as a Merkle tree with leaves of exactly leaf_size scalars each and sends
the commitment. Read moreSource§fn send_openings<P: PackedField<Scalar = F>>(
&mut self,
commitment: &Self::Commitment,
data: FieldSlice<'_, P>,
indices: &[Word],
)
fn send_openings<P: PackedField<Scalar = F>>( &mut self, commitment: &Self::Commitment, data: FieldSlice<'_, P>, indices: &[Word], )
Sends a multi-opening of committed leaves, bound by a Merkle commitment. Read more
Source§fn send_committed_vector<P: PackedField<Scalar = F>>(
&mut self,
commitment: &Self::Commitment,
data: FieldSlice<'_, P>,
)
fn send_committed_vector<P: PackedField<Scalar = F>>( &mut self, commitment: &Self::Commitment, data: FieldSlice<'_, P>, )
Sends the full committed vector, bound by a Merkle commitment. Read more
Source§impl<F, T, Challenger_, H, A> WordIPProverChannel<F> for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>where
F: Field,
T: BorrowMut<ProverTranscript<Challenger_>>,
Challenger_: Challenger,
H: ParallelHashSuite,
A: Allocator,
impl<F, T, Challenger_, H, A> WordIPProverChannel<F> for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>where
F: Field,
T: BorrowMut<ProverTranscript<Challenger_>>,
Challenger_: Challenger,
H: ParallelHashSuite,
A: Allocator,
Source§fn observe_words(&mut self, words: &[Word])
fn observe_words(&mut self, words: &[Word])
Feeds words into the Fiat-Shamir state, each as eight little-endian bytes.
Auto Trait Implementations§
impl<T, Challenger_, F, H, A> Freeze for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
impl<T, Challenger_, F, H, A> RefUnwindSafe for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>where
T: RefUnwindSafe,
A: RefUnwindSafe,
Challenger_: RefUnwindSafe,
<H as HashSuite>::Compression: RefUnwindSafe,
impl<T, Challenger_, F, H, A> Send for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
impl<T, Challenger_, F, H, A> Sync for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
impl<T, Challenger_, F, H, A> Unpin for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
impl<T, Challenger_, F, H, A> UnsafeUnpin for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>
impl<T, Challenger_, F, H, A> UnwindSafe for ProverMerkleTranscriptChannel<T, Challenger_, F, H, A>where
T: UnwindSafe,
A: UnwindSafe,
Challenger_: UnwindSafe,
<H as HashSuite>::Compression: UnwindSafe,
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