pub struct BooleanTraceCommitment<EF, B> { /* private fields */ }Expand description
A commitment to a batch of Boolean trace tables, packed into one bit witness.
The committed object is the bits, so the codeword is as short as the alphabet allows.
The tables themselves are retained, for a prover that evaluates constraints over them.
Implementations§
Source§impl<EF, MT, MX> BooleanTraceCommitment<EF, BooleanPcs<EF, MT, MX>>where
EF: ChallengeField<EF> + EncodableLevel + TranscriptField + TowerLevel + FoldAlphabet<EF> + Coordinates,
MT: Mmcs<EF>,
MX: Mmcs<EF, Error = MT::Error>,
impl<EF, MT, MX> BooleanTraceCommitment<EF, BooleanPcs<EF, MT, MX>>where
EF: ChallengeField<EF> + EncodableLevel + TranscriptField + TowerLevel + FoldAlphabet<EF> + Coordinates,
MT: Mmcs<EF>,
MX: Mmcs<EF, Error = MT::Error>,
Sourcepub fn new(
config: BinaryPcsConfig,
mmcs: MT,
round_mmcs: MX,
num_variables: usize,
) -> Result<Self, BooleanTraceError<EF, MT::Error>>
pub fn new( config: BinaryPcsConfig, mmcs: MT, round_mmcs: MX, num_variables: usize, ) -> Result<Self, BooleanTraceError<EF, MT::Error>>
Build a commitment over a batch of tables stacking to num_variables bits.
The arity is the one the layout planner derives from the table shapes.
§Errors
Returns an error unless the schedule was derived for the committed alphabet.
Returns an error unless the schedule commits exactly the elements the packing holds.
Source§impl<EF, B> BooleanTraceCommitment<EF, B>where
EF: ChallengeField<EF> + EncodableLevel + TranscriptField + TowerLevel + FoldAlphabet<EF> + Coordinates,
B: BooleanBackend<EF>,
impl<EF, B> BooleanTraceCommitment<EF, B>where
EF: ChallengeField<EF> + EncodableLevel + TranscriptField + TowerLevel + FoldAlphabet<EF> + Coordinates,
B: BooleanBackend<EF>,
Sourcepub const fn from_commitment(inner: B) -> Self
pub const fn from_commitment(inner: B) -> Self
Stack trace tables into an already-built bit commitment.
Sourcepub fn num_variables(&self) -> usize
pub fn num_variables(&self) -> usize
Variables the stacked bit witness has, so 2^n bits in all.
Trait Implementations§
Source§impl<EF, B, Challenger> MultilinearPcs<EF, Challenger> for BooleanTraceCommitment<EF, B>where
EF: ChallengeField<EF> + EncodableLevel + TranscriptField + TowerLevel + FoldAlphabet<EF> + Coordinates,
B: BooleanMultilinearPcs<EF, Challenger>,
Challenger: FieldChallenger<EF> + GrindingChallenger<Witness = EF> + CanSampleUniformBits<EF> + CanObserve<B::Commitment>,
impl<EF, B, Challenger> MultilinearPcs<EF, Challenger> for BooleanTraceCommitment<EF, B>where
EF: ChallengeField<EF> + EncodableLevel + TranscriptField + TowerLevel + FoldAlphabet<EF> + Coordinates,
B: BooleanMultilinearPcs<EF, Challenger>,
Challenger: FieldChallenger<EF> + GrindingChallenger<Witness = EF> + CanSampleUniformBits<EF> + CanObserve<B::Commitment>,
Source§type Commitment = <B as BooleanBackend<EF>>::Commitment
type Commitment = <B as BooleanBackend<EF>>::Commitment
Succinct binding commitment sent to the verifier.
Source§type ProverData = BooleanTraceCommitmentData<EF, <B as BooleanBackend<EF>>::ProverData>
type ProverData = BooleanTraceCommitmentData<EF, <B as BooleanBackend<EF>>::ProverData>
Prover-side auxiliary data retained between commit and open.
Never sent to the verifier.
Source§type Proof = BooleanTraceCommitmentProof<EF, <B as BooleanBackend<EF>>::Proof>
type Proof = BooleanTraceCommitmentProof<EF, <B as BooleanBackend<EF>>::Proof>
Opening proof checked by the verifier.
Source§type Error = BooleanTraceCommitmentError<<B as BooleanBackend<EF>>::Error>
type Error = BooleanTraceCommitmentError<<B as BooleanBackend<EF>>::Error>
Verification failure type.
Source§type ProverError = BooleanTraceCommitmentError<<B as BooleanBackend<EF>>::Error>
type ProverError = BooleanTraceCommitmentError<<B as BooleanBackend<EF>>::Error>
Configuration or budget failure during commitment or opening.
Source§type OpeningProtocol = OpeningProtocol
type OpeningProtocol = OpeningProtocol
Public opening shapes agreed before commit.
Source§fn num_vars(&self) -> usize
fn num_vars(&self) -> usize
Number of variables m of the committed polynomials.
Every polynomial has 2^m evaluations.
Source§fn commit(
&self,
witness: Self::Witness,
challenger: &mut Challenger,
) -> Result<(Self::Commitment, Self::ProverData), Self::ProverError>
fn commit( &self, witness: Self::Witness, challenger: &mut Challenger, ) -> Result<(Self::Commitment, Self::ProverData), Self::ProverError>
Commit to a multilinear witness. Read more
Source§fn observe_commitment(
&self,
commitment: &Self::Commitment,
challenger: &mut Challenger,
)
fn observe_commitment( &self, commitment: &Self::Commitment, challenger: &mut Challenger, )
Bind a commitment into the transcript. Read more
Source§fn open(
&self,
prover_data: Self::ProverData,
protocol: Self::OpeningProtocol,
challenger: &mut Challenger,
) -> Result<Self::Proof, Self::ProverError>
fn open( &self, prover_data: Self::ProverData, protocol: Self::OpeningProtocol, challenger: &mut Challenger, ) -> Result<Self::Proof, Self::ProverError>
Produce an opening proof for the supplied opening protocol. Read more
Source§fn verify(
&self,
commitment: &Self::Commitment,
proof: &Self::Proof,
challenger: &mut Challenger,
protocol: Self::OpeningProtocol,
) -> Result<(), Self::Error>
fn verify( &self, commitment: &Self::Commitment, proof: &Self::Proof, challenger: &mut Challenger, protocol: Self::OpeningProtocol, ) -> Result<(), Self::Error>
Verify an opening proof against a public commitment and opening protocol. Read more
Source§impl<EF, B, Challenger> PrescribedPointPcs<EF, Challenger> for BooleanTraceCommitment<EF, B>where
EF: ChallengeField<EF> + EncodableLevel + TranscriptField + TowerLevel + FoldAlphabet<EF> + Coordinates,
B: BooleanMultilinearPcs<EF, Challenger>,
Challenger: FieldChallenger<EF> + GrindingChallenger<Witness = EF> + CanSampleUniformBits<EF> + CanObserve<B::Commitment>,
impl<EF, B, Challenger> PrescribedPointPcs<EF, Challenger> for BooleanTraceCommitment<EF, B>where
EF: ChallengeField<EF> + EncodableLevel + TranscriptField + TowerLevel + FoldAlphabet<EF> + Coordinates,
B: BooleanMultilinearPcs<EF, Challenger>,
Challenger: FieldChallenger<EF> + GrindingChallenger<Witness = EF> + CanSampleUniformBits<EF> + CanObserve<B::Commitment>,
Source§fn prescribed_security(
&self,
protocol: &OpeningProtocol,
) -> Option<PrescribedOpeningSecurity>
fn prescribed_security( &self, protocol: &OpeningProtocol, ) -> Option<PrescribedOpeningSecurity>
Soundness evidence for this exact opening protocol, or
None when unknown. Read moreSource§fn open_at(
&self,
prover_data: Self::ProverData,
protocol: &OpeningProtocol,
points: &[Point<EF>],
challenger: &mut Challenger,
) -> Result<Self::Proof, Self::ProverError>
fn open_at( &self, prover_data: Self::ProverData, protocol: &OpeningProtocol, points: &[Point<EF>], challenger: &mut Challenger, ) -> Result<Self::Proof, Self::ProverError>
Open the committed columns at caller-prescribed points instead of sampled ones. Read more
Source§fn verify_at(
&self,
commitment: &Self::Commitment,
proof: &Self::Proof,
protocol: &OpeningProtocol,
points: &[Point<EF>],
challenger: &mut Challenger,
) -> Result<Vec<OpeningEvals<EF>>, Self::Error>
fn verify_at( &self, commitment: &Self::Commitment, proof: &Self::Proof, protocol: &OpeningProtocol, points: &[Point<EF>], challenger: &mut Challenger, ) -> Result<Vec<OpeningEvals<EF>>, Self::Error>
Verify a prescribed-point opening and return the opened column values. Read more
Auto Trait Implementations§
impl<EF, B> Freeze for BooleanTraceCommitment<EF, B>
impl<EF, B> RefUnwindSafe for BooleanTraceCommitment<EF, B>
impl<EF, B> Send for BooleanTraceCommitment<EF, B>
impl<EF, B> Sync for BooleanTraceCommitment<EF, B>
impl<EF, B> Unpin for BooleanTraceCommitment<EF, B>
impl<EF, B> UnsafeUnpin for BooleanTraceCommitment<EF, B>
impl<EF, B> UnwindSafe for BooleanTraceCommitment<EF, B>
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
Mutably borrows from an owned value. Read more
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> ⓘ
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 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> ⓘ
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