Implement compute elements (row) proofs
This commit is contained in:
parent
9b2d723fd9
commit
b0d957c85c
|
@ -1,8 +1,8 @@
|
|||
use crate::common::{Chunk, ChunksMatrix};
|
||||
use crate::global::{DOMAIN, GLOBAL_PARAMETERS};
|
||||
use kzgrs::{
|
||||
bytes_to_polynomial, commit_polynomial, Commitment, Polynomial, PolynomialEvaluationDomain,
|
||||
Proof, BYTES_PER_FIELD_ELEMENT,
|
||||
bytes_to_polynomial, commit_polynomial, encode, generate_element_proof, Commitment,
|
||||
Evaluations, Polynomial, PolynomialEvaluationDomain, Proof, BYTES_PER_FIELD_ELEMENT,
|
||||
};
|
||||
pub struct DaEncoderParams {
|
||||
column_count: usize,
|
||||
|
@ -47,17 +47,45 @@ impl DaEncoder {
|
|||
.collect()
|
||||
}
|
||||
|
||||
fn compute_kzg_row_commitments(matrix: ChunksMatrix) -> Vec<(Polynomial, Commitment)> {
|
||||
fn compute_kzg_row_commitments(
|
||||
matrix: ChunksMatrix,
|
||||
) -> Vec<((Evaluations, Polynomial), Commitment)> {
|
||||
matrix
|
||||
.rows()
|
||||
.map(|r| {
|
||||
let (_, poly) = bytes_to_polynomial::<
|
||||
let (evals, poly) = bytes_to_polynomial::<
|
||||
{ DaEncoderParams::MAX_BLS12_381_ENCODING_CHUNK_SIZE },
|
||||
>(r.as_bytes().as_ref(), *DOMAIN)
|
||||
.unwrap();
|
||||
|
||||
let commitment = commit_polynomial(&poly, &GLOBAL_PARAMETERS).unwrap();
|
||||
(poly, commitment)
|
||||
((evals, poly), commitment)
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn rs_encode_row(evaluations: &Evaluations, row: &Polynomial) -> Evaluations {
|
||||
encode(row, evaluations, 2, &DOMAIN)
|
||||
}
|
||||
|
||||
fn rs_encode_rows(rows: &[(Evaluations, Polynomial)]) -> Vec<Evaluations> {
|
||||
rows.iter()
|
||||
.map(|(eval, poly)| Self::rs_encode_row(eval, poly))
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn compute_rows_proofs(
|
||||
polynomials: &[Polynomial],
|
||||
commitments: &[Commitment],
|
||||
size: usize,
|
||||
) -> Vec<Vec<Proof>> {
|
||||
polynomials
|
||||
.iter()
|
||||
.zip(commitments.iter())
|
||||
.map(|(poly, commitment)| {
|
||||
(0..size)
|
||||
.map(|i| generate_element_proof(i, poly, &GLOBAL_PARAMETERS, &DOMAIN).unwrap())
|
||||
.collect()
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ pub type Commitment = kzg10::Commitment<Bls12_381>;
|
|||
pub type Proof = kzg10::Proof<Bls12_381>;
|
||||
pub type FieldElement = ark_bls12_381::Fr;
|
||||
pub type Polynomial = DensePolynomial<Fr>;
|
||||
pub type Evaluations = ark_poly::Evaluations<Fr>;
|
||||
pub type PolynomialEvaluationDomain = GeneralEvaluationDomain<Fr>;
|
||||
|
||||
pub type GlobalParameters = UniversalParams<Bls12_381>;
|
||||
|
|
Loading…
Reference in New Issue