pub struct BinaryPcsProof<F: Field, EF: Field, MT: Mmcs<F>, MX: Mmcs<EF>> {
pub sumcheck: SumcheckData<F, EF>,
pub rounds: Vec<RoundProof<EF, MX>>,
pub base_opened_values: Vec<Vec<F>>,
pub base_multi_proof: MT::MultiProof,
pub final_codeword: Poly<EF>,
pub pow_witness: F,
pub evals: Vec<OpeningEvals<EF>>,
}Expand description
A full opening proof.
The last fold batch has no round entry.
Its codeword has already shrunk to 2^log_inv_rate symbols, so it is sent in full.
A Merkle path over it would only repeat what the verifier can already read. Every earlier batch is committed and opened at every coset position a query needs.
The base commitment holds the committed alphabet, every folded one the challenge field. The first fold of the schedule is what crosses between the two.
Fields§
§sumcheck: SumcheckData<F, EF>Every sumcheck round message, in round order.
rounds: Vec<RoundProof<EF, MX>>One entry per intermediate fold batch, excluding the final batch.
base_opened_values: Vec<Vec<F>>All symbols of the sampled base cosets, in query order with ascending coset offsets. The first batch’s arity determines the number of width-1 rows per query.
base_multi_proof: MT::MultiProofMultiproof for the base commitment’s queried rows.
final_codeword: Poly<EF>The final folded codeword, sent in full and absorbed before query grinding/sampling.
pow_witness: FWitness for the single grind before the query phase.
evals: Vec<OpeningEvals<EF>>Claimed evaluations, in the opening protocol’s own schedule order.
One batch per protocol entry. Each batch holds the current-point values separately from the successor-point ones.
Trait Implementations§
Source§impl<F: Clone + Field, EF: Clone + Field, MT: Clone + Mmcs<F>, MX: Clone + Mmcs<EF>> Clone for BinaryPcsProof<F, EF, MT, MX>where
MT::MultiProof: Clone,
impl<F: Clone + Field, EF: Clone + Field, MT: Clone + Mmcs<F>, MX: Clone + Mmcs<EF>> Clone for BinaryPcsProof<F, EF, MT, MX>where
MT::MultiProof: Clone,
Source§impl<'de, F: Field, EF: Field, MT: Mmcs<F>, MX: Mmcs<EF>> Deserialize<'de> for BinaryPcsProof<F, EF, MT, MX>where
MT::Commitment: Deserialize<'de>,
MT::MultiProof: Deserialize<'de>,
MX::Commitment: Deserialize<'de>,
MX::MultiProof: Deserialize<'de>,
impl<'de, F: Field, EF: Field, MT: Mmcs<F>, MX: Mmcs<EF>> Deserialize<'de> for BinaryPcsProof<F, EF, MT, MX>where
MT::Commitment: Deserialize<'de>,
MT::MultiProof: Deserialize<'de>,
MX::Commitment: Deserialize<'de>,
MX::MultiProof: Deserialize<'de>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<F: Field, EF: Field, MT: Mmcs<F>, MX: Mmcs<EF>> Serialize for BinaryPcsProof<F, EF, MT, MX>where
MT::Commitment: Serialize,
MT::MultiProof: Serialize,
MX::Commitment: Serialize,
MX::MultiProof: Serialize,
impl<F: Field, EF: Field, MT: Mmcs<F>, MX: Mmcs<EF>> Serialize for BinaryPcsProof<F, EF, MT, MX>where
MT::Commitment: Serialize,
MT::MultiProof: Serialize,
MX::Commitment: Serialize,
MX::MultiProof: Serialize,
Auto Trait Implementations§
impl<F, EF, MT, MX> Freeze for BinaryPcsProof<F, EF, MT, MX>where
SumcheckData<F, EF>: Freeze,
Vec<RoundProof<EF, MX>>: Freeze,
Vec<Vec<F>>: Freeze,
<MT as Mmcs<F>>::MultiProof: Freeze,
Poly<EF>: Freeze,
F: Freeze,
Vec<OpeningBatch<EF>>: Freeze,
impl<F, EF, MT, MX> RefUnwindSafe for BinaryPcsProof<F, EF, MT, MX>where
SumcheckData<F, EF>: RefUnwindSafe,
Vec<RoundProof<EF, MX>>: RefUnwindSafe,
Vec<Vec<F>>: RefUnwindSafe,
<MT as Mmcs<F>>::MultiProof: RefUnwindSafe,
Poly<EF>: RefUnwindSafe,
F: RefUnwindSafe,
Vec<OpeningBatch<EF>>: RefUnwindSafe,
impl<F, EF, MT, MX> Send for BinaryPcsProof<F, EF, MT, MX>where
SumcheckData<F, EF>: Send,
Vec<RoundProof<EF, MX>>: Send,
Vec<Vec<F>>: Send,
<MT as Mmcs<F>>::MultiProof: Send,
Poly<EF>: Send,
Vec<OpeningBatch<EF>>: Send,
impl<F, EF, MT, MX> Sync for BinaryPcsProof<F, EF, MT, MX>where
SumcheckData<F, EF>: Sync,
Vec<RoundProof<EF, MX>>: Sync,
Vec<Vec<F>>: Sync,
<MT as Mmcs<F>>::MultiProof: Sync,
Poly<EF>: Sync,
Vec<OpeningBatch<EF>>: Sync,
impl<F, EF, MT, MX> Unpin for BinaryPcsProof<F, EF, MT, MX>where
SumcheckData<F, EF>: Unpin,
Vec<RoundProof<EF, MX>>: Unpin,
Vec<Vec<F>>: Unpin,
<MT as Mmcs<F>>::MultiProof: Unpin,
Poly<EF>: Unpin,
F: Unpin,
Vec<OpeningBatch<EF>>: Unpin,
impl<F, EF, MT, MX> UnsafeUnpin for BinaryPcsProof<F, EF, MT, MX>where
SumcheckData<F, EF>: UnsafeUnpin,
Vec<RoundProof<EF, MX>>: UnsafeUnpin,
Vec<Vec<F>>: UnsafeUnpin,
<MT as Mmcs<F>>::MultiProof: UnsafeUnpin,
Poly<EF>: UnsafeUnpin,
F: UnsafeUnpin,
Vec<OpeningBatch<EF>>: UnsafeUnpin,
impl<F, EF, MT, MX> UnwindSafe for BinaryPcsProof<F, EF, MT, MX>where
SumcheckData<F, EF>: UnwindSafe,
Vec<RoundProof<EF, MX>>: UnwindSafe,
Vec<Vec<F>>: UnwindSafe,
<MT as Mmcs<F>>::MultiProof: UnwindSafe,
Poly<EF>: UnwindSafe,
F: UnwindSafe,
Vec<OpeningBatch<EF>>: 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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> ⓘ
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