Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
r1cs_ppzksnark_verifier_gadget.hpp
Go to the documentation of this file.
1 
21 #ifndef R1CS_PPZKSNARK_VERIFIER_GADGET_HPP_
22 #define R1CS_PPZKSNARK_VERIFIER_GADGET_HPP_
23 
30 
31 namespace libsnark
32 {
33 
34 template<typename ppT>
35 class r1cs_ppzksnark_proof_variable : public gadget<libff::Fr<ppT>>
36 {
37 public:
38  typedef libff::Fr<ppT> FieldT;
39 
40  std::shared_ptr<G1_variable<ppT>> g_A_g;
41  std::shared_ptr<G1_variable<ppT>> g_A_h;
42  std::shared_ptr<G2_variable<ppT>> g_B_g;
43  std::shared_ptr<G1_variable<ppT>> g_B_h;
44  std::shared_ptr<G1_variable<ppT>> g_C_g;
45  std::shared_ptr<G1_variable<ppT>> g_C_h;
46  std::shared_ptr<G1_variable<ppT>> g_H;
47  std::shared_ptr<G1_variable<ppT>> g_K;
48 
49  std::vector<std::shared_ptr<G1_variable<ppT>>> all_G1_vars;
50  std::vector<std::shared_ptr<G2_variable<ppT>>> all_G2_vars;
51 
52  std::vector<std::shared_ptr<G1_checker_gadget<ppT>>> all_G1_checkers;
53  std::shared_ptr<G2_checker_gadget<ppT>> G2_checker;
54 
56 
58  protoboard<FieldT> &pb, const std::string &annotation_prefix);
62  static size_t size();
63 };
64 
65 template<typename ppT>
66 class r1cs_ppzksnark_verification_key_variable : public gadget<libff::Fr<ppT>>
67 {
68 public:
69  typedef libff::Fr<ppT> FieldT;
70 
71  std::shared_ptr<G2_variable<ppT>> alphaA_g2;
72  std::shared_ptr<G1_variable<ppT>> alphaB_g1;
73  std::shared_ptr<G2_variable<ppT>> alphaC_g2;
74  std::shared_ptr<G2_variable<ppT>> gamma_g2;
75  std::shared_ptr<G1_variable<ppT>> gamma_beta_g1;
76  std::shared_ptr<G2_variable<ppT>> gamma_beta_g2;
77  std::shared_ptr<G2_variable<ppT>> rC_Z_g2;
78  std::shared_ptr<G1_variable<ppT>> encoded_IC_base;
79  std::vector<std::shared_ptr<G1_variable<ppT>>> encoded_IC_query;
80 
82  size_t input_size;
83 
84  std::vector<std::shared_ptr<G1_variable<ppT>>> all_G1_vars;
85  std::vector<std::shared_ptr<G2_variable<ppT>>> all_G2_vars;
86 
87  // Unfortunately, g++ 4.9 and g++ 5.0 have a bug related to
88  // incorrect inlining of small functions:
89  // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65307, which
90  // produces wrong assembly even at -O1. The test case at the bug
91  // report is directly derived from this code here. As a temporary
92  // work-around we mark the key functions noinline to hint compiler
93  // that inlining should not be performed.
94 
95  // TODO: remove later, when g++ developers fix the bug.
96 
99  const size_t input_size,
100  const std::string &annotation_prefix);
104 
105  size_t num_primary_inputs() const;
107  static std::vector<FieldT> get_verification_key_scalars(
109 };
110 
111 template<typename ppT>
113 {
114 public:
115  typedef libff::Fr<ppT> FieldT;
116 
117  std::shared_ptr<G1_variable<ppT>> encoded_IC_base;
118  std::vector<std::shared_ptr<G1_variable<ppT>>> encoded_IC_query;
119 
120  std::shared_ptr<G1_precomputation<ppT>> vk_alphaB_g1_precomp;
121  std::shared_ptr<G1_precomputation<ppT>> vk_gamma_beta_g1_precomp;
122 
123  std::shared_ptr<G2_precomputation<ppT>> pp_G2_one_precomp;
124  std::shared_ptr<G2_precomputation<ppT>> vk_alphaA_g2_precomp;
125  std::shared_ptr<G2_precomputation<ppT>> vk_alphaC_g2_precomp;
126  std::shared_ptr<G2_precomputation<ppT>> vk_gamma_beta_g2_precomp;
127  std::shared_ptr<G2_precomputation<ppT>> vk_gamma_g2_precomp;
128  std::shared_ptr<G2_precomputation<ppT>> vk_rC_Z_g2_precomp;
129 
132  protoboard<FieldT> &pb,
134  const std::string &annotation_prefix);
135 };
136 
137 template<typename ppT>
138 class r1cs_ppzksnark_verifier_process_vk_gadget : public gadget<libff::Fr<ppT>>
139 {
140 public:
141  typedef libff::Fr<ppT> FieldT;
142 
143  std::shared_ptr<precompute_G1_gadget<ppT>> compute_vk_alphaB_g1_precomp;
144  std::shared_ptr<precompute_G1_gadget<ppT>> compute_vk_gamma_beta_g1_precomp;
145 
146  std::shared_ptr<precompute_G2_gadget<ppT>> compute_vk_alphaA_g2_precomp;
147  std::shared_ptr<precompute_G2_gadget<ppT>> compute_vk_alphaC_g2_precomp;
148  std::shared_ptr<precompute_G2_gadget<ppT>> compute_vk_gamma_beta_g2_precomp;
149  std::shared_ptr<precompute_G2_gadget<ppT>> compute_vk_gamma_g2_precomp;
150  std::shared_ptr<precompute_G2_gadget<ppT>> compute_vk_rC_Z_g2_precomp;
151 
153  // important to have a reference here
155  &pvk;
156 
161  ppT> &pvk,
162  const std::string &annotation_prefix);
164  void generate_r1cs_witness();
165 };
166 
167 template<typename ppT>
168 class r1cs_ppzksnark_online_verifier_gadget : public gadget<libff::Fr<ppT>>
169 {
170 public:
171  typedef libff::Fr<ppT> FieldT;
172 
175 
177  size_t elt_size;
180  const size_t input_len;
181 
182  std::shared_ptr<G1_variable<ppT>> acc;
183  std::shared_ptr<G1_multiscalar_mul_gadget<ppT>> accumulate_input;
184 
185  std::shared_ptr<G1_variable<ppT>> proof_g_A_g_acc;
186  std::shared_ptr<G1_add_gadget<ppT>> compute_proof_g_A_g_acc;
187  std::shared_ptr<G1_variable<ppT>> proof_g_A_g_acc_C;
188  std::shared_ptr<G1_add_gadget<ppT>> compute_proof_g_A_g_acc_C;
189 
190  std::shared_ptr<G1_precomputation<ppT>> proof_g_A_h_precomp;
191  std::shared_ptr<G1_precomputation<ppT>> proof_g_A_g_acc_C_precomp;
192  std::shared_ptr<G1_precomputation<ppT>> proof_g_A_g_acc_precomp;
193  std::shared_ptr<G1_precomputation<ppT>> proof_g_A_g_precomp;
194  std::shared_ptr<G1_precomputation<ppT>> proof_g_B_h_precomp;
195  std::shared_ptr<G1_precomputation<ppT>> proof_g_C_h_precomp;
196  std::shared_ptr<G1_precomputation<ppT>> proof_g_C_g_precomp;
197  std::shared_ptr<G1_precomputation<ppT>> proof_g_K_precomp;
198  std::shared_ptr<G1_precomputation<ppT>> proof_g_H_precomp;
199 
200  std::shared_ptr<G2_precomputation<ppT>> proof_g_B_g_precomp;
201 
202  std::shared_ptr<precompute_G1_gadget<ppT>> compute_proof_g_A_h_precomp;
203  std::shared_ptr<precompute_G1_gadget<ppT>>
205  std::shared_ptr<precompute_G1_gadget<ppT>> compute_proof_g_A_g_acc_precomp;
206  std::shared_ptr<precompute_G1_gadget<ppT>> compute_proof_g_A_g_precomp;
207  std::shared_ptr<precompute_G1_gadget<ppT>> compute_proof_g_B_h_precomp;
208  std::shared_ptr<precompute_G1_gadget<ppT>> compute_proof_g_C_h_precomp;
209  std::shared_ptr<precompute_G1_gadget<ppT>> compute_proof_g_C_g_precomp;
210  std::shared_ptr<precompute_G1_gadget<ppT>> compute_proof_g_K_precomp;
211  std::shared_ptr<precompute_G1_gadget<ppT>> compute_proof_g_H_precomp;
212 
213  std::shared_ptr<precompute_G2_gadget<ppT>> compute_proof_g_B_g_precomp;
214 
215  std::shared_ptr<check_e_equals_e_gadget<ppT>> check_kc_A_valid;
216  std::shared_ptr<check_e_equals_e_gadget<ppT>> check_kc_B_valid;
217  std::shared_ptr<check_e_equals_e_gadget<ppT>> check_kc_C_valid;
218  std::shared_ptr<check_e_equals_ee_gadget<ppT>> check_QAP_valid;
219  std::shared_ptr<check_e_equals_ee_gadget<ppT>> check_CC_valid;
220 
226 
228  std::shared_ptr<conjunction_gadget<FieldT>> all_tests_pass;
229 
233  ppT> &pvk,
235  const size_t elt_size,
238  const std::string &annotation_prefix);
240  void generate_r1cs_witness();
241 };
242 
243 template<typename ppT>
244 class r1cs_ppzksnark_verifier_gadget : public gadget<libff::Fr<ppT>>
245 {
246 public:
247  typedef libff::Fr<ppT> FieldT;
248 
249  std::shared_ptr<
251  ppT>>
253  std::shared_ptr<r1cs_ppzksnark_verifier_process_vk_gadget<ppT>> compute_pvk;
254  std::shared_ptr<r1cs_ppzksnark_online_verifier_gadget<ppT>> online_verifier;
255 
259  const pb_variable_array<FieldT> &input,
260  const size_t elt_size,
262  const pb_variable<FieldT> &result,
263  const std::string &annotation_prefix);
264 
266  void generate_r1cs_witness();
267 };
268 
269 } // namespace libsnark
270 
272 
273 #endif // R1CS_PPZKSNARK_VERIFIER_GADGET_HPP_
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::FieldT
libff::Fr< ppT > FieldT
Definition: r1cs_ppzksnark_verifier_gadget.hpp:141
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::vk_gamma_g2_precomp
std::shared_ptr< G2_precomputation< ppT > > vk_gamma_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:127
libsnark::r1cs_ppzksnark_verifier_gadget::r1cs_ppzksnark_verifier_gadget
r1cs_ppzksnark_verifier_gadget(protoboard< FieldT > &pb, const r1cs_ppzksnark_verification_key_variable< ppT > &vk, const pb_variable_array< FieldT > &input, const size_t elt_size, const r1cs_ppzksnark_proof_variable< ppT > &proof, const pb_variable< FieldT > &result, const std::string &annotation_prefix)
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_A_g_acc_C
std::shared_ptr< G1_variable< ppT > > proof_g_A_g_acc_C
Definition: r1cs_ppzksnark_verifier_gadget.hpp:187
libsnark::r1cs_ppzksnark_verification_key_variable::gamma_beta_g1
std::shared_ptr< G1_variable< ppT > > gamma_beta_g1
Definition: r1cs_ppzksnark_verifier_gadget.hpp:75
libsnark::r1cs_ppzksnark_online_verifier_gadget::r1cs_ppzksnark_online_verifier_gadget
r1cs_ppzksnark_online_verifier_gadget(protoboard< FieldT > &pb, const r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable< ppT > &pvk, const pb_variable_array< FieldT > &input, const size_t elt_size, const r1cs_ppzksnark_proof_variable< ppT > &proof, const pb_variable< FieldT > &result, const std::string &annotation_prefix)
libsnark::r1cs_ppzksnark_proof_variable::all_G2_vars
std::vector< std::shared_ptr< G2_variable< ppT > > > all_G2_vars
Definition: r1cs_ppzksnark_verifier_gadget.hpp:50
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::compute_vk_alphaC_g2_precomp
std::shared_ptr< precompute_G2_gadget< ppT > > compute_vk_alphaC_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:147
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable
Definition: r1cs_ppzksnark_verifier_gadget.hpp:112
libsnark::r1cs_ppzksnark_online_verifier_gadget::check_kc_A_valid
std::shared_ptr< check_e_equals_e_gadget< ppT > > check_kc_A_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:215
libsnark::r1cs_ppzksnark_verification_key_variable::generate_r1cs_witness
void generate_r1cs_witness(const r1cs_ppzksnark_verification_key< other_curve< ppT >> &vk)
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_A_g_acc_C_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_A_g_acc_C_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:204
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_A_g_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_A_g_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:193
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_A_g_acc_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_A_g_acc_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:192
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::vk_gamma_beta_g1_precomp
std::shared_ptr< G1_precomputation< ppT > > vk_gamma_beta_g1_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:121
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_A_g_acc_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_A_g_acc_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:205
libsnark::gadget< libff::Fr< ppT > >::annotation_prefix
const std::string annotation_prefix
Definition: gadget.hpp:20
libsnark::r1cs_ppzksnark_verification_key_variable::alphaA_g2
std::shared_ptr< G2_variable< ppT > > alphaA_g2
Definition: r1cs_ppzksnark_verifier_gadget.hpp:71
libsnark
Definition: accumulation_vector.hpp:18
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_K_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_K_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:210
libsnark::r1cs_ppzksnark_verifier_gadget::FieldT
libff::Fr< ppT > FieldT
Definition: r1cs_ppzksnark_verifier_gadget.hpp:247
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_A_g_acc
std::shared_ptr< G1_add_gadget< ppT > > compute_proof_g_A_g_acc
Definition: r1cs_ppzksnark_verifier_gadget.hpp:186
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_A_g_acc
std::shared_ptr< G1_variable< ppT > > proof_g_A_g_acc
Definition: r1cs_ppzksnark_verifier_gadget.hpp:185
libsnark::r1cs_ppzksnark_verification_key_variable::alphaB_g1
std::shared_ptr< G1_variable< ppT > > alphaB_g1
Definition: r1cs_ppzksnark_verifier_gadget.hpp:72
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::vk_rC_Z_g2_precomp
std::shared_ptr< G2_precomputation< ppT > > vk_rC_Z_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:128
libsnark::r1cs_ppzksnark_online_verifier_gadget::check_QAP_valid
std::shared_ptr< check_e_equals_ee_gadget< ppT > > check_QAP_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:218
libsnark::gadget< libff::Fr< ppT > >::pb
protoboard< libff::Fr< ppT > > & pb
Definition: gadget.hpp:19
libsnark::r1cs_ppzksnark_online_verifier_gadget::all_test_results
pb_variable_array< FieldT > all_test_results
Definition: r1cs_ppzksnark_verifier_gadget.hpp:227
libsnark::r1cs_ppzksnark_online_verifier_gadget::elt_size
size_t elt_size
Definition: r1cs_ppzksnark_verifier_gadget.hpp:177
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::vk_gamma_beta_g2_precomp
std::shared_ptr< G2_precomputation< ppT > > vk_gamma_beta_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:126
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_B_g_precomp
std::shared_ptr< precompute_G2_gadget< ppT > > compute_proof_g_B_g_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:213
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_A_h_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_A_h_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:190
libsnark::r1cs_ppzksnark_proof_variable::g_A_g
std::shared_ptr< G1_variable< ppT > > g_A_g
Definition: r1cs_ppzksnark_verifier_gadget.hpp:40
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_B_h_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_B_h_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:207
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_C_h_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_C_h_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:208
libsnark::r1cs_ppzksnark_verification_key_variable::__attribute__
__attribute__((noinline)) r1cs_ppzksnark_verification_key_variable(protoboard< FieldT > &pb
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof
r1cs_ppzksnark_proof_variable< ppT > proof
Definition: r1cs_ppzksnark_verifier_gadget.hpp:178
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::r1cs_ppzksnark_online_verifier_gadget::input_len
const size_t input_len
Definition: r1cs_ppzksnark_verifier_gadget.hpp:180
libsnark::r1cs_ppzksnark_proof_variable::g_H
std::shared_ptr< G1_variable< ppT > > g_H
Definition: r1cs_ppzksnark_verifier_gadget.hpp:46
libsnark::r1cs_ppzksnark_online_verifier_gadget::accumulate_input
std::shared_ptr< G1_multiscalar_mul_gadget< ppT > > accumulate_input
Definition: r1cs_ppzksnark_verifier_gadget.hpp:183
libsnark::r1cs_ppzksnark_verifier_gadget
Definition: r1cs_ppzksnark_verifier_gadget.hpp:244
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_B_g_precomp
std::shared_ptr< G2_precomputation< ppT > > proof_g_B_g_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:200
libsnark::r1cs_ppzksnark_proof_variable::g_K
std::shared_ptr< G1_variable< ppT > > g_K
Definition: r1cs_ppzksnark_verifier_gadget.hpp:47
libsnark::r1cs_ppzksnark_verification_key_variable::all_G2_vars
std::vector< std::shared_ptr< G2_variable< ppT > > > all_G2_vars
Definition: r1cs_ppzksnark_verifier_gadget.hpp:85
libsnark::gadget
Definition: gadget.hpp:16
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_A_g_acc_C
std::shared_ptr< G1_add_gadget< ppT > > compute_proof_g_A_g_acc_C
Definition: r1cs_ppzksnark_verifier_gadget.hpp:188
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_B_h_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_B_h_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:194
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::r1cs_ppzksnark_verifier_process_vk_gadget
r1cs_ppzksnark_verifier_process_vk_gadget(protoboard< FieldT > &pb, const r1cs_ppzksnark_verification_key_variable< ppT > &vk, r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable< ppT > &pvk, const std::string &annotation_prefix)
libsnark::r1cs_ppzksnark_verification_key_variable::num_primary_inputs
size_t num_primary_inputs() const
libsnark::r1cs_ppzksnark_proof_variable::g_B_g
std::shared_ptr< G2_variable< ppT > > g_B_g
Definition: r1cs_ppzksnark_verifier_gadget.hpp:42
libsnark::r1cs_ppzksnark_verification_key_variable::get_all_vars
const pb_linear_combination_array< FieldT > & get_all_vars() const
libsnark::r1cs_ppzksnark_verification_key_variable::encoded_IC_base
std::shared_ptr< G1_variable< ppT > > encoded_IC_base
Definition: r1cs_ppzksnark_verifier_gadget.hpp:78
libsnark::r1cs_ppzksnark_proof
Definition: r1cs_ppzksnark.hpp:298
libsnark::r1cs_ppzksnark_online_verifier_gadget::all_tests_pass
std::shared_ptr< conjunction_gadget< FieldT > > all_tests_pass
Definition: r1cs_ppzksnark_verifier_gadget.hpp:228
libsnark::r1cs_ppzksnark_verification_key
Definition: r1cs_ppzksnark.hpp:152
libsnark::r1cs_ppzksnark_proof_variable::g_A_h
std::shared_ptr< G1_variable< ppT > > g_A_h
Definition: r1cs_ppzksnark_verifier_gadget.hpp:41
libsnark::r1cs_ppzksnark_online_verifier_gadget::check_CC_valid
std::shared_ptr< check_e_equals_ee_gadget< ppT > > check_CC_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:219
libsnark::r1cs_ppzksnark_online_verifier_gadget::kc_A_valid
pb_variable< FieldT > kc_A_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:221
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::encoded_IC_base
std::shared_ptr< G1_variable< ppT > > encoded_IC_base
Definition: r1cs_ppzksnark_verifier_gadget.hpp:117
libsnark::r1cs_ppzksnark_verification_key_variable::get_verification_key_scalars
static std::vector< FieldT > get_verification_key_scalars(const r1cs_ppzksnark_verification_key< other_curve< ppT >> &r1cs_vk)
libsnark::r1cs_ppzksnark_proof_variable::size
static size_t size()
libsnark::r1cs_ppzksnark_verification_key_variable::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::r1cs_ppzksnark_online_verifier_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::r1cs_ppzksnark_proof_variable::g_C_h
std::shared_ptr< G1_variable< ppT > > g_C_h
Definition: r1cs_ppzksnark_verifier_gadget.hpp:45
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::vk_alphaA_g2_precomp
std::shared_ptr< G2_precomputation< ppT > > vk_alphaA_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:124
r1cs_ppzksnark.hpp
libsnark::r1cs_ppzksnark_verification_key_variable::all_G1_vars
std::vector< std::shared_ptr< G1_variable< ppT > > > all_G1_vars
Definition: r1cs_ppzksnark_verifier_gadget.hpp:84
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::vk_alphaC_g2_precomp
std::shared_ptr< G2_precomputation< ppT > > vk_alphaC_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:125
libsnark::r1cs_ppzksnark_proof_variable::all_G1_vars
std::vector< std::shared_ptr< G1_variable< ppT > > > all_G1_vars
Definition: r1cs_ppzksnark_verifier_gadget.hpp:49
libsnark::pb_linear_combination_array
Definition: pb_variable.hpp:118
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget
Definition: r1cs_ppzksnark_verifier_gadget.hpp:138
libsnark::r1cs_ppzksnark_online_verifier_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::r1cs_ppzksnark_proof_variable::FieldT
libff::Fr< ppT > FieldT
Definition: r1cs_ppzksnark_verifier_gadget.hpp:38
libsnark::r1cs_ppzksnark_verifier_gadget::compute_pvk
std::shared_ptr< r1cs_ppzksnark_verifier_process_vk_gadget< ppT > > compute_pvk
Definition: r1cs_ppzksnark_verifier_gadget.hpp:253
libsnark::r1cs_ppzksnark_verifier_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::FieldT
libff::Fr< ppT > FieldT
Definition: r1cs_ppzksnark_verifier_gadget.hpp:115
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_C_h_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_C_h_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:195
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::pp_G2_one_precomp
std::shared_ptr< G2_precomputation< ppT > > pp_G2_one_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:123
libsnark::r1cs_ppzksnark_proof_variable::g_C_g
std::shared_ptr< G1_variable< ppT > > g_C_g
Definition: r1cs_ppzksnark_verifier_gadget.hpp:44
libsnark::r1cs_ppzksnark_online_verifier_gadget::result
pb_variable< FieldT > result
Definition: r1cs_ppzksnark_verifier_gadget.hpp:179
libsnark::r1cs_ppzksnark_online_verifier_gadget::FieldT
libff::Fr< ppT > FieldT
Definition: r1cs_ppzksnark_verifier_gadget.hpp:171
libsnark::r1cs_ppzksnark_online_verifier_gadget
Definition: r1cs_ppzksnark_verifier_gadget.hpp:168
weierstrass_g2_gadget.hpp
pairing_params.hpp
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_C_g_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_C_g_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:196
libsnark::r1cs_ppzksnark_proof_variable
Definition: r1cs_ppzksnark_verifier_gadget.hpp:35
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::encoded_IC_query
std::vector< std::shared_ptr< G1_variable< ppT > > > encoded_IC_query
Definition: r1cs_ppzksnark_verifier_gadget.hpp:118
libsnark::r1cs_ppzksnark_verifier_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::r1cs_ppzksnark_verification_key_variable::alphaC_g2
std::shared_ptr< G2_variable< ppT > > alphaC_g2
Definition: r1cs_ppzksnark_verifier_gadget.hpp:73
libsnark::r1cs_ppzksnark_proof_variable::g_B_h
std::shared_ptr< G1_variable< ppT > > g_B_h
Definition: r1cs_ppzksnark_verifier_gadget.hpp:43
libsnark::r1cs_ppzksnark_verification_key_variable::annotation_prefix
const size_t const std::string & annotation_prefix
Definition: r1cs_ppzksnark_verifier_gadget.hpp:100
libsnark::r1cs_ppzksnark_verification_key_variable::gamma_g2
std::shared_ptr< G2_variable< ppT > > gamma_g2
Definition: r1cs_ppzksnark_verifier_gadget.hpp:74
libsnark::r1cs_ppzksnark_verification_key_variable::encoded_IC_query
std::vector< std::shared_ptr< G1_variable< ppT > > > encoded_IC_query
Definition: r1cs_ppzksnark_verifier_gadget.hpp:79
libsnark::pb_variable
Definition: pb_variable.hpp:24
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::compute_vk_alphaA_g2_precomp
std::shared_ptr< precompute_G2_gadget< ppT > > compute_vk_alphaA_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:146
basic_gadgets.hpp
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::vk
r1cs_ppzksnark_verification_key_variable< ppT > vk
Definition: r1cs_ppzksnark_verifier_gadget.hpp:152
libsnark::r1cs_ppzksnark_proof_variable::all_G1_checkers
std::vector< std::shared_ptr< G1_checker_gadget< ppT > > > all_G1_checkers
Definition: r1cs_ppzksnark_verifier_gadget.hpp:52
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_C_g_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_C_g_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:209
libsnark::pb_variable_array
Definition: pb_variable.hpp:44
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::compute_vk_gamma_beta_g1_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_vk_gamma_beta_g1_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:144
libsnark::r1cs_ppzksnark_online_verifier_gadget::pvk
r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable< ppT > pvk
Definition: r1cs_ppzksnark_verifier_gadget.hpp:174
libsnark::r1cs_ppzksnark_proof_variable::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::other_curve
typename pairing_selector< ppT >::other_curve_type other_curve
Definition: pairing_params.hpp:117
libsnark::r1cs_ppzksnark_proof_variable::r1cs_ppzksnark_proof_variable
r1cs_ppzksnark_proof_variable(protoboard< FieldT > &pb, const std::string &annotation_prefix)
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_A_g_acc_C_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_A_g_acc_C_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:191
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::vk_alphaB_g1_precomp
std::shared_ptr< G1_precomputation< ppT > > vk_alphaB_g1_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:120
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::compute_vk_rC_Z_g2_precomp
std::shared_ptr< precompute_G2_gadget< ppT > > compute_vk_rC_Z_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:150
libsnark::r1cs_ppzksnark_verification_key_variable::gamma_beta_g2
std::shared_ptr< G2_variable< ppT > > gamma_beta_g2
Definition: r1cs_ppzksnark_verifier_gadget.hpp:76
libsnark::r1cs_ppzksnark_online_verifier_gadget::kc_C_valid
pb_variable< FieldT > kc_C_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:223
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_H_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_H_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:198
libsnark::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable::r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable
r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable()
libsnark::r1cs_ppzksnark_verification_key_variable::rC_Z_g2
std::shared_ptr< G2_variable< ppT > > rC_Z_g2
Definition: r1cs_ppzksnark_verifier_gadget.hpp:77
pairing_checks.hpp
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::compute_vk_gamma_beta_g2_precomp
std::shared_ptr< precompute_G2_gadget< ppT > > compute_vk_gamma_beta_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:148
libsnark::r1cs_ppzksnark_online_verifier_gadget::QAP_valid
pb_variable< FieldT > QAP_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:224
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::compute_vk_alphaB_g1_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_vk_alphaB_g1_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:143
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_H_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_H_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:211
r1cs_ppzksnark_verifier_gadget.tcc
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_A_h_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_A_h_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:202
libsnark::r1cs_ppzksnark_proof_variable::generate_r1cs_witness
void generate_r1cs_witness(const r1cs_ppzksnark_proof< other_curve< ppT >> &proof)
libsnark::r1cs_ppzksnark_online_verifier_gadget::kc_B_valid
pb_variable< FieldT > kc_B_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:222
libsnark::r1cs_ppzksnark_online_verifier_gadget::check_kc_C_valid
std::shared_ptr< check_e_equals_e_gadget< ppT > > check_kc_C_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:217
libsnark::r1cs_ppzksnark_verifier_gadget::pvk
std::shared_ptr< r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable< ppT > > pvk
Definition: r1cs_ppzksnark_verifier_gadget.hpp:252
libsnark::r1cs_ppzksnark_verification_key_variable::FieldT
libff::Fr< ppT > FieldT
Definition: r1cs_ppzksnark_verifier_gadget.hpp:69
libsnark::r1cs_ppzksnark_proof_variable::proof_contents
pb_variable_array< FieldT > proof_contents
Definition: r1cs_ppzksnark_verifier_gadget.hpp:55
libsnark::r1cs_ppzksnark_verification_key_variable::all_vars
pb_linear_combination_array< FieldT > all_vars
Definition: r1cs_ppzksnark_verifier_gadget.hpp:81
weierstrass_g1_gadget.hpp
libsnark::r1cs_ppzksnark_online_verifier_gadget::check_kc_B_valid
std::shared_ptr< check_e_equals_e_gadget< ppT > > check_kc_B_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:216
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::compute_vk_gamma_g2_precomp
std::shared_ptr< precompute_G2_gadget< ppT > > compute_vk_gamma_g2_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:149
libsnark::r1cs_ppzksnark_verification_key_variable::input_size
size_t input_size
Definition: r1cs_ppzksnark_verifier_gadget.hpp:82
libsnark::r1cs_ppzksnark_online_verifier_gadget::CC_valid
pb_variable< FieldT > CC_valid
Definition: r1cs_ppzksnark_verifier_gadget.hpp:225
libsnark::r1cs_ppzksnark_verifier_gadget::online_verifier
std::shared_ptr< r1cs_ppzksnark_online_verifier_gadget< ppT > > online_verifier
Definition: r1cs_ppzksnark_verifier_gadget.hpp:254
libsnark::r1cs_ppzksnark_proof_variable::G2_checker
std::shared_ptr< G2_checker_gadget< ppT > > G2_checker
Definition: r1cs_ppzksnark_verifier_gadget.hpp:53
libsnark::r1cs_ppzksnark_verification_key_variable
Definition: r1cs_ppzksnark_verifier_gadget.hpp:66
libsnark::r1cs_ppzksnark_online_verifier_gadget::proof_g_K_precomp
std::shared_ptr< G1_precomputation< ppT > > proof_g_K_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:197
libsnark::r1cs_ppzksnark_online_verifier_gadget::compute_proof_g_A_g_precomp
std::shared_ptr< precompute_G1_gadget< ppT > > compute_proof_g_A_g_precomp
Definition: r1cs_ppzksnark_verifier_gadget.hpp:206
libsnark::r1cs_ppzksnark_verifier_process_vk_gadget::pvk
r1cs_ppzksnark_preprocessed_r1cs_ppzksnark_verification_key_variable< ppT > & pvk
Definition: r1cs_ppzksnark_verifier_gadget.hpp:155
libsnark::r1cs_ppzksnark_online_verifier_gadget::input
pb_variable_array< FieldT > input
Definition: r1cs_ppzksnark_verifier_gadget.hpp:176
libsnark::r1cs_ppzksnark_online_verifier_gadget::acc
std::shared_ptr< G1_variable< ppT > > acc
Definition: r1cs_ppzksnark_verifier_gadget.hpp:182
libsnark::protoboard
Definition: pb_variable.hpp:22