Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
memory_masking_gadget.hpp
Go to the documentation of this file.
1 
12 #ifndef MEMORY_MASKING_GADGET_HPP_
13 #define MEMORY_MASKING_GADGET_HPP_
14 
17 
18 namespace libsnark
19 {
20 
57 template<typename FieldT>
59 {
60 private:
62  pb_variable<FieldT> is_word0;
63  pb_variable<FieldT> is_word1;
64  pb_variable_array<FieldT> is_subaddress;
66 
67  pb_linear_combination<FieldT> masked_out_word0;
68  pb_linear_combination<FieldT> masked_out_word1;
69  pb_linear_combination_array<FieldT> masked_out_bytes;
70 
71  std::shared_ptr<inner_product_gadget<FieldT>>
72  get_masked_out_dw_contents_prev;
73 
74  pb_variable<FieldT> masked_out_dw_contents_prev;
75  pb_variable<FieldT> expected_dw_contents_next;
76 
77 public:
84 
93  const std::string &annotation_prefix = "");
95  void generate_r1cs_witness();
96 };
97 
98 } // namespace libsnark
99 
101 
102 #endif // MEMORY_MASKING_GADGET_HPP_
libsnark::memory_masking_gadget::generate_r1cs_witness
void generate_r1cs_witness()
libsnark::memory_masking_gadget::access_is_word
pb_linear_combination< FieldT > access_is_word
Definition: memory_masking_gadget.hpp:81
libsnark::dual_variable_gadget
Definition: basic_gadgets.hpp:130
libsnark::gadget::annotation_prefix
const std::string annotation_prefix
Definition: gadget.hpp:20
libsnark
Definition: accumulation_vector.hpp:18
libsnark::memory_masking_gadget::access_is_byte
pb_linear_combination< FieldT > access_is_byte
Definition: memory_masking_gadget.hpp:82
libsnark::memory_masking_gadget::dw_contents_prev
doubleword_variable_gadget< FieldT > dw_contents_prev
Definition: memory_masking_gadget.hpp:78
word_variable_gadget.hpp
libsnark::memory_masking_gadget::dw_contents_next
doubleword_variable_gadget< FieldT > dw_contents_next
Definition: memory_masking_gadget.hpp:83
libsnark::pb_linear_combination_array
Definition: pb_variable.hpp:118
tinyram_protoboard.hpp
libsnark::memory_masking_gadget::memory_masking_gadget
memory_masking_gadget(tinyram_protoboard< FieldT > &pb, const doubleword_variable_gadget< FieldT > &dw_contents_prev, const dual_variable_gadget< FieldT > &subaddress, const pb_linear_combination< FieldT > &subcontents, const pb_linear_combination< FieldT > &access_is_word, const pb_linear_combination< FieldT > &access_is_byte, const doubleword_variable_gadget< FieldT > &dw_contents_next, const std::string &annotation_prefix="")
libsnark::memory_masking_gadget::subaddress
dual_variable_gadget< FieldT > subaddress
Definition: memory_masking_gadget.hpp:79
libsnark::pb_linear_combination
Definition: pb_variable.hpp:101
memory_masking_gadget.tcc
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::pb_variable_array
Definition: pb_variable.hpp:44
libsnark::doubleword_variable_gadget
Definition: word_variable_gadget.hpp:53
libsnark::tinyram_standard_gadget
Definition: tinyram_protoboard.hpp:45
libsnark::memory_masking_gadget::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::memory_masking_gadget::subcontents
pb_linear_combination< FieldT > subcontents
Definition: memory_masking_gadget.hpp:80
libsnark::memory_masking_gadget
Definition: memory_masking_gadget.hpp:58