implement proof verification
This commit is contained in:
parent
dbf84ff1b6
commit
32aeaf8043
|
@ -1,9 +1,11 @@
|
||||||
use crate::common::KzgRsError;
|
use crate::common::KzgRsError;
|
||||||
use ark_bls12_381::{Bls12_381, Fr};
|
use ark_bls12_381::{Bls12_381, Fr};
|
||||||
|
use ark_ec::pairing::Pairing;
|
||||||
use ark_poly::univariate::DensePolynomial;
|
use ark_poly::univariate::DensePolynomial;
|
||||||
use ark_poly::{DenseUVPolynomial, EvaluationDomain, GeneralEvaluationDomain, Polynomial};
|
use ark_poly::{DenseUVPolynomial, EvaluationDomain, GeneralEvaluationDomain, Polynomial};
|
||||||
use ark_poly_commit::kzg10::{Commitment, Powers, Proof, KZG10};
|
use ark_poly_commit::kzg10::{Commitment, Powers, Proof, UniversalParams, KZG10};
|
||||||
use num_traits::One;
|
use num_traits::One;
|
||||||
|
use std::ops::{Mul, Neg};
|
||||||
|
|
||||||
/// Commit to a polynomial where each of the evaluations are over `w(i)` for the degree
|
/// Commit to a polynomial where each of the evaluations are over `w(i)` for the degree
|
||||||
/// of the polynomial being omega (`w`) the root of unity (2^x).
|
/// of the polynomial being omega (`w`) the root of unity (2^x).
|
||||||
|
@ -37,13 +39,20 @@ pub fn generate_element_proof(
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn verify_element_proof(
|
pub fn verify_element_proof(
|
||||||
|
element_index: usize,
|
||||||
element: &Fr,
|
element: &Fr,
|
||||||
commitment: &Commitment<Bls12_381>,
|
commitment: &Commitment<Bls12_381>,
|
||||||
proof: &Proof<Bls12_381>,
|
proof: &Proof<Bls12_381>,
|
||||||
element_index: usize,
|
domain: &GeneralEvaluationDomain<Fr>,
|
||||||
roots_of_unity: &Powers<Fr>,
|
global_parameters: &UniversalParams<Bls12_381>,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
todo!()
|
let u = domain.element(element_index);
|
||||||
|
let v = element;
|
||||||
|
let commitment_check_g1 = commitment.0 + global_parameters.powers_of_g[0].mul(v).neg();
|
||||||
|
let proof_check_g2 = global_parameters.beta_h + global_parameters.h.mul(u).neg();
|
||||||
|
let lhs = Bls12_381::pairing(commitment_check_g1, global_parameters.h);
|
||||||
|
let rhs = Bls12_381::pairing(proof.w, proof_check_g2);
|
||||||
|
lhs == rhs
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
Loading…
Reference in New Issue