Skip to main content

IronSpartanBuilderChannel

Struct IronSpartanBuilderChannel 

Source
pub struct IronSpartanBuilderChannel<F: Field> { /* private fields */ }
Expand description

A channel that symbolically executes a verifier, building up an IronSpartan constraint system.

Instead of performing actual verification, this channel records all operations as constraints in a ConstraintBuilder. The typical usage pattern is:

  1. Construct a fresh IronSpartanBuilderChannel via Self::new
  2. Run the verifier on the channel (e.g., verify_iop)
  3. The channel’s finish() method returns the ConstraintBuilder with all recorded constraints

Implementations§

Source§

impl<F: Field> IronSpartanBuilderChannel<F>

Source

pub fn new() -> Self

Creates a new builder channel backed by a fresh ConstraintBuilder.

Source

pub fn finish(self) -> ConstraintBuilder<F>

Consumes the channel and returns the underlying ConstraintBuilder.

This must be called after all CircuitElem values derived from this channel have been dropped, as it requires sole ownership of the builder via Rc::try_unwrap.

Trait Implementations§

Source§

impl<F: Field> Default for IronSpartanBuilderChannel<F>

Source§

fn default() -> Self

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

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

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 IronSpartanBuilderChannel<F>

Source§

type Elem = CircuitElem<F, ConstraintBuilder<F>>

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

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

Receives a single field element from the prover.
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(&mut self) -> Self::Elem

Samples a random challenge. Read more
Source§

fn observe_one(&mut self, _val: F) -> Self::Elem

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

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

Asserts that a value is zero. Read more
Source§

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

Receives n field elements from the prover.
Source§

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

Receives a fixed-size array of field elements from the prover.
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§

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

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

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

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: &[Self::Elem], word: &Word) -> Self::Elem

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

fn select(&mut self, elems: &[Self::Elem], word: &Word) -> Self::Elem

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<Self::Elem>

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