Struct kimchi::proof::ProverProof
source · 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 copy 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<ProverProof<G, OpeningProof>> for ProverProof<G, OpeningProof>where
G::ScalarField: PartialEq,
impl<G: PartialEq + AffineRepr, OpeningProof: PartialEq> PartialEq<ProverProof<G, OpeningProof>> 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
This method 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> RefUnwindSafe for ProverProof<G, OpeningProof>where G: RefUnwindSafe, OpeningProof: RefUnwindSafe, <G as AffineRepr>::ScalarField: RefUnwindSafe,
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>where G: Unpin, OpeningProof: Unpin, <G as AffineRepr>::ScalarField: Unpin,
impl<G, OpeningProof> UnwindSafe for ProverProof<G, OpeningProof>where G: UnwindSafe, OpeningProof: UnwindSafe, <G as AffineRepr>::ScalarField: 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
Mutably borrows from an owned value. Read more