Skip to content

Commit a3d89c6

Browse files
authored
rename opening_key to verification_key (#285)
1 parent afccc42 commit a3d89c6

File tree

9 files changed

+71
-61
lines changed

9 files changed

+71
-61
lines changed

cryptography/kzg_multi_open/benches/benchmark.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ use bls12_381::{ff::Field, G1Projective};
33
use bls12_381::{g1_batch_normalize, g2_batch_normalize, G2Projective, Scalar};
44
use crate_crypto_kzg_multi_open_fk20::Verifier;
55
use crate_crypto_kzg_multi_open_fk20::{
6-
commit_key::CommitKey, opening_key::OpeningKey, Prover, ProverInput,
6+
commit_key::CommitKey, verification_key::VerificationKey, Prover, ProverInput,
77
};
88
use criterion::{criterion_group, criterion_main, Criterion};
99

1010
pub fn bench_compute_proof_fk20(c: &mut Criterion) {
1111
const POLYNOMIAL_LEN: usize = 4096;
1212
let polynomial_4096 = random_scalars(POLYNOMIAL_LEN);
13-
let (ck, _) = create_insecure_commit_opening_keys();
13+
let (ck, _) = create_insecure_commit_verification_keys();
1414
const NUMBER_OF_POINTS_TO_EVALUATE: usize = 2 * POLYNOMIAL_LEN;
1515

1616
const NUMBER_OF_POINTS_PER_PROOF: usize = 64;
@@ -40,7 +40,7 @@ pub fn bench_compute_proof_fk20(c: &mut Criterion) {
4040
pub fn bench_verify_proof_fk20(c: &mut Criterion) {
4141
const POLYNOMIAL_LEN: usize = 4096;
4242
let polynomial_4096 = random_scalars(POLYNOMIAL_LEN);
43-
let (ck, vk) = create_insecure_commit_opening_keys();
43+
let (ck, vk) = create_insecure_commit_verification_keys();
4444
const NUMBER_OF_POINTS_TO_EVALUATE: usize = 2 * POLYNOMIAL_LEN;
4545

4646
const NUMBER_OF_POINTS_PER_PROOF: usize = 64;
@@ -89,7 +89,7 @@ fn random_scalars(size: usize) -> Vec<Scalar> {
8989
// We duplicate this to ensure that the version in the src code is only ever compiled with the test feature.
9090
//
9191
// This code should never be used outside of benchmarks and tests.
92-
pub fn create_insecure_commit_opening_keys() -> (CommitKey, OpeningKey) {
92+
pub fn create_insecure_commit_verification_keys() -> (CommitKey, VerificationKey) {
9393
// A single proof will attest to the opening of 64 points.
9494
let multi_opening_size = 64;
9595

@@ -115,15 +115,15 @@ pub fn create_insecure_commit_opening_keys() -> (CommitKey, OpeningKey) {
115115
let secret = -Scalar::ONE;
116116
let mut current_secret_pow = Scalar::ONE;
117117
let g2_gen = G2Projective::generator();
118-
// The setup needs 65 g1 elements for the opening key, in order
118+
// The setup needs 65 g1 elements for the verification key, in order
119119
// to commit to the remainder polynomial.
120120
for _ in 0..multi_opening_size + 1 {
121121
g2_points.push(g2_gen * current_secret_pow);
122122
current_secret_pow *= secret;
123123
}
124124
let g2_points = g2_batch_normalize(&g2_points);
125125

126-
let vk = OpeningKey::new(
126+
let vk = VerificationKey::new(
127127
g1_points[0..multi_opening_size + 1].to_vec(),
128128
g2_points,
129129
multi_opening_size,

cryptography/kzg_multi_open/src/fk20/h_poly.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ pub(crate) fn take_every_nth<T: Clone + Copy>(list: &[T], n: usize) -> Vec<Vec<T
7171
#[cfg(test)]
7272
mod tests {
7373
use crate::{
74-
create_insecure_commit_opening_keys,
74+
create_insecure_commit_verification_keys,
7575
fk20::{
7676
h_poly::{compute_h_poly_commitments, take_every_nth},
7777
naive,
@@ -92,7 +92,7 @@ mod tests {
9292
fn check_consistency_of_toeplitz_h_polys() {
9393
let poly: Vec<_> = (0..4096).map(|i| -Scalar::from(i)).collect();
9494
let coset_size: usize = 64;
95-
let (commit_key, _) = create_insecure_commit_opening_keys();
95+
let (commit_key, _) = create_insecure_commit_verification_keys();
9696

9797
// Compute the commitment to the h_polynomials naively
9898
//

cryptography/kzg_multi_open/src/fk20/prover.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ mod tests {
218218

219219
use super::{FK20Prover, Input};
220220
use crate::{
221-
create_insecure_commit_opening_keys,
221+
create_insecure_commit_verification_keys,
222222
fk20::{cosets::generate_cosets, naive as fk20naive, verifier::FK20Verifier},
223223
naive as kzgnaive,
224224
};
@@ -229,7 +229,7 @@ mod tests {
229229
// This tests that if we create proofs over Input::Data
230230
// then the first set of cells will contain the data.
231231

232-
let (commit_key, _) = create_insecure_commit_opening_keys();
232+
let (commit_key, _) = create_insecure_commit_verification_keys();
233233

234234
let poly_len = 4096;
235235
let num_points_to_open = 2 * poly_len;
@@ -253,7 +253,7 @@ mod tests {
253253

254254
#[test]
255255
fn smoke_test_prove_verify() {
256-
let (commit_key, opening_key) = create_insecure_commit_opening_keys();
256+
let (commit_key, verification_key) = create_insecure_commit_verification_keys();
257257

258258
let poly_len = 4096;
259259
let num_points_to_open = 2 * poly_len;
@@ -267,7 +267,7 @@ mod tests {
267267
num_points_to_open,
268268
UsePrecomp::No,
269269
);
270-
let fk20_verifier = FK20Verifier::new(opening_key, num_points_to_open, num_cosets);
270+
let fk20_verifier = FK20Verifier::new(verification_key, num_points_to_open, num_cosets);
271271

272272
let data: Vec<_> = (0..poly_len).map(|i| Scalar::from(i as u64)).collect();
273273
let (proofs, cells) = fk20.compute_multi_opening_proofs(Input::Data(data.clone()));
@@ -291,7 +291,7 @@ mod tests {
291291
let poly_len = 4096;
292292
let poly: Vec<_> = (0..poly_len).map(|i| -Scalar::from(i as u64)).collect();
293293
let coset_size = 64;
294-
let (commit_key, _) = create_insecure_commit_opening_keys();
294+
let (commit_key, _) = create_insecure_commit_verification_keys();
295295

296296
// Compute the proofs and evaluations using naive fk20
297297
let (expected_proofs, expected_evaluations) =
@@ -319,7 +319,7 @@ mod tests {
319319
fn test_consistency_between_naive_kzg_naive_fk20() {
320320
// Setup
321321
//
322-
let (ck, _) = create_insecure_commit_opening_keys();
322+
let (ck, _) = create_insecure_commit_verification_keys();
323323

324324
const POLYNOMIAL_LEN: usize = 4096;
325325
const NUMBER_OF_POINTS_TO_EVALUATE: usize = 2 * POLYNOMIAL_LEN;

cryptography/kzg_multi_open/src/fk20/verifier.rs

+21-16
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::{
22
fk20::cosets::{coset_gens, reverse_bit_order},
3-
opening_key::OpeningKey,
3+
verification_key::VerificationKey,
44
};
55
use bls12_381::{
66
batch_inversion::batch_inverse, ff::Field, g1_batch_normalize, lincomb::g1_lincomb,
@@ -36,7 +36,7 @@ pub type CommitmentIndex = u64;
3636
/// - We only use FK20 to create proofs
3737
#[derive(Debug)]
3838
pub struct FK20Verifier {
39-
pub opening_key: OpeningKey,
39+
pub verification_key: VerificationKey,
4040
pub coset_gens_bit_reversed: Vec<Scalar>,
4141
coset_domain: Domain,
4242
// Pre-computations for the verification algorithm
@@ -52,22 +52,26 @@ pub struct FK20Verifier {
5252
}
5353

5454
impl FK20Verifier {
55-
pub fn new(opening_key: OpeningKey, num_points_to_open: usize, num_cosets: usize) -> Self {
55+
pub fn new(
56+
verification_key: VerificationKey,
57+
num_points_to_open: usize,
58+
num_cosets: usize,
59+
) -> Self {
5660
const BIT_REVERSED: bool = true;
5761
let coset_gens = coset_gens(num_points_to_open, num_cosets, BIT_REVERSED);
5862

5963
let coset_size = num_points_to_open / num_cosets;
6064
assert!(
61-
opening_key.g2s.len() >= coset_size,
65+
verification_key.g2s.len() >= coset_size,
6266
"need as many g2 points as coset size"
6367
);
64-
let coset_domain = polynomial::domain::Domain::new(opening_key.coset_size);
68+
let coset_domain = polynomial::domain::Domain::new(verification_key.coset_size);
6569

66-
let n = opening_key.coset_size;
70+
let n = verification_key.coset_size;
6771
// [s^n]_2
68-
let s_pow_n = G2Prepared::from(G2Point::from(opening_key.g2s[n]));
72+
let s_pow_n = G2Prepared::from(G2Point::from(verification_key.g2s[n]));
6973
// [-1]_2
70-
let neg_g2_gen = G2Prepared::from(-opening_key.g2_gen());
74+
let neg_g2_gen = G2Prepared::from(-verification_key.g2_gen());
7175

7276
let coset_gens_pow_n = coset_gens
7377
.iter()
@@ -84,7 +88,7 @@ impl FK20Verifier {
8488
.collect();
8589

8690
Self {
87-
opening_key,
91+
verification_key,
8892
coset_gens_bit_reversed: coset_gens,
8993
coset_domain,
9094
s_pow_n,
@@ -146,7 +150,7 @@ impl FK20Verifier {
146150
// We compute one challenge `r` using fiat-shamir and the rest are powers of `r`
147151
// This is safe because of the Schwartz-Zippel Lemma.
148152
let r = compute_fiat_shamir_challenge(
149-
&self.opening_key,
153+
&self.verification_key,
150154
deduplicated_commitments,
151155
commitment_indices,
152156
bit_reversed_coset_indices,
@@ -215,8 +219,9 @@ impl FK20Verifier {
215219
random_sum_interpolation_poly =
216220
poly_add(random_sum_interpolation_poly, scaled_interpolation_poly);
217221
}
218-
let comm_random_sum_interpolation_poly =
219-
self.opening_key.commit_g1(&random_sum_interpolation_poly);
222+
let comm_random_sum_interpolation_poly = self
223+
.verification_key
224+
.commit_g1(&random_sum_interpolation_poly);
220225

221226
let mut weighted_r_powers = Vec::with_capacity(batch_size);
222227
for (coset_index, r_power) in bit_reversed_coset_indices.iter().zip(r_powers) {
@@ -255,7 +260,7 @@ impl FK20Verifier {
255260
/// The matching function in the spec is: https://github.com/ethereum/consensus-specs/blob/13ac373a2c284dc66b48ddd2ef0a10537e4e0de6/specs/_features/eip7594/polynomial-commitments-sampling.md#compute_verify_cell_kzg_proof_batch_challenge
256261
#[allow(clippy::manual_slice_size_calculation)]
257262
fn compute_fiat_shamir_challenge(
258-
opening_key: &OpeningKey,
263+
verification_key: &VerificationKey,
259264
row_commitments: &[G1Point],
260265
row_indices: &[u64],
261266
coset_indices: &[u64],
@@ -271,14 +276,14 @@ fn compute_fiat_shamir_challenge(
271276
+ row_commitments.len() * G1Point::compressed_size()
272277
+ row_indices.len() * size_of::<u64>()
273278
+ coset_indices.len() * size_of::<u64>()
274-
+ coset_evals.len() * opening_key.coset_size * size_of::<Scalar>()
279+
+ coset_evals.len() * verification_key.coset_size * size_of::<Scalar>()
275280
+ proofs.len() * G1Point::compressed_size();
276281

277282
let mut hash_input: Vec<u8> = Vec::with_capacity(hash_input_size);
278283

279284
hash_input.extend(DOMAIN_SEP.as_bytes());
280-
hash_input.extend((opening_key.num_coefficients_in_polynomial as u64).to_be_bytes());
281-
hash_input.extend((opening_key.coset_size as u64).to_be_bytes());
285+
hash_input.extend((verification_key.num_coefficients_in_polynomial as u64).to_be_bytes());
286+
hash_input.extend((verification_key.coset_size as u64).to_be_bytes());
282287

283288
let num_commitments = row_commitments.len() as u64;
284289
hash_input.extend(num_commitments.to_be_bytes());

cryptography/kzg_multi_open/src/lib.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
pub mod commit_key;
22
mod fk20;
3-
pub mod opening_key;
3+
pub mod verification_key;
44

55
pub use fk20::{
66
recover_evaluations_in_domain_order, CommitmentIndex, CosetIndex, Prover, ProverInput,
@@ -11,11 +11,11 @@ pub use fk20::{
1111
mod naive;
1212

1313
#[cfg(test)]
14-
pub(crate) fn create_insecure_commit_opening_keys(
15-
) -> (commit_key::CommitKey, opening_key::OpeningKey) {
14+
pub(crate) fn create_insecure_commit_verification_keys(
15+
) -> (commit_key::CommitKey, verification_key::VerificationKey) {
1616
use bls12_381::{g1_batch_normalize, g2_batch_normalize, G1Projective, G2Projective, Scalar};
1717
use commit_key::CommitKey;
18-
use opening_key::OpeningKey;
18+
use verification_key::VerificationKey;
1919

2020
// A single proof will attest to the opening of 64 points.
2121
let multi_opening_size = 64;
@@ -42,15 +42,15 @@ pub(crate) fn create_insecure_commit_opening_keys(
4242
let secret = -Scalar::ONE;
4343
let mut current_secret_pow = Scalar::ONE;
4444
let g2_gen = G2Projective::generator();
45-
// The setup needs 65 g1 elements for the opening key, in order
45+
// The setup needs 65 g1 elements for the verification key, in order
4646
// to commit to the remainder polynomial.
4747
for _ in 0..multi_opening_size + 1 {
4848
g2_points.push(g2_gen * current_secret_pow);
4949
current_secret_pow *= secret;
5050
}
5151
let g2_points = g2_batch_normalize(&g2_points);
5252

53-
let vk = OpeningKey::new(
53+
let vk = VerificationKey::new(
5454
g1_points[0..multi_opening_size + 1].to_vec(),
5555
g2_points,
5656
multi_opening_size,

cryptography/kzg_multi_open/src/naive.rs

+15-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{commit_key::CommitKey, opening_key::OpeningKey};
1+
use crate::{commit_key::CommitKey, verification_key::VerificationKey};
22
use bls12_381::{ff::Field, multi_pairings, G1Point, G1Projective, G2Point, G2Prepared, Scalar};
33
use polynomial::poly_coeff::{
44
lagrange_interpolate, poly_eval, poly_sub, vanishing_poly, PolyCoeff,
@@ -37,13 +37,13 @@ pub(crate) fn compute_multi_opening(
3737
/// Naively Verifies a multi-point opening proof.
3838
pub(crate) fn verify_multi_opening(
3939
quotient_commitment: G1Point,
40-
opening_key: &OpeningKey,
40+
verification_key: &VerificationKey,
4141
commitment: G1Point,
4242
input_points: &[Scalar],
4343
output_points: &[Scalar],
4444
) -> bool {
4545
_verify_multi_opening_naive(
46-
opening_key,
46+
verification_key,
4747
commitment,
4848
quotient_commitment,
4949
input_points,
@@ -135,7 +135,7 @@ fn _compute_multi_opening_naive(
135135
/// holds by using the following pairing equation:
136136
/// e([Q(X)]_1, [Z(X)]_2) == e([f(X)]_1 - [I(X)]_1, [1]_2)
137137
fn _verify_multi_opening_naive(
138-
opening_key: &OpeningKey,
138+
verification_key: &VerificationKey,
139139
commitment: G1Point,
140140
proof: G1Point,
141141
input_points: &[Scalar],
@@ -149,30 +149,33 @@ fn _verify_multi_opening_naive(
149149
let r_x = lagrange_interpolate(&coordinates).unwrap();
150150

151151
let vanishing_poly = vanishing_poly(input_points);
152-
let comm_vanishing_poly: G2Point = opening_key.commit_g2(&vanishing_poly).into();
152+
let comm_vanishing_poly: G2Point = verification_key.commit_g2(&vanishing_poly).into();
153153

154-
let comm_r_x = opening_key.commit_g1(&r_x);
154+
let comm_r_x = verification_key.commit_g1(&r_x);
155155
let comm_minus_r_x: G1Point = (G1Projective::from(commitment) - comm_r_x).into();
156156
multi_pairings(&[
157157
(&proof, &G2Prepared::from(comm_vanishing_poly)),
158-
(&comm_minus_r_x, &G2Prepared::from(-opening_key.g2_gen())),
158+
(
159+
&comm_minus_r_x,
160+
&G2Prepared::from(-verification_key.g2_gen()),
161+
),
159162
])
160163
}
161164

162165
#[cfg(test)]
163166
mod tests {
164167
use bls12_381::Scalar;
165168

166-
use crate::create_insecure_commit_opening_keys;
169+
use crate::create_insecure_commit_verification_keys;
167170

168171
#[test]
169172
fn smoke_test_naive_multi_opening() {
170-
let (ck, opening_key) = create_insecure_commit_opening_keys();
173+
let (ck, verification_key) = create_insecure_commit_verification_keys();
171174

172175
let num_points_to_open = 16;
173176
let input_points: Vec<_> = (0..num_points_to_open).map(|i| Scalar::from(i)).collect();
174177

175-
let polynomial: Vec<_> = (0..opening_key.num_coefficients_in_polynomial)
178+
let polynomial: Vec<_> = (0..verification_key.num_coefficients_in_polynomial)
176179
.map(|i| -Scalar::from(i as u64))
177180
.collect();
178181
let commitment = ck.commit_g1(&polynomial).into();
@@ -181,7 +184,7 @@ mod tests {
181184
super::compute_multi_opening(&ck, &polynomial, &input_points);
182185
let proof_valid = super::verify_multi_opening(
183186
quotient_commitment,
184-
&opening_key,
187+
&verification_key,
185188
commitment,
186189
&input_points,
187190
&output_points,
@@ -194,7 +197,7 @@ mod tests {
194197
.collect();
195198
let proof_valid = super::verify_multi_opening(
196199
quotient_commitment,
197-
&opening_key,
200+
&verification_key,
198201
commitment,
199202
&input_points,
200203
&output_points,

cryptography/kzg_multi_open/src/opening_key.rs cryptography/kzg_multi_open/src/verification_key.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ use bls12_381::{
33
G1Point, G1Projective, G2Point, G2Projective, Scalar,
44
};
55

6-
/// Opening Key is used to verify opening proofs made about a committed polynomial.
6+
/// Verification Key is used to verify opening proofs made about a committed polynomial.
77
#[derive(Clone, Debug)]
8-
pub struct OpeningKey {
8+
pub struct VerificationKey {
99
/// The powers of tau G1 used in the setup
1010
///
1111
/// ie group elements of the form `{ \tau^i G }`
@@ -32,7 +32,7 @@ pub struct OpeningKey {
3232
pub num_coefficients_in_polynomial: usize,
3333
}
3434

35-
impl OpeningKey {
35+
impl VerificationKey {
3636
pub fn new(
3737
g1s: Vec<G1Point>,
3838
g2s: Vec<G2Point>,

0 commit comments

Comments
 (0)