Skip to main content

OracleSetupChannel

Struct OracleSetupChannel 

Source
pub struct OracleSetupChannel { /* private fields */ }
Expand description

An IOPVerifierChannel that records the OracleSpec of each received oracle.

This performs no verification.

Every receive returns a dummy value, and sampling, observing, and asserting are no-ops.

Drive an IOP verifier with it, then read back what it recorded.

The channel carries one protocol-level zero-knowledge flag.

An oracle is zero-knowledge only if that flag is set and the oracle is witness-dependent.

§What is recorded

Two views of the same dry run, differing only in whether round boundaries survive.

  • The flat sequence of oracles, in arrival order.
  • That same sequence, grouped into the rounds the oracles are committed in.

A round closes wherever a challenge could be drawn.

That is where a decorator committing a round as one oracle stops taking members.

Implementations§

Source§

impl OracleSetupChannel

Source

pub const fn new(is_zk: bool) -> Self

Creates a new setup channel with the given protocol-level zero-knowledge flag.

Source

pub fn oracle_specs(&self) -> &[OracleSpec]

Returns the oracle specs recorded so far.

Source

pub fn into_oracle_specs(self) -> Vec<OracleSpec>

Consumes the channel and returns the recorded oracle specs, in the order received.

Source

pub fn into_oracle_schedule(self) -> OracleSchedule

Consumes the channel and returns the recorded oracles, grouped by commit round.

The round left open at the end of the dry run is closed here.

So every recorded oracle belongs to some round.

Trait Implementations§

Source§

impl Clone for OracleSetupChannel

Source§

fn clone(&self) -> OracleSetupChannel

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OracleSetupChannel

Source§

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

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

impl Default for OracleSetupChannel

Source§

fn default() -> OracleSetupChannel

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

impl<F: Field> IOPVerifierChannel<F> for OracleSetupChannel

Source§

type Oracle = ()

Source§

fn remaining_oracle_specs(&self) -> &[OracleSpec]

Returns the specifications for the remaining oracles to be received. Read more
Source§

fn recv_oracle( &mut self, log_msg_len: usize, is_witness_dependent: bool, ) -> Result<Self::Oracle, Error>

Receives an oracle commitment from the prover. Read more
Source§

fn verify_oracle_relation( &mut self, _oracle: Self::Oracle, _transparent: TransparentEvalFn<Self::Elem>, _claim: Self::Elem, ) -> Result<(), Error>

Queues one oracle linear relation to be opened. Read more
Source§

impl<F: Field> IPVerifierChannel<F> for OracleSetupChannel

Source§

type Elem = DummyElem<F>

The element type returned by receive and sample methods.
Source§

fn recv_one(&mut self) -> Result<DummyElem<F>, Error>

Receives a single field element from the prover.
Source§

fn recv_many(&mut self, n: usize) -> Result<Vec<DummyElem<F>>, Error>

Receives n field elements from the prover.
Source§

fn recv_array<const N: usize>(&mut self) -> Result<[DummyElem<F>; N], Error>

Receives a fixed-size array of field elements from the prover.
Source§

fn sample(&mut self) -> DummyElem<F>

Samples a random challenge. Read more
Source§

fn observe_one(&mut self, _val: F) -> DummyElem<F>

Observes a single field element, feeding it into the Fiat-Shamir state. Read more
Source§

fn observe_many(&mut self, vals: &[F]) -> Vec<DummyElem<F>>

Observes multiple field elements, feeding them into the Fiat-Shamir state. Read more
Source§

fn assert_zero(&mut self, _val: DummyElem<F>) -> Result<(), Error>

Asserts that a value is zero. Read more
Source§

fn recv_public_claim(&mut self) -> Result<Self::Elem, Error>

Receives a value the verifier could compute for itself, taken as advice. Read more
Source§

fn sample_many(&mut self, n: usize) -> Vec<Self::Elem>

Samples n random challenges.
Source§

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

Samples a fixed-size array of random challenges.
Source§

impl<F: BinaryField> WordIPVerifierChannel<F> for OracleSetupChannel

Source§

type Word = Word

The word type this channel carries. Read more
Source§

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: &[DummyElem<F>], _word: &Word) -> DummyElem<F>

Returns the sum of the elems selected by the low bits of word, low bit first. Read more
Source§

fn select(&mut self, _elems: &[DummyElem<F>], _word: &Word) -> DummyElem<F>

Returns the element of elems at the index in the low bits of word. Read more
Source§

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

Samples a uniform word of the given bit width. Read more
Source§

fn pack_words(&mut self, words: &[Word]) -> Vec<DummyElem<F>>

Packs words into field elements, as many words to an element as one holds. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<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