2929#ifndef CRYPTO3_BLUEPRINT_COMPONENTS_PLONK_BLS12_G2_POINT_ADDITION_HPP
3030#define CRYPTO3_BLUEPRINT_COMPONENTS_PLONK_BLS12_G2_POINT_ADDITION_HPP
3131
32+ #include < functional>
33+
3234#include < nil/crypto3/zk/snark/arithmetization/plonk/constraint_system.hpp>
3335
3436#include < nil/blueprint/blueprint/plonk/assignment.hpp>
@@ -58,16 +60,15 @@ namespace nil {
5860 // +--+--+--+--+--+--+---+---+--+--+--+--+
5961 //
6062
61- template <typename ArithmetizationType, typename BlueprintFieldType >
63+ template <typename ArithmetizationType>
6264 class bls12_g2_point_addition ;
6365
64- template <typename BlueprintFieldType, typename ArithmetizationParams>
65- class bls12_g2_point_addition <crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams>,
66- BlueprintFieldType>
67- : public plonk_component<BlueprintFieldType, ArithmetizationParams, 0 , 0 > {
66+ template <typename BlueprintFieldType>
67+ class bls12_g2_point_addition <crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>>
68+ : public plonk_component<BlueprintFieldType> {
6869
6970 public:
70- using component_type = plonk_component<BlueprintFieldType, ArithmetizationParams, 0 , 0 >;
71+ using component_type = plonk_component<BlueprintFieldType>;
7172
7273 using var = typename component_type::var;
7374 using manifest_type = plonk_component_manifest;
@@ -104,8 +105,8 @@ namespace nil {
104105 struct input_type {
105106 std::array<var,4 > P, Q;
106107
107- std::vector<var> all_vars () const {
108- std::vector<var> res = {};
108+ std::vector<std::reference_wrapper< var>> all_vars () {
109+ std::vector<std::reference_wrapper< var> > res = {};
109110 for (auto & e : P) { res.push_back (e); }
110111 for (auto & e : Q) { res.push_back (e); }
111112 return res;
@@ -150,23 +151,20 @@ namespace nil {
150151 component_type (witnesses, constants, public_inputs, get_manifest()) {};
151152 };
152153
153- template <typename BlueprintFieldType, typename ArithmetizationParams >
154+ template <typename BlueprintFieldType>
154155 using plonk_bls12_g2_point_addition =
155156 bls12_g2_point_addition<
156- crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams>,
157- BlueprintFieldType>;
157+ crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>>;
158158
159- template <typename BlueprintFieldType, typename ArithmetizationParams >
160- typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::result_type generate_assignments (
161- const plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams > &component,
162- assignment<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams >>
159+ template <typename BlueprintFieldType>
160+ typename plonk_bls12_g2_point_addition<BlueprintFieldType>::result_type generate_assignments (
161+ const plonk_bls12_g2_point_addition<BlueprintFieldType> &component,
162+ assignment<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>>
163163 &assignment,
164- const typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::input_type
164+ const typename plonk_bls12_g2_point_addition<BlueprintFieldType>::input_type
165165 &instance_input,
166166 const std::uint32_t start_row_index) {
167167
168- using value_type = typename BlueprintFieldType::value_type;
169-
170168 const std::size_t WA = component.witness_amount ();
171169
172170 using policy_type_fp2 = crypto3::algebra::fields::fp2<BlueprintFieldType>;
@@ -222,22 +220,22 @@ namespace nil {
222220 assignment.witness (component.W ((22 + i) % WA),start_row_index + (WA < 24 )) = yR.data [i];
223221 }
224222
225- return typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::result_type (
223+ return typename plonk_bls12_g2_point_addition<BlueprintFieldType>::result_type (
226224 component, start_row_index);
227225 }
228226
229- template <typename BlueprintFieldType, typename ArithmetizationParams >
227+ template <typename BlueprintFieldType>
230228 std::size_t generate_gates (
231- const plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams > &component,
232- circuit<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams >> &bp,
233- assignment<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams >>
229+ const plonk_bls12_g2_point_addition<BlueprintFieldType> &component,
230+ circuit<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>> &bp,
231+ assignment<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>>
234232 &assignment,
235- const typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::input_type
233+ const typename plonk_bls12_g2_point_addition<BlueprintFieldType>::input_type
236234 &instance_input) {
237235
238236 const std::size_t WA = component.witness_amount ();
239237
240- using var = typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::var;
238+ using var = typename plonk_bls12_g2_point_addition<BlueprintFieldType>::var;
241239 using constraint_type = crypto3::zk::snark::plonk_constraint<BlueprintFieldType>;
242240
243241 // Fp2 field over constraints:
@@ -325,31 +323,29 @@ namespace nil {
325323 return bp.add_gate (Cs);
326324 }
327325
328- template <typename BlueprintFieldType, typename ArithmetizationParams >
326+ template <typename BlueprintFieldType>
329327 void generate_copy_constraints (
330- const plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams > &component,
331- circuit<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams >> &bp,
332- assignment<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams >>
328+ const plonk_bls12_g2_point_addition<BlueprintFieldType> &component,
329+ circuit<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>> &bp,
330+ assignment<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>>
333331 &assignment,
334- const typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::input_type &instance_input,
332+ const typename plonk_bls12_g2_point_addition<BlueprintFieldType>::input_type &instance_input,
335333 const std::size_t start_row_index) {
336334
337- using var = typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams>::var;
338-
339- const std::size_t WA = component.witness_amount ();
335+ using var = typename plonk_bls12_g2_point_addition<BlueprintFieldType>::var;
340336
341337 for (std::size_t i = 0 ; i < 4 ; i++) {
342338 bp.add_copy_constraint ({var (component.W (i), start_row_index, false ), instance_input.P [i]});
343339 }
344340 }
345341
346- template <typename BlueprintFieldType, typename ArithmetizationParams >
347- typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::result_type generate_circuit (
348- const plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams > &component,
349- circuit<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams >> &bp,
350- assignment<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType, ArithmetizationParams >>
342+ template <typename BlueprintFieldType>
343+ typename plonk_bls12_g2_point_addition<BlueprintFieldType>::result_type generate_circuit (
344+ const plonk_bls12_g2_point_addition<BlueprintFieldType> &component,
345+ circuit<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>> &bp,
346+ assignment<crypto3::zk::snark::plonk_constraint_system<BlueprintFieldType>>
351347 &assignment,
352- const typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::input_type &instance_input,
348+ const typename plonk_bls12_g2_point_addition<BlueprintFieldType>::input_type &instance_input,
353349 const std::size_t start_row_index) {
354350
355351 std::size_t selector_index = generate_gates (component, bp, assignment, instance_input);
@@ -358,7 +354,7 @@ namespace nil {
358354
359355 generate_copy_constraints (component, bp, assignment, instance_input, start_row_index);
360356
361- return typename plonk_bls12_g2_point_addition<BlueprintFieldType, ArithmetizationParams >::result_type (
357+ return typename plonk_bls12_g2_point_addition<BlueprintFieldType>::result_type (
362358 component, start_row_index);
363359 }
364360
0 commit comments