pub struct Proof<F: PrimeField> {
pub commitments: (ZipPlusCommitment, ZipPlusCommitment, ZipPlusCommitment),
pub zip: Vec<u8>,
pub ideal_check: Proof<F>,
pub resolver: Proof<F>,
pub combined_sumcheck: MultiDegreeSumcheckProof<F>,
pub multipoint_eval: Proof<F>,
pub witness_lifted_evals: Vec<DynamicPolynomialF<F>>,
pub lookup_proof: Option<BatchedLookupProof<F>>,
}Expand description
Full proof produced by the Zinc+ PIOP for UCS.
Fields§
§commitments: (ZipPlusCommitment, ZipPlusCommitment, ZipPlusCommitment)Zip+ commitments to the witness columns.
zip: Vec<u8>Serialized PCS proof data (Zip+ proving transcripts).
ideal_check: Proof<F>Randomized ideal check proof.
resolver: Proof<F>Combined polynomial resolver proof (up_evals + down_evals).
combined_sumcheck: MultiDegreeSumcheckProof<F>Multi-degree sumcheck proof (CPR group + future lookup groups).
multipoint_eval: Proof<F>Multi-point evaluation sumcheck proof (combines up_evals and down_evals at r’ into a single evaluation point r_0).
witness_lifted_evals: Vec<DynamicPolynomialF<F>>Witness-only polynomial MLE evaluations at r_0 in F_q[X]
(after \phi_q, before \psi_a), ordered as
[wit_bin..., wit_arb..., wit_int...].
The verifier recomputes public lifted_evals from public data,
interleaves them with these, and derives scalar open_evals via
\psi_a for the sumcheck consistency check and Zip+ PCS verify.
lookup_proof: Option<BatchedLookupProof<F>>Lookup argument proof. None when the UAIR has no lookup specs.
Trait Implementations§
Source§impl<F> GenTranscribable for Proof<F>where
F: PrimeField,
F::Inner: ConstTranscribable,
F::Modulus: ConstTranscribable,
impl<F> GenTranscribable for Proof<F>where
F: PrimeField,
F::Inner: ConstTranscribable,
F::Modulus: ConstTranscribable,
Source§fn read_transcription_bytes_exact(bytes: &[u8]) -> Self
fn read_transcription_bytes_exact(bytes: &[u8]) -> Self
Source§fn write_transcription_bytes_exact(&self, buf: &mut [u8])
fn write_transcription_bytes_exact(&self, buf: &mut [u8])
Source§impl<F> Transcribable for Proof<F>where
F: PrimeField,
F::Inner: ConstTranscribable,
F::Modulus: ConstTranscribable,
impl<F> Transcribable for Proof<F>where
F: PrimeField,
F::Inner: ConstTranscribable,
F::Modulus: ConstTranscribable,
Source§fn get_num_bytes(&self) -> usize
fn get_num_bytes(&self) -> usize
write_transcription_bytes should be exactly the
length returned by this function.Source§const LENGTH_NUM_BYTES: usize = u32::NUM_BYTES
const LENGTH_NUM_BYTES: usize = u32::NUM_BYTES
Source§fn read_num_bytes(bytes: &[u8]) -> usize
fn read_num_bytes(bytes: &[u8]) -> usize
LENGTH_NUM_BYTES long.
The buffer passed to read_transcription_bytes should be exactly the
length returned by this function.Source§fn read_transcription_bytes_subset(bytes: &[u8]) -> (Self, &[u8])
fn read_transcription_bytes_subset(bytes: &[u8]) -> (Self, &[u8])
impl<F: Eq + PrimeField> Eq for Proof<F>
impl<F: PrimeField> StructuralPartialEq for Proof<F>
Auto Trait Implementations§
impl<F> Freeze for Proof<F>where
F: Freeze,
impl<F> RefUnwindSafe for Proof<F>where
F: RefUnwindSafe,
impl<F> Send for Proof<F>
impl<F> Sync for Proof<F>
impl<F> Unpin for Proof<F>where
F: Unpin,
impl<F> UnsafeUnpin for Proof<F>where
F: UnsafeUnpin,
impl<F> UnwindSafe for Proof<F>where
F: UnwindSafe,
Blanket Implementations§
§impl<T> AsMaybeUninit for T
impl<T> AsMaybeUninit for T
§type Uninit = MaybeUninit<T>
type Uninit = MaybeUninit<T>
§fn as_ref_uninit(&self) -> &<T as AsMaybeUninit>::Uninit
fn as_ref_uninit(&self) -> &<T as AsMaybeUninit>::Uninit
&self to its maybe-initialized equivalent.§unsafe fn as_mut_uninit(&mut self) -> &mut <T as AsMaybeUninit>::Uninit
unsafe fn as_mut_uninit(&mut self) -> &mut <T as AsMaybeUninit>::Uninit
&mut T to its maybe-initialized equivalent. Read more§unsafe fn raw_as_uninit<'a>(raw: *const T) -> &'a <T as AsMaybeUninit>::Uninit
unsafe fn raw_as_uninit<'a>(raw: *const T) -> &'a <T as AsMaybeUninit>::Uninit
§unsafe fn raw_mut_as_uninit<'a>(
raw: *mut T,
) -> &'a mut <T as AsMaybeUninit>::Uninit
unsafe fn raw_mut_as_uninit<'a>( raw: *mut T, ) -> &'a mut <T as AsMaybeUninit>::Uninit
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
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>
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>
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