Struct poly_commitment::kzg::PairingSRS
source · pub struct PairingSRS<Pair: Pairing> {
pub full_srs: SRS<Pair::G1Affine>,
pub verifier_srs: SRS<Pair::G2Affine>,
}
Expand description
Define a structured reference string (i.e. SRS) for the KZG protocol.
The SRS consists of powers of an element g^x
for some toxic waste x
.
The SRS is formed using what we call a “trusted setup”. For now, the setup
is created using the method create_trusted_setup
.
Fields§
§full_srs: SRS<Pair::G1Affine>
The full SRS is the one used by the prover. Can be seen as the “proving key”/“secret key”
verifier_srs: SRS<Pair::G2Affine>
SRS to be used by the verifier. Can be seen as the “verification key”/“public key”.
Implementations§
source§impl<F: PrimeField, G: CommitmentCurve<ScalarField = F>, G2: CommitmentCurve<ScalarField = F>, Pair: Pairing<G1Affine = G, G2Affine = G2>> PairingSRS<Pair>
impl<F: PrimeField, G: CommitmentCurve<ScalarField = F>, G2: CommitmentCurve<ScalarField = F>, Pair: Pairing<G1Affine = G, G2Affine = G2>> PairingSRS<Pair>
sourcepub fn create_trusted_setup(toxic_waste: F, depth: usize) -> Self
pub fn create_trusted_setup(toxic_waste: F, depth: usize) -> Self
Create a trusted setup for the KZG protocol.
The setup is created using a toxic waste toxic_waste
and a depth
depth
.
Trait Implementations§
source§impl<Pair: Pairing> Clone for PairingSRS<Pair>
impl<Pair: Pairing> Clone for PairingSRS<Pair>
source§impl<Pair: Debug + Pairing> Debug for PairingSRS<Pair>where
Pair::G1Affine: Debug,
Pair::G2Affine: Debug,
impl<Pair: Debug + Pairing> Debug for PairingSRS<Pair>where Pair::G1Affine: Debug, Pair::G2Affine: Debug,
source§impl<Pair: Pairing> Default for PairingSRS<Pair>
impl<Pair: Pairing> Default for PairingSRS<Pair>
source§impl<'de, Pair: Pairing> Deserialize<'de> for PairingSRS<Pair>
impl<'de, Pair: Pairing> Deserialize<'de> for PairingSRS<Pair>
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<Pair: PartialEq + Pairing> PartialEq<PairingSRS<Pair>> for PairingSRS<Pair>where
Pair::G1Affine: PartialEq,
Pair::G2Affine: PartialEq,
impl<Pair: PartialEq + Pairing> PartialEq<PairingSRS<Pair>> for PairingSRS<Pair>where Pair::G1Affine: PartialEq, Pair::G2Affine: PartialEq,
source§fn eq(&self, other: &PairingSRS<Pair>) -> bool
fn eq(&self, other: &PairingSRS<Pair>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<F: PrimeField, G: CommitmentCurve<ScalarField = F>, G2: CommitmentCurve<ScalarField = F>, Pair: Pairing<G1Affine = G, G2Affine = G2>> SRS<G> for PairingSRS<Pair>
impl<F: PrimeField, G: CommitmentCurve<ScalarField = F>, G2: CommitmentCurve<ScalarField = F>, Pair: Pairing<G1Affine = G, G2Affine = G2>> SRS<G> for PairingSRS<Pair>
source§fn max_poly_size(&self) -> usize
fn max_poly_size(&self) -> usize
The maximum polynomial degree that can be committed to
source§fn get_lagrange_basis(&self, domain: D<G::ScalarField>) -> &Vec<PolyComm<G>>
fn get_lagrange_basis(&self, domain: D<G::ScalarField>) -> &Vec<PolyComm<G>>
Compute commitments to the lagrange basis corresponding to the given domain and
cache them in the SRS
source§fn get_lagrange_basis_from_domain_size(
&self,
domain_size: usize
) -> &Vec<PolyComm<G>>
fn get_lagrange_basis_from_domain_size( &self, domain_size: usize ) -> &Vec<PolyComm<G>>
Same as
get_lagrange_basis
but only using the domain size.source§fn blinding_commitment(&self) -> G
fn blinding_commitment(&self) -> G
Get the group element used for blinding commitments
source§fn mask_custom(
&self,
com: PolyComm<G>,
blinders: &PolyComm<G::ScalarField>
) -> Result<BlindedCommitment<G>, CommitmentError>
fn mask_custom( &self, com: PolyComm<G>, blinders: &PolyComm<G::ScalarField> ) -> Result<BlindedCommitment<G>, CommitmentError>
Same as SRS::mask except that you can pass the blinders manually.
A BlindedCommitment object is returned instead of a PolyComm object to
keep the blinding factors and the commitment together. The blinded
commitment is saved in the commitment field of the output.
The output is wrapped into a Result to handle the case the blinders
are not the same length than the number of chunks commitments have.
source§fn mask(
&self,
comm: PolyComm<G>,
rng: &mut impl RngCore + CryptoRng
) -> BlindedCommitment<G>
fn mask( &self, comm: PolyComm<G>, rng: &mut impl RngCore + CryptoRng ) -> BlindedCommitment<G>
Turns a non-hiding polynomial commitment into a hidding polynomial
commitment. Transforms each given
<a, G>
into (<a, G> + wH, w)
with
a random w
per commitment.
A BlindedCommitment object is returned instead of a PolyComm object to
keep the blinding factors and the commitment together. The blinded
commitment is saved in the commitment field of the output.source§fn commit(
&self,
plnm: &DensePolynomial<F>,
num_chunks: usize,
rng: &mut impl RngCore + CryptoRng
) -> BlindedCommitment<G>
fn commit( &self, plnm: &DensePolynomial<F>, num_chunks: usize, rng: &mut impl RngCore + CryptoRng ) -> BlindedCommitment<G>
Commits a polynomial, potentially splitting the result in multiple
commitments.
It is analogous to SRS::commit_evaluations but for polynomials.
A BlindedCommitment object is returned instead of a PolyComm object to
keep the blinding factors and the commitment together. The blinded
commitment is saved in the commitment field of the output.
source§fn commit_non_hiding(
&self,
plnm: &DensePolynomial<G::ScalarField>,
num_chunks: usize
) -> PolyComm<G>
fn commit_non_hiding( &self, plnm: &DensePolynomial<G::ScalarField>, num_chunks: usize ) -> PolyComm<G>
This function commits a polynomial using the SRS’ basis of size
n
. Read moresource§fn commit_custom(
&self,
plnm: &DensePolynomial<G::ScalarField>,
num_chunks: usize,
blinders: &PolyComm<G::ScalarField>
) -> Result<BlindedCommitment<G>, CommitmentError>
fn commit_custom( &self, plnm: &DensePolynomial<G::ScalarField>, num_chunks: usize, blinders: &PolyComm<G::ScalarField> ) -> Result<BlindedCommitment<G>, CommitmentError>
Commit to a polynomial, with custom blinding factors.
It is a combination of SRS::commit and SRS::mask_custom.
It is analogous to SRS::commit_evaluations_custom but for polynomials.
A BlindedCommitment object is returned instead of a PolyComm object to
keep the blinding factors and the commitment together. The blinded
commitment is saved in the commitment field of the output.
The output is wrapped into a Result to handle the case the blinders
are not the same length than the number of chunks commitments have.
source§fn commit_evaluations_non_hiding(
&self,
domain: D<G::ScalarField>,
plnm: &Evaluations<G::ScalarField, D<G::ScalarField>>
) -> PolyComm<G>
fn commit_evaluations_non_hiding( &self, domain: D<G::ScalarField>, plnm: &Evaluations<G::ScalarField, D<G::ScalarField>> ) -> PolyComm<G>
Commit to evaluations, without blinding factors.
It is analogous to SRS::commit_non_hiding but for evaluations.
source§fn commit_evaluations(
&self,
domain: D<G::ScalarField>,
plnm: &Evaluations<G::ScalarField, D<G::ScalarField>>,
rng: &mut impl RngCore + CryptoRng
) -> BlindedCommitment<G>
fn commit_evaluations( &self, domain: D<G::ScalarField>, plnm: &Evaluations<G::ScalarField, D<G::ScalarField>>, rng: &mut impl RngCore + CryptoRng ) -> BlindedCommitment<G>
Commit to evaluations with blinding factors, generated using the random
number generator
rng
.
It is analogous to SRS::commit but for evaluations.
A BlindedCommitment object is returned instead of a PolyComm object to
keep the blinding factors and the commitment together. The blinded
commitment is saved in the commitment field of the output.source§fn commit_evaluations_custom(
&self,
domain: D<G::ScalarField>,
plnm: &Evaluations<G::ScalarField, D<G::ScalarField>>,
blinders: &PolyComm<G::ScalarField>
) -> Result<BlindedCommitment<G>, CommitmentError>
fn commit_evaluations_custom( &self, domain: D<G::ScalarField>, plnm: &Evaluations<G::ScalarField, D<G::ScalarField>>, blinders: &PolyComm<G::ScalarField> ) -> Result<BlindedCommitment<G>, CommitmentError>
Commit to evaluations with custom blinding factors.
It is a combination of SRS::commit_evaluations and SRS::mask_custom.
It is analogous to SRS::commit_custom but for evaluations.
A BlindedCommitment object is returned instead of a PolyComm object to
keep the blinding factors and the commitment together. The blinded
commitment is saved in the commitment field of the output.
The output is wrapped into a Result to handle the case the blinders
are not the same length than the number of chunks commitments have.
fn size(&self) -> usize
source§impl<Pair: Pairing> Serialize for PairingSRS<Pair>
impl<Pair: Pairing> Serialize for PairingSRS<Pair>
impl<Pair: Pairing> StructuralPartialEq for PairingSRS<Pair>
Auto Trait Implementations§
impl<Pair> RefUnwindSafe for PairingSRS<Pair>where <Pair as Pairing>::G1Affine: RefUnwindSafe, <Pair as Pairing>::G2Affine: RefUnwindSafe,
impl<Pair> Send for PairingSRS<Pair>
impl<Pair> Sync for PairingSRS<Pair>
impl<Pair> Unpin for PairingSRS<Pair>where <Pair as Pairing>::G1Affine: Unpin, <Pair as Pairing>::G2Affine: Unpin,
impl<Pair> UnwindSafe for PairingSRS<Pair>where <Pair as Pairing>::G1Affine: UnwindSafe, <Pair as Pairing>::G2Affine: 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