binius_core::transcript

Struct ProverTranscript

Source
pub struct ProverTranscript<Challenger> { /* private fields */ }
Expand description

Prover transcript over some Challenger that writes to the internal tape and CanSample<F: TowerField>

A Transcript is an abstraction over Fiat-Shamir so the prover and verifier can send and receive data.

Implementations§

Source§

impl<Challenger_: Default + Challenger> ProverTranscript<Challenger_>

Source

pub fn new() -> Self

Creates a new prover transcript.

By default debug assertions are set to the feature flag debug_assertions. You may also change the debug flag with Self::set_debug.

Source

pub fn into_verifier(self) -> VerifierTranscript<Challenger_>

Source§

impl<Challenger_: Challenger> ProverTranscript<Challenger_>

Source

pub fn finalize(self) -> Vec<u8>

Source

pub fn set_debug(&mut self, debug: bool)

Sets the debug flag.

This flag is used to enable debug assertions in the TranscriptReader and TranscriptWriter methods.

Source

pub fn observe<'a, 'b>(&'a mut self) -> TranscriptWriter<'b, impl BufMut + 'b>
where 'a: 'b,

Returns a writeable buffer that only observes the data written, without writing it to the proof tape.

This method should be used to observe the input statement.

Source

pub fn decommitment(&mut self) -> TranscriptWriter<'_, impl BufMut>

Returns a writeable buffer that only writes the data to the proof tape, without observing it.

This method should only be used to write openings of commitments that were already written to the transcript as an observed message. For example, in the FRI protocol, the prover sends a Merkle tree root as a commitment, and later sends leaf openings. The leaf openings should be written using Self::decommitment because they are verified with respect to the previously sent Merkle root.

Source

pub fn message<'a, 'b>(&'a mut self) -> TranscriptWriter<'b, impl BufMut>
where 'a: 'b,

Returns a writeable buffer that observes the data written and writes it to the proof tape.

This method should be used by default to write prover messages in an interactive protocol.

Trait Implementations§

Source§

impl<F, Challenger_> CanSample<F> for ProverTranscript<Challenger_>
where F: TowerField, Challenger_: Challenger,

Source§

fn sample(&mut self) -> F

Source§

fn sample_array<const N: usize>(&mut self) -> [T; N]

Source§

fn sample_vec(&mut self, n: usize) -> Vec<T>

Source§

impl<Challenger_> CanSampleBits<usize> for ProverTranscript<Challenger_>
where Challenger_: Challenger,

Source§

fn sample_bits(&mut self, bits: usize) -> usize

Source§

impl<Challenger: Debug> Debug for ProverTranscript<Challenger>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<Challenger_: Default + Challenger> Default for ProverTranscript<Challenger_>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<Challenger> Freeze for ProverTranscript<Challenger>
where Challenger: Freeze,

§

impl<Challenger> RefUnwindSafe for ProverTranscript<Challenger>
where Challenger: RefUnwindSafe,

§

impl<Challenger> Send for ProverTranscript<Challenger>
where Challenger: Send,

§

impl<Challenger> Sync for ProverTranscript<Challenger>
where Challenger: Sync,

§

impl<Challenger> Unpin for ProverTranscript<Challenger>
where Challenger: Unpin,

§

impl<Challenger> UnwindSafe for ProverTranscript<Challenger>
where Challenger: 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.

§

impl<T> Instrument for T

§

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

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

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
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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