pub struct ProverProof<G: AffineRepr, OpeningProof> {
pub commitments: ProverCommitments<G>,
pub proof: OpeningProof,
pub evals: ProofEvaluations<PointEvaluations<Vec<G::ScalarField>>>,
pub ft_eval1: G::ScalarField,
pub prev_challenges: Vec<RecursionChallenge<G>>,
}
Expand description
The proof that the prover creates from a
ProverIndex and a witness
.
Fields§
§commitments: ProverCommitments<G>
All the polynomial commitments required in the proof
proof: OpeningProof
batched commitment opening proof
evals: ProofEvaluations<PointEvaluations<Vec<G::ScalarField>>>
Two evaluations over a number of committed polynomials
ft_eval1: G::ScalarField
Required evaluation for Maller’s optimization
prev_challenges: Vec<RecursionChallenge<G>>
The challenges underlying the optional polynomials folded into the proof
Implementations§
Source§impl<G: KimchiCurve, OpeningProof: OpenProof<G>> ProverProof<G, OpeningProof>where
G::BaseField: PrimeField,
impl<G: KimchiCurve, OpeningProof: OpenProof<G>> ProverProof<G, OpeningProof>where
G::BaseField: PrimeField,
Sourcepub fn create<EFqSponge: Clone + FqSponge<G::BaseField, G, G::ScalarField>, EFrSponge: FrSponge<G::ScalarField>, RNG: RngCore + CryptoRng>(
groupmap: &G::Map,
witness: [Vec<G::ScalarField>; 15],
runtime_tables: &[RuntimeTable<G::ScalarField>],
index: &ProverIndex<G, OpeningProof>,
rng: &mut RNG,
) -> Result<Self, ProverError>where
VerifierIndex<G, OpeningProof>: Clone,
pub fn create<EFqSponge: Clone + FqSponge<G::BaseField, G, G::ScalarField>, EFrSponge: FrSponge<G::ScalarField>, RNG: RngCore + CryptoRng>(
groupmap: &G::Map,
witness: [Vec<G::ScalarField>; 15],
runtime_tables: &[RuntimeTable<G::ScalarField>],
index: &ProverIndex<G, OpeningProof>,
rng: &mut RNG,
) -> Result<Self, ProverError>where
VerifierIndex<G, OpeningProof>: Clone,
This function constructs prover’s zk-proof from the witness & the ProverIndex
against SRS instance
§Errors
Will give error if create_recursive
process fails.
Sourcepub fn create_recursive<EFqSponge: Clone + FqSponge<G::BaseField, G, G::ScalarField>, EFrSponge: FrSponge<G::ScalarField>, RNG: RngCore + CryptoRng>(
group_map: &G::Map,
witness: [Vec<G::ScalarField>; 15],
runtime_tables: &[RuntimeTable<G::ScalarField>],
index: &ProverIndex<G, OpeningProof>,
prev_challenges: Vec<RecursionChallenge<G>>,
blinders: Option<[Option<PolyComm<G::ScalarField>>; 15]>,
rng: &mut RNG,
) -> Result<Self, ProverError>where
VerifierIndex<G, OpeningProof>: Clone,
pub fn create_recursive<EFqSponge: Clone + FqSponge<G::BaseField, G, G::ScalarField>, EFrSponge: FrSponge<G::ScalarField>, RNG: RngCore + CryptoRng>(
group_map: &G::Map,
witness: [Vec<G::ScalarField>; 15],
runtime_tables: &[RuntimeTable<G::ScalarField>],
index: &ProverIndex<G, OpeningProof>,
prev_challenges: Vec<RecursionChallenge<G>>,
blinders: Option<[Option<PolyComm<G::ScalarField>>; 15]>,
rng: &mut RNG,
) -> Result<Self, ProverError>where
VerifierIndex<G, OpeningProof>: Clone,
Source§impl<G: KimchiCurve, OpeningProof: OpenProof<G>> ProverProof<G, OpeningProof>where
G::BaseField: PrimeField,
impl<G: KimchiCurve, OpeningProof: OpenProof<G>> ProverProof<G, OpeningProof>where
G::BaseField: PrimeField,
Sourcepub fn oracles<EFqSponge: Clone + FqSponge<G::BaseField, G, G::ScalarField>, EFrSponge: FrSponge<G::ScalarField>>(
&self,
index: &VerifierIndex<G, OpeningProof>,
public_comm: &PolyComm<G>,
public_input: Option<&[G::ScalarField]>,
) -> Result<OraclesResult<G, EFqSponge>>
pub fn oracles<EFqSponge: Clone + FqSponge<G::BaseField, G, G::ScalarField>, EFrSponge: FrSponge<G::ScalarField>>( &self, index: &VerifierIndex<G, OpeningProof>, public_comm: &PolyComm<G>, public_input: Option<&[G::ScalarField]>, ) -> Result<OraclesResult<G, EFqSponge>>
Trait Implementations§
Source§impl<G: Clone + AffineRepr, OpeningProof: Clone> Clone for ProverProof<G, OpeningProof>where
G::ScalarField: Clone,
impl<G: Clone + AffineRepr, OpeningProof: Clone> Clone for ProverProof<G, OpeningProof>where
G::ScalarField: Clone,
Source§fn clone(&self) -> ProverProof<G, OpeningProof>
fn clone(&self) -> ProverProof<G, OpeningProof>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<G: Debug + AffineRepr, OpeningProof: Debug> Debug for ProverProof<G, OpeningProof>where
G::ScalarField: Debug,
impl<G: Debug + AffineRepr, OpeningProof: Debug> Debug for ProverProof<G, OpeningProof>where
G::ScalarField: Debug,
Source§impl<'de, G, OpeningProof> Deserialize<'de> for ProverProof<G, OpeningProof>where
OpeningProof: Deserialize<'de>,
G: CanonicalDeserialize + CanonicalSerialize + AffineRepr,
impl<'de, G, OpeningProof> Deserialize<'de> for ProverProof<G, OpeningProof>where
OpeningProof: Deserialize<'de>,
G: CanonicalDeserialize + CanonicalSerialize + AffineRepr,
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<G: PartialEq + AffineRepr, OpeningProof: PartialEq> PartialEq for ProverProof<G, OpeningProof>where
G::ScalarField: PartialEq,
impl<G: PartialEq + AffineRepr, OpeningProof: PartialEq> PartialEq for ProverProof<G, OpeningProof>where
G::ScalarField: PartialEq,
Source§fn eq(&self, other: &ProverProof<G, OpeningProof>) -> bool
fn eq(&self, other: &ProverProof<G, OpeningProof>) -> bool
Tests for
self
and other
values to be equal, and is used by ==
.Source§impl<G, OpeningProof> Serialize for ProverProof<G, OpeningProof>where
OpeningProof: Serialize,
G: CanonicalDeserialize + CanonicalSerialize + AffineRepr,
impl<G, OpeningProof> Serialize for ProverProof<G, OpeningProof>where
OpeningProof: Serialize,
G: CanonicalDeserialize + CanonicalSerialize + AffineRepr,
impl<G: AffineRepr, OpeningProof> StructuralPartialEq for ProverProof<G, OpeningProof>
Auto Trait Implementations§
impl<G, OpeningProof> Freeze for ProverProof<G, OpeningProof>
impl<G, OpeningProof> RefUnwindSafe for ProverProof<G, OpeningProof>
impl<G, OpeningProof> Send for ProverProof<G, OpeningProof>where
OpeningProof: Send,
impl<G, OpeningProof> Sync for ProverProof<G, OpeningProof>where
OpeningProof: Sync,
impl<G, OpeningProof> Unpin for ProverProof<G, OpeningProof>
impl<G, OpeningProof> UnwindSafe for ProverProof<G, OpeningProof>
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