Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
argument_decoder_gadget.hpp
Go to the documentation of this file.
1 
12 #ifndef ARGUMENT_DECODER_GADGET_HPP_
13 #define ARGUMENT_DECODER_GADGET_HPP_
14 
16 
17 namespace libsnark
18 {
19 
20 template<typename FieldT>
22 {
23 private:
24  pb_variable<FieldT> packed_desidx;
25  pb_variable<FieldT> packed_arg1idx;
26  pb_variable<FieldT> packed_arg2idx;
27 
28  std::shared_ptr<packing_gadget<FieldT>> pack_desidx;
29  std::shared_ptr<packing_gadget<FieldT>> pack_arg1idx;
30  std::shared_ptr<packing_gadget<FieldT>> pack_arg2idx;
31 
32  pb_variable<FieldT> arg2_demux_result;
33  pb_variable<FieldT> arg2_demux_success;
34 
35  std::shared_ptr<loose_multiplexing_gadget<FieldT>> demux_des;
36  std::shared_ptr<loose_multiplexing_gadget<FieldT>> demux_arg1;
37  std::shared_ptr<loose_multiplexing_gadget<FieldT>> demux_arg2;
38 
39 public:
48 
59  const std::string &annotation_prefix = "");
60 
62  void generate_r1cs_witness();
63 };
64 
65 template<typename FieldT> void test_argument_decoder_gadget();
66 
67 } // namespace libsnark
68 
70 
71 #endif // ARGUMENT_DECODER_GADGET_HPP_
libsnark::gadget::annotation_prefix
const std::string annotation_prefix
Definition: gadget.hpp:20
libsnark::argument_decoder_gadget::arg2_is_imm
pb_variable< FieldT > arg2_is_imm
Definition: argument_decoder_gadget.hpp:40
libsnark
Definition: accumulation_vector.hpp:18
libsnark::argument_decoder_gadget::desidx
pb_variable_array< FieldT > desidx
Definition: argument_decoder_gadget.hpp:41
libsnark::argument_decoder_gadget::arg2idx
pb_variable_array< FieldT > arg2idx
Definition: argument_decoder_gadget.hpp:43
libsnark::argument_decoder_gadget::packed_arg2val
pb_variable< FieldT > packed_arg2val
Definition: argument_decoder_gadget.hpp:47
libsnark::argument_decoder_gadget::arg1idx
pb_variable_array< FieldT > arg1idx
Definition: argument_decoder_gadget.hpp:42
libsnark::argument_decoder_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::argument_decoder_gadget
Definition: argument_decoder_gadget.hpp:21
tinyram_protoboard.hpp
libsnark::argument_decoder_gadget::packed_registers
pb_variable_array< FieldT > packed_registers
Definition: argument_decoder_gadget.hpp:44
argument_decoder_gadget.tcc
libsnark::test_argument_decoder_gadget
void test_argument_decoder_gadget()
libsnark::tinyram_gadget::pb
tinyram_protoboard< FieldT > & pb
Definition: tinyram_protoboard.hpp:34
libsnark::tinyram_protoboard
Definition: tinyram_protoboard.hpp:23
libsnark::pb_variable
Definition: pb_variable.hpp:24
libsnark::argument_decoder_gadget::packed_arg1val
pb_variable< FieldT > packed_arg1val
Definition: argument_decoder_gadget.hpp:46
libsnark::pb_variable_array
Definition: pb_variable.hpp:44
libsnark::tinyram_standard_gadget
Definition: tinyram_protoboard.hpp:45
libsnark::argument_decoder_gadget::argument_decoder_gadget
argument_decoder_gadget(tinyram_protoboard< FieldT > &pb, const pb_variable< FieldT > &arg2_is_imm, const pb_variable_array< FieldT > &desidx, const pb_variable_array< FieldT > &arg1idx, const pb_variable_array< FieldT > &arg2idx, const pb_variable_array< FieldT > &packed_registers, const pb_variable< FieldT > &packed_desval, const pb_variable< FieldT > &packed_arg1val, const pb_variable< FieldT > &packed_arg2val, const std::string &annotation_prefix="")
libsnark::argument_decoder_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::argument_decoder_gadget::packed_desval
pb_variable< FieldT > packed_desval
Definition: argument_decoder_gadget.hpp:45