Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
consistency_enforcer_gadget.hpp
Go to the documentation of this file.
1 
12 #ifndef CONSISTENCY_ENFORCER_GADGET_HPP_
13 #define CONSISTENCY_ENFORCER_GADGET_HPP_
14 
16 
17 namespace libsnark
18 {
19 
20 template<typename FieldT>
22 {
23 private:
24  pb_variable<FieldT> is_register_instruction;
25  pb_variable<FieldT> is_control_flow_instruction;
26  pb_variable<FieldT> is_stall_instruction;
27 
28  pb_variable<FieldT> packed_desidx;
29  std::shared_ptr<packing_gadget<FieldT>> pack_desidx;
30 
31  pb_variable<FieldT> computed_result;
32  pb_variable<FieldT> computed_flag;
33  std::shared_ptr<inner_product_gadget<FieldT>> compute_computed_result;
34  std::shared_ptr<inner_product_gadget<FieldT>> compute_computed_flag;
35 
36  pb_variable<FieldT> pc_from_cf_or_zero;
37 
38  std::shared_ptr<loose_multiplexing_gadget<FieldT>>
39  demux_packed_outgoing_desval;
40 
41 public:
54 
68  const std::string &annotation_prefix = "");
69 
71  void generate_r1cs_witness();
72 };
73 
74 } // namespace libsnark
75 
77 
78 #endif // CONSISTENCY_ENFORCER_GADGET_HPP_
libsnark::consistency_enforcer_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::gadget::annotation_prefix
const std::string annotation_prefix
Definition: gadget.hpp:20
libsnark::consistency_enforcer_gadget::incoming_flag
pb_variable< FieldT > incoming_flag
Definition: consistency_enforcer_gadget.hpp:49
libsnark
Definition: accumulation_vector.hpp:18
libsnark::consistency_enforcer_gadget::outgoing_flag
pb_variable< FieldT > outgoing_flag
Definition: consistency_enforcer_gadget.hpp:52
libsnark::consistency_enforcer_gadget::instruction_results
pb_variable_array< FieldT > instruction_results
Definition: consistency_enforcer_gadget.hpp:43
libsnark::consistency_enforcer_gadget::packed_incoming_registers
pb_variable_array< FieldT > packed_incoming_registers
Definition: consistency_enforcer_gadget.hpp:47
consistency_enforcer_gadget.tcc
libsnark::consistency_enforcer_gadget::packed_outgoing_desval
pb_variable< FieldT > packed_outgoing_desval
Definition: consistency_enforcer_gadget.hpp:53
libsnark::consistency_enforcer_gadget
Definition: consistency_enforcer_gadget.hpp:21
tinyram_protoboard.hpp
libsnark::consistency_enforcer_gadget::instruction_flags
pb_variable_array< FieldT > instruction_flags
Definition: consistency_enforcer_gadget.hpp:44
libsnark::consistency_enforcer_gadget::packed_incoming_pc
pb_variable< FieldT > packed_incoming_pc
Definition: consistency_enforcer_gadget.hpp:46
libsnark::tinyram_gadget::pb
tinyram_protoboard< FieldT > & pb
Definition: tinyram_protoboard.hpp:34
libsnark::consistency_enforcer_gadget::packed_incoming_desval
pb_variable< FieldT > packed_incoming_desval
Definition: consistency_enforcer_gadget.hpp:48
libsnark::tinyram_protoboard
Definition: tinyram_protoboard.hpp:23
libsnark::consistency_enforcer_gadget::opcode_indicators
pb_variable_array< FieldT > opcode_indicators
Definition: consistency_enforcer_gadget.hpp:42
libsnark::pb_variable
Definition: pb_variable.hpp:24
libsnark::consistency_enforcer_gadget::consistency_enforcer_gadget
consistency_enforcer_gadget(tinyram_protoboard< FieldT > &pb, const pb_variable_array< FieldT > &opcode_indicators, const pb_variable_array< FieldT > &instruction_results, const pb_variable_array< FieldT > &instruction_flags, const pb_variable_array< FieldT > &desidx, const pb_variable< FieldT > &packed_incoming_pc, const pb_variable_array< FieldT > &packed_incoming_registers, const pb_variable< FieldT > &packed_incoming_desval, const pb_variable< FieldT > &incoming_flag, const pb_variable< FieldT > &packed_outgoing_pc, const pb_variable_array< FieldT > &packed_outgoing_registers, const pb_variable< FieldT > &outgoing_flag, const std::string &annotation_prefix="")
libsnark::pb_variable_array
Definition: pb_variable.hpp:44
libsnark::tinyram_standard_gadget
Definition: tinyram_protoboard.hpp:45
libsnark::consistency_enforcer_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::consistency_enforcer_gadget::packed_outgoing_registers
pb_variable_array< FieldT > packed_outgoing_registers
Definition: consistency_enforcer_gadget.hpp:51
libsnark::consistency_enforcer_gadget::packed_outgoing_pc
pb_variable< FieldT > packed_outgoing_pc
Definition: consistency_enforcer_gadget.hpp:50
libsnark::consistency_enforcer_gadget::desidx
pb_variable_array< FieldT > desidx
Definition: consistency_enforcer_gadget.hpp:45