Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
tally_cp.hpp
Go to the documentation of this file.
1 
23 #ifndef TALLY_CP_HPP_
24 #define TALLY_CP_HPP_
25 
29 
30 namespace libsnark
31 {
32 
36 template<typename FieldT>
37 class tally_pcd_message : public r1cs_pcd_message<FieldT>
38 {
39 public:
40  size_t wordsize;
41 
42  size_t sum;
43  size_t count;
44 
46  const size_t type,
47  const size_t wordsize,
48  const size_t sum,
49  const size_t count);
51  const;
52  void print() const;
53 
54  ~tally_pcd_message() = default;
55 };
56 
57 template<typename FieldT>
59 {
60 public:
61  size_t summand;
62 
63  tally_pcd_local_data(const size_t summand);
65  void print() const;
66 
67  ~tally_pcd_local_data() = default;
68 };
69 
74 template<typename FieldT>
76  : public compliance_predicate_handler<FieldT, protoboard<FieldT>>
77 {
78 public:
82 
87 
90 
91  std::shared_ptr<packing_gadget<FieldT>> unpack_sum_out;
92  std::shared_ptr<packing_gadget<FieldT>> unpack_count_out;
93  std::vector<packing_gadget<FieldT>> pack_sum_in;
94  std::vector<packing_gadget<FieldT>> pack_count_in;
95 
97  std::shared_ptr<inner_product_gadget<FieldT>>
99 
101 
102  size_t wordsize;
104 
106  const size_t type,
107  const size_t max_arity,
108  const size_t wordsize,
109  const bool relies_on_same_type_inputs = false,
110  const std::set<size_t> accepted_input_types = std::set<size_t>());
111 
114  const std::vector<std::shared_ptr<r1cs_pcd_message<FieldT>>>
116  const std::shared_ptr<r1cs_pcd_local_data<FieldT>> &local_data);
117 
118  std::shared_ptr<r1cs_pcd_message<FieldT>> get_base_case_message() const;
119 };
120 
121 } // namespace libsnark
122 
124 
125 #endif // TALLY_CP_HPP_
libsnark::tally_pcd_message::sum
size_t sum
Definition: tally_cp.hpp:42
libsnark::tally_cp_handler::unpack_count_out
std::shared_ptr< packing_gadget< FieldT > > unpack_count_out
Definition: tally_cp.hpp:92
libsnark::tally_cp_handler::count_in_packed_aux
pb_variable_array< FieldT > count_in_packed_aux
Definition: tally_cp.hpp:89
libsnark::tally_cp_handler::get_base_case_message
std::shared_ptr< r1cs_pcd_message< FieldT > > get_base_case_message() const
tally_cp.tcc
libsnark::tally_cp_handler::wordsize
size_t wordsize
Definition: tally_cp.hpp:102
libsnark::tally_cp_handler::sum_in_packed_aux
pb_variable_array< FieldT > sum_in_packed_aux
Definition: tally_cp.hpp:88
libsnark
Definition: accumulation_vector.hpp:18
libsnark::tally_cp_handler::sum_in_packed
pb_variable_array< FieldT > sum_in_packed
Definition: tally_cp.hpp:85
libsnark::tally_pcd_local_data::summand
size_t summand
Definition: tally_cp.hpp:61
libsnark::tally_pcd_local_data::print
void print() const
libsnark::r1cs_pcd_message::type
size_t type
Definition: compliance_predicate.hpp:38
libsnark::compliance_predicate_handler
Definition: cp_handler.hpp:82
libsnark::tally_pcd_message::count
size_t count
Definition: tally_cp.hpp:43
libsnark::tally_pcd_message::tally_pcd_message
tally_pcd_message(const size_t type, const size_t wordsize, const size_t sum, const size_t count)
libsnark::tally_pcd_local_data::tally_pcd_local_data
tally_pcd_local_data(const size_t summand)
libsnark::tally_cp_handler::type_val_inner_product
pb_variable< FieldT > type_val_inner_product
Definition: tally_cp.hpp:96
libsnark::r1cs_pcd_local_data
Definition: compliance_predicate.hpp:54
libsnark::tally_cp_handler::message_length
size_t message_length
Definition: tally_cp.hpp:103
libsnark::tally_cp_handler::tally_cp_handler
tally_cp_handler(const size_t type, const size_t max_arity, const size_t wordsize, const bool relies_on_same_type_inputs=false, const std::set< size_t > accepted_input_types=std::set< size_t >())
compliance_predicate.hpp
libsnark::tally_pcd_local_data::~tally_pcd_local_data
~tally_pcd_local_data()=default
libsnark::tally_pcd_message::payload_as_r1cs_variable_assignment
r1cs_variable_assignment< FieldT > payload_as_r1cs_variable_assignment() const
libsnark::compliance_predicate_handler< FieldT, protoboard< FieldT > >::accepted_input_types
const std::set< size_t > accepted_input_types
Definition: cp_handler.hpp:98
libsnark::tally_cp_handler::incoming_types
pb_variable_array< FieldT > incoming_types
Definition: tally_cp.hpp:81
libsnark::tally_pcd_local_data::as_r1cs_variable_assignment
r1cs_variable_assignment< FieldT > as_r1cs_variable_assignment() const
libsnark::r1cs_pcd_message
Definition: compliance_predicate.hpp:35
libsnark::tally_pcd_message
Definition: tally_cp.hpp:37
cp_handler.hpp
libsnark::tally_pcd_local_data
Definition: tally_cp.hpp:58
libsnark::compliance_predicate_handler< FieldT, protoboard< FieldT > >::max_arity
const size_t max_arity
Definition: cp_handler.hpp:96
libsnark::tally_cp_handler::count_out_packed
pb_variable< FieldT > count_out_packed
Definition: tally_cp.hpp:84
libsnark::r1cs_variable_assignment
std::vector< FieldT > r1cs_variable_assignment
Definition: r1cs.hpp:88
libsnark::pb_variable
Definition: pb_variable.hpp:24
libsnark::tally_cp_handler::compute_type_val_inner_product
std::shared_ptr< inner_product_gadget< FieldT > > compute_type_val_inner_product
Definition: tally_cp.hpp:98
basic_gadgets.hpp
libsnark::tally_cp_handler::generate_r1cs_witness
void generate_r1cs_witness(const std::vector< std::shared_ptr< r1cs_pcd_message< FieldT >>> &incoming_messages, const std::shared_ptr< r1cs_pcd_local_data< FieldT >> &local_data)
libsnark::tally_cp_handler::count_in_packed
pb_variable_array< FieldT > count_in_packed
Definition: tally_cp.hpp:86
libsnark::tally_pcd_message::wordsize
size_t wordsize
Definition: tally_cp.hpp:40
libsnark::tally_pcd_message::~tally_pcd_message
~tally_pcd_message()=default
libsnark::compliance_predicate_handler< FieldT, protoboard< FieldT > >::type
const size_t type
Definition: cp_handler.hpp:95
libsnark::pb_variable_array
Definition: pb_variable.hpp:44
libsnark::tally_pcd_message::print
void print() const
libsnark::compliance_predicate_handler< FieldT, protoboard< FieldT > >::relies_on_same_type_inputs
const bool relies_on_same_type_inputs
Definition: cp_handler.hpp:97
libsnark::tally_cp_handler::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::compliance_predicate_handler< FieldT, protoboard< FieldT > >::incoming_messages
std::vector< std::shared_ptr< r1cs_pcd_message_variable< FieldT > > > incoming_messages
Definition: cp_handler.hpp:90
libsnark::tally_cp_handler::base_handler
compliance_predicate_handler< FieldT, protoboard< FieldT > > base_handler
Definition: tally_cp.hpp:80
libsnark::tally_cp_handler::unpack_sum_out
std::shared_ptr< packing_gadget< FieldT > > unpack_sum_out
Definition: tally_cp.hpp:91
libsnark::tally_cp_handler::sum_out_packed
pb_variable< FieldT > sum_out_packed
Definition: tally_cp.hpp:83
libsnark::tally_cp_handler
Definition: tally_cp.hpp:75
libsnark::tally_cp_handler::pack_count_in
std::vector< packing_gadget< FieldT > > pack_count_in
Definition: tally_cp.hpp:94
libsnark::tally_cp_handler::arity_indicators
pb_variable_array< FieldT > arity_indicators
Definition: tally_cp.hpp:100
libsnark::tally_cp_handler::pack_sum_in
std::vector< packing_gadget< FieldT > > pack_sum_in
Definition: tally_cp.hpp:93
libsnark::compliance_predicate_handler< FieldT, protoboard< FieldT > >::local_data
std::shared_ptr< r1cs_pcd_local_data_variable< FieldT > > local_data
Definition: cp_handler.hpp:91