@@ -91,18 +91,16 @@ template<typename ppT>
91
91
bool r1cs_gg_ppzksnark_verification_key<ppT>::operator ==(const r1cs_gg_ppzksnark_verification_key<ppT> &other) const
92
92
{
93
93
return (this ->alpha_g1_beta_g2 == other.alpha_g1_beta_g2 &&
94
- this ->gamma_g2 == other.gamma_g2 &&
95
94
this ->delta_g2 == other.delta_g2 &&
96
- this ->gamma_ABC_g1 == other.gamma_ABC_g1 );
95
+ this ->ABC_g1 == other.ABC_g1 );
97
96
}
98
97
99
98
template <typename ppT>
100
99
std::ostream& operator <<(std::ostream &out, const r1cs_gg_ppzksnark_verification_key<ppT> &vk)
101
100
{
102
101
out << vk.alpha_g1_beta_g2 << OUTPUT_NEWLINE;
103
- out << vk.gamma_g2 << OUTPUT_NEWLINE;
104
102
out << vk.delta_g2 << OUTPUT_NEWLINE;
105
- out << vk.gamma_ABC_g1 << OUTPUT_NEWLINE;
103
+ out << vk.ABC_g1 << OUTPUT_NEWLINE;
106
104
107
105
return out;
108
106
}
@@ -112,11 +110,9 @@ std::istream& operator>>(std::istream &in, r1cs_gg_ppzksnark_verification_key<pp
112
110
{
113
111
in >> vk.alpha_g1_beta_g2 ;
114
112
libff::consume_OUTPUT_NEWLINE (in);
115
- in >> vk.gamma_g2 ;
116
- libff::consume_OUTPUT_NEWLINE (in);
117
113
in >> vk.delta_g2 ;
118
114
libff::consume_OUTPUT_NEWLINE (in);
119
- in >> vk.gamma_ABC_g1 ;
115
+ in >> vk.ABC_g1 ;
120
116
libff::consume_OUTPUT_NEWLINE (in);
121
117
122
118
return in;
@@ -126,18 +122,18 @@ template<typename ppT>
126
122
bool r1cs_gg_ppzksnark_processed_verification_key<ppT>::operator ==(const r1cs_gg_ppzksnark_processed_verification_key<ppT> &other) const
127
123
{
128
124
return (this ->vk_alpha_g1_beta_g2 == other.vk_alpha_g1_beta_g2 &&
129
- this ->vk_gamma_g2_precomp == other.vk_gamma_g2_precomp &&
125
+ this ->vk_generator_g2_precomp == other.vk_generator_g2_precomp &&
130
126
this ->vk_delta_g2_precomp == other.vk_delta_g2_precomp &&
131
- this ->gamma_ABC_g1 == other.gamma_ABC_g1 );
127
+ this ->ABC_g1 == other.ABC_g1 );
132
128
}
133
129
134
130
template <typename ppT>
135
131
std::ostream& operator <<(std::ostream &out, const r1cs_gg_ppzksnark_processed_verification_key<ppT> &pvk)
136
132
{
137
133
out << pvk.vk_alpha_g1_beta_g2 << OUTPUT_NEWLINE;
138
- out << pvk.vk_gamma_g2_precomp << OUTPUT_NEWLINE;
134
+ out << pvk.vk_generator_g2_precomp << OUTPUT_NEWLINE;
139
135
out << pvk.vk_delta_g2_precomp << OUTPUT_NEWLINE;
140
- out << pvk.gamma_ABC_g1 << OUTPUT_NEWLINE;
136
+ out << pvk.ABC_g1 << OUTPUT_NEWLINE;
141
137
142
138
return out;
143
139
}
@@ -147,11 +143,11 @@ std::istream& operator>>(std::istream &in, r1cs_gg_ppzksnark_processed_verificat
147
143
{
148
144
in >> pvk.vk_alpha_g1_beta_g2 ;
149
145
libff::consume_OUTPUT_NEWLINE (in);
150
- in >> pvk.vk_gamma_g2_precomp ;
146
+ in >> pvk.vk_generator_g2_precomp ;
151
147
libff::consume_OUTPUT_NEWLINE (in);
152
148
in >> pvk.vk_delta_g2_precomp ;
153
149
libff::consume_OUTPUT_NEWLINE (in);
154
- in >> pvk.gamma_ABC_g1 ;
150
+ in >> pvk.ABC_g1 ;
155
151
libff::consume_OUTPUT_NEWLINE (in);
156
152
157
153
return in;
@@ -193,7 +189,6 @@ r1cs_gg_ppzksnark_verification_key<ppT> r1cs_gg_ppzksnark_verification_key<ppT>:
193
189
{
194
190
r1cs_gg_ppzksnark_verification_key<ppT> result;
195
191
result.alpha_g1_beta_g2 = libff::Fr<ppT>::random_element () * libff::GT<ppT>::random_element ();
196
- result.gamma_g2 = libff::G2<ppT>::random_element ();
197
192
result.delta_g2 = libff::G2<ppT>::random_element ();
198
193
199
194
libff::G1<ppT> base = libff::G1<ppT>::random_element ();
@@ -203,7 +198,7 @@ r1cs_gg_ppzksnark_verification_key<ppT> r1cs_gg_ppzksnark_verification_key<ppT>:
203
198
v.emplace_back (libff::G1<ppT>::random_element ());
204
199
}
205
200
206
- result.gamma_ABC_g1 = accumulation_vector<libff::G1<ppT> >(std::move (base), std::move (v));
201
+ result.ABC_g1 = accumulation_vector<libff::G1<ppT> >(std::move (base), std::move (v));
207
202
208
203
return result;
209
204
}
@@ -221,9 +216,7 @@ r1cs_gg_ppzksnark_keypair<ppT> r1cs_gg_ppzksnark_generator(const r1cs_gg_ppzksna
221
216
const libff::Fr<ppT> t = libff::Fr<ppT>::random_element ();
222
217
const libff::Fr<ppT> alpha = libff::Fr<ppT>::random_element ();
223
218
const libff::Fr<ppT> beta = libff::Fr<ppT>::random_element ();
224
- const libff::Fr<ppT> gamma = libff::Fr<ppT>::random_element ();
225
219
const libff::Fr<ppT> delta = libff::Fr<ppT>::random_element ();
226
- const libff::Fr<ppT> gamma_inverse = gamma.inverse ();
227
220
const libff::Fr<ppT> delta_inverse = delta.inverse ();
228
221
229
222
/* A quadratic arithmetic program evaluated at t. */
@@ -256,17 +249,17 @@ r1cs_gg_ppzksnark_keypair<ppT> r1cs_gg_ppzksnark_generator(const r1cs_gg_ppzksna
256
249
libff::Fr_vector<ppT> Ct = std::move (qap.Ct );
257
250
libff::Fr_vector<ppT> Ht = std::move (qap.Ht );
258
251
259
- /* The gamma inverse product component: (beta*A_i(t) + alpha*B_i(t) + C_i(t)) * gamma^{-1} . */
260
- libff::enter_block (" Compute gamma_ABC for R1CS verification key" );
261
- libff::Fr_vector<ppT> gamma_ABC ;
262
- gamma_ABC .reserve (qap.num_inputs ());
252
+ /* The product component: (beta*A_i(t) + alpha*B_i(t) + C_i(t)). */
253
+ libff::enter_block (" Compute ABC for R1CS verification key" );
254
+ libff::Fr_vector<ppT> ABC ;
255
+ ABC .reserve (qap.num_inputs ());
263
256
264
- const libff::Fr<ppT> gamma_ABC_0 = ( beta * At[0 ] + alpha * Bt[0 ] + Ct[0 ]) * gamma_inverse ;
257
+ const libff::Fr<ppT> ABC_0 = beta * At[0 ] + alpha * Bt[0 ] + Ct[0 ];
265
258
for (size_t i = 1 ; i < qap.num_inputs () + 1 ; ++i)
266
259
{
267
- gamma_ABC .emplace_back (( beta * At[i] + alpha * Bt[i] + Ct[i]) * gamma_inverse );
260
+ ABC .emplace_back (beta * At[i] + alpha * Bt[i] + Ct[i]);
268
261
}
269
- libff::leave_block (" Compute gamma_ABC for R1CS verification key" );
262
+ libff::leave_block (" Compute ABC for R1CS verification key" );
270
263
271
264
/* The delta inverse product component: (beta*A_i(t) + alpha*B_i(t) + C_i(t)) * delta^{-1}. */
272
265
libff::enter_block (" Compute L query for R1CS proving key" );
@@ -353,22 +346,20 @@ r1cs_gg_ppzksnark_keypair<ppT> r1cs_gg_ppzksnark_generator(const r1cs_gg_ppzksna
353
346
354
347
libff::enter_block (" Generate R1CS verification key" );
355
348
libff::GT<ppT> alpha_g1_beta_g2 = ppT::reduced_pairing (alpha_g1, beta_g2);
356
- libff::G2<ppT> gamma_g2 = gamma * G2_gen;
357
349
358
- libff::enter_block (" Encode gamma_ABC for R1CS verification key" );
359
- libff::G1<ppT> gamma_ABC_g1_0 = gamma_ABC_0 * g1_generator;
360
- libff::G1_vector<ppT> gamma_ABC_g1_values = batch_exp (g1_scalar_size, g1_window_size, g1_table, gamma_ABC );
361
- libff::leave_block (" Encode gamma_ABC for R1CS verification key" );
350
+ libff::enter_block (" Encode ABC for R1CS verification key" );
351
+ libff::G1<ppT> ABC_g1_0 = ABC_0 * g1_generator;
352
+ libff::G1_vector<ppT> ABC_g1_values = batch_exp (g1_scalar_size, g1_window_size, g1_table, ABC );
353
+ libff::leave_block (" Encode ABC for R1CS verification key" );
362
354
libff::leave_block (" Generate R1CS verification key" );
363
355
364
356
libff::leave_block (" Call to r1cs_gg_ppzksnark_generator" );
365
357
366
- accumulation_vector<libff::G1<ppT> > gamma_ABC_g1 (std::move (gamma_ABC_g1_0 ), std::move (gamma_ABC_g1_values ));
358
+ accumulation_vector<libff::G1<ppT> > ABC_g1 (std::move (ABC_g1_0 ), std::move (ABC_g1_values ));
367
359
368
360
r1cs_gg_ppzksnark_verification_key<ppT> vk = r1cs_gg_ppzksnark_verification_key<ppT>(alpha_g1_beta_g2,
369
- gamma_g2,
370
361
delta_g2,
371
- gamma_ABC_g1 );
362
+ ABC_g1 );
372
363
373
364
r1cs_gg_ppzksnark_proving_key<ppT> pk = r1cs_gg_ppzksnark_proving_key<ppT>(std::move (alpha_g1),
374
365
std::move (beta_g1),
@@ -511,9 +502,9 @@ r1cs_gg_ppzksnark_processed_verification_key<ppT> r1cs_gg_ppzksnark_verifier_pro
511
502
512
503
r1cs_gg_ppzksnark_processed_verification_key<ppT> pvk;
513
504
pvk.vk_alpha_g1_beta_g2 = vk.alpha_g1_beta_g2 ;
514
- pvk.vk_gamma_g2_precomp = ppT::precompute_G2 (vk. gamma_g2 );
505
+ pvk.vk_generator_g2_precomp = ppT::precompute_G2 (libff::G2<ppT>:: one () );
515
506
pvk.vk_delta_g2_precomp = ppT::precompute_G2 (vk.delta_g2 );
516
- pvk.gamma_ABC_g1 = vk.gamma_ABC_g1 ;
507
+ pvk.ABC_g1 = vk.ABC_g1 ;
517
508
518
509
libff::leave_block (" Call to r1cs_gg_ppzksnark_verifier_process_vk" );
519
510
@@ -526,10 +517,10 @@ bool r1cs_gg_ppzksnark_online_verifier_weak_IC(const r1cs_gg_ppzksnark_processed
526
517
const r1cs_gg_ppzksnark_proof<ppT> &proof)
527
518
{
528
519
libff::enter_block (" Call to r1cs_gg_ppzksnark_online_verifier_weak_IC" );
529
- assert (pvk.gamma_ABC_g1 .domain_size () >= primary_input.size ());
520
+ assert (pvk.ABC_g1 .domain_size () >= primary_input.size ());
530
521
531
522
libff::enter_block (" Accumulate input" );
532
- const accumulation_vector<libff::G1<ppT> > accumulated_IC = pvk.gamma_ABC_g1 .template accumulate_chunk <libff::Fr<ppT> >(primary_input.begin (), primary_input.end (), 0 );
523
+ const accumulation_vector<libff::G1<ppT> > accumulated_IC = pvk.ABC_g1 .template accumulate_chunk <libff::Fr<ppT> >(primary_input.begin (), primary_input.end (), 0 );
533
524
const libff::G1<ppT> &acc = accumulated_IC.first ;
534
525
libff::leave_block (" Accumulate input" );
535
526
@@ -555,7 +546,7 @@ bool r1cs_gg_ppzksnark_online_verifier_weak_IC(const r1cs_gg_ppzksnark_processed
555
546
556
547
const libff::Fqk<ppT> QAP1 = ppT::miller_loop (proof_g_A_precomp, proof_g_B_precomp);
557
548
const libff::Fqk<ppT> QAP2 = ppT::double_miller_loop (
558
- acc_precomp, pvk.vk_gamma_g2_precomp ,
549
+ acc_precomp, pvk.vk_generator_g2_precomp ,
559
550
proof_g_C_precomp, pvk.vk_delta_g2_precomp );
560
551
const libff::GT<ppT> QAP = ppT::final_exponentiation (QAP1 * QAP2.unitary_inverse ());
561
552
@@ -595,9 +586,9 @@ bool r1cs_gg_ppzksnark_online_verifier_strong_IC(const r1cs_gg_ppzksnark_process
595
586
bool result = true ;
596
587
libff::enter_block (" Call to r1cs_gg_ppzksnark_online_verifier_strong_IC" );
597
588
598
- if (pvk.gamma_ABC_g1 .domain_size () != primary_input.size ())
589
+ if (pvk.ABC_g1 .domain_size () != primary_input.size ())
599
590
{
600
- libff::print_indent (); printf (" Input length differs from expected (got %zu, expected %zu).\n " , primary_input.size (), pvk.gamma_ABC_g1 .domain_size ());
591
+ libff::print_indent (); printf (" Input length differs from expected (got %zu, expected %zu).\n " , primary_input.size (), pvk.ABC_g1 .domain_size ());
601
592
result = false ;
602
593
}
603
594
else
@@ -627,13 +618,13 @@ bool r1cs_gg_ppzksnark_affine_verifier_weak_IC(const r1cs_gg_ppzksnark_verificat
627
618
const r1cs_gg_ppzksnark_proof<ppT> &proof)
628
619
{
629
620
libff::enter_block (" Call to r1cs_gg_ppzksnark_affine_verifier_weak_IC" );
630
- assert (vk.gamma_ABC_g1 .domain_size () >= primary_input.size ());
621
+ assert (vk.ABC_g1 .domain_size () >= primary_input.size ());
631
622
632
- libff::affine_ate_G2_precomp<ppT> pvk_vk_gamma_g2_precomp = ppT::affine_ate_precompute_G2 (vk. gamma_g2 );
623
+ libff::affine_ate_G2_precomp<ppT> pvk_vk_generator_g2_precomp = ppT::affine_ate_precompute_G2 (libff::G2<ppT>:: one () );
633
624
libff::affine_ate_G2_precomp<ppT> pvk_vk_delta_g2_precomp = ppT::affine_ate_precompute_G2 (vk.delta_g2 );
634
625
635
626
libff::enter_block (" Accumulate input" );
636
- const accumulation_vector<libff::G1<ppT> > accumulated_IC = vk.gamma_ABC_g1 .template accumulate_chunk <libff::Fr<ppT> >(primary_input.begin (), primary_input.end (), 0 );
627
+ const accumulation_vector<libff::G1<ppT> > accumulated_IC = vk.ABC_g1 .template accumulate_chunk <libff::Fr<ppT> >(primary_input.begin (), primary_input.end (), 0 );
637
628
const libff::G1<ppT> &acc = accumulated_IC.first ;
638
629
libff::leave_block (" Accumulate input" );
639
630
@@ -657,7 +648,7 @@ bool r1cs_gg_ppzksnark_affine_verifier_weak_IC(const r1cs_gg_ppzksnark_verificat
657
648
const libff::affine_ate_G1_precomp<ppT> acc_precomp = ppT::affine_ate_precompute_G1 (acc);
658
649
659
650
const libff::Fqk<ppT> QAP_miller = ppT::affine_ate_e_times_e_over_e_miller_loop (
660
- acc_precomp, pvk_vk_gamma_g2_precomp ,
651
+ acc_precomp, pvk_vk_generator_g2_precomp ,
661
652
proof_g_C_precomp, pvk_vk_delta_g2_precomp,
662
653
proof_g_A_precomp, proof_g_B_precomp);
663
654
const libff::GT<ppT> QAP = ppT::final_exponentiation (QAP_miller.unitary_inverse ());
0 commit comments