5 #ifndef __ZECALE_CIRCUITS_AGGREGATOR_GADGET_HPP_
6 #define __ZECALE_CIRCUITS_AGGREGATOR_GADGET_HPP_
8 #include <libff/algebra/fields/field_utils.hpp>
9 #include <libsnark/gadgetlib1/gadget.hpp>
10 #include <libsnark/gadgetlib1/gadgets/basic_gadgets.hpp>
11 #include <libsnark/gadgetlib1/gadgets/pairing/pairing_params.hpp>
12 #include <libzeth/core/extended_proof.hpp>
31 template<
typename wppT,
typename nverifierT,
size_t NumProofs>
35 using npp = libsnark::other_curve<wppT>;
36 using nsnark =
typename nverifierT::snark;
37 using process_verification_key_gadget =
38 typename nverifierT::process_verification_key_gadget;
39 using online_verifier_gadget =
typename nverifierT::online_verifier_gadget;
40 using proof_variable_gadget =
typename nverifierT::proof_variable_gadget;
41 using verification_key_variable_gadget =
42 typename nverifierT::verification_key_variable_gadget;
43 using processed_verification_key_variable_gadget =
44 typename nverifierT::processed_verification_key_variable_gadget;
45 using input_packing_gadget = libsnark::multipacking_gadget<libff::Fr<wppT>>;
47 const size_t num_inputs_per_nested_proof;
52 processed_verification_key_variable_gadget processed_vk;
55 std::array<libsnark::pb_variable_array<libff::Fr<wppT>>, NumProofs>
56 nested_primary_inputs;
61 std::array<libsnark::pb_variable_array<libff::Fr<wppT>>, NumProofs>
62 nested_primary_inputs_bits;
65 process_verification_key_gadget vk_processor;
68 std::vector<std::shared_ptr<input_packing_gadget>>
69 nested_primary_input_packers;
72 std::array<std::shared_ptr<online_verifier_gadget>, NumProofs> verifiers;
76 libsnark::protoboard<libff::Fr<wppT>> &pb,
77 const verification_key_variable_gadget &vk,
79 libsnark::pb_variable_array<libff::Fr<wppT>>,
81 const std::array<std::shared_ptr<proof_variable_gadget>, NumProofs>
83 const std::array<libsnark::pb_variable<libff::Fr<wppT>>, NumProofs>
85 const std::string &annotation_prefix);
93 const libsnark::r1cs_primary_input<libff::Fr<npp>> *,
94 NumProofs> &in_extended_proofs);
101 #endif // __ZECALE_CIRCUITS_AGGREGATOR_GADGET_HPP_