Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
fooram_cpu_checker.hpp
Go to the documentation of this file.
1 
26 #ifndef FOORAM_CPU_CHECKER_HPP_
27 #define FOORAM_CPU_CHECKER_HPP_
28 
29 #include <cstddef>
30 #include <libff/common/serialization.hpp>
36 #include <memory>
37 
38 namespace libsnark
39 {
40 
41 template<typename FieldT>
42 class fooram_cpu_checker : public fooram_gadget<FieldT>
43 {
44 public:
55 
59  std::shared_ptr<packing_gadget<FieldT>> pack_next_pc_addr;
60 
64 
65  std::shared_ptr<bar_gadget<FieldT>> increment_pc;
66  std::shared_ptr<bar_gadget<FieldT>> compute_packed_load_addr;
67  std::shared_ptr<bar_gadget<FieldT>> compute_packed_store_addr;
68  std::shared_ptr<bar_gadget<FieldT>> compute_packed_store_val;
69 
75  std::shared_ptr<packing_gadget<FieldT>> pack_ls_addr;
76  std::shared_ptr<packing_gadget<FieldT>> pack_ls_prev_val;
77  std::shared_ptr<packing_gadget<FieldT>> pack_ls_next_val;
78  std::shared_ptr<packing_gadget<FieldT>> pack_prev_state;
79  std::shared_ptr<packing_gadget<FieldT>> pack_next_state;
80 
92  const std::string &annotation_prefix);
93 
95 
96  void generate_r1cs_witness() { assert(0); }
97 
99 
102  const fooram_input_tape_iterator &aux_end);
103 
104  void dump() const;
105 };
106 
107 } // namespace libsnark
108 
110 
111 #endif // FORAM_CPU_CHECKER_HPP_
libsnark::fooram_cpu_checker::generate_r1cs_witness_other
void generate_r1cs_witness_other(fooram_input_tape_iterator &aux_it, const fooram_input_tape_iterator &aux_end)
libsnark::fooram_cpu_checker::increment_pc
std::shared_ptr< bar_gadget< FieldT > > increment_pc
Definition: fooram_cpu_checker.hpp:65
libsnark::fooram_cpu_checker::generate_r1cs_constraints
void generate_r1cs_constraints()
libsnark::fooram_cpu_checker::zero
pb_variable< FieldT > zero
Definition: fooram_cpu_checker.hpp:56
libsnark::gadget::annotation_prefix
const std::string annotation_prefix
Definition: gadget.hpp:20
libsnark::fooram_cpu_checker::guess
pb_variable_array< FieldT > guess
Definition: fooram_cpu_checker.hpp:48
libsnark::fooram_cpu_checker::compute_packed_load_addr
std::shared_ptr< bar_gadget< FieldT > > compute_packed_load_addr
Definition: fooram_cpu_checker.hpp:66
libsnark::fooram_input_tape_iterator
std::vector< size_t >::const_iterator fooram_input_tape_iterator
Definition: fooram_aux.hpp:25
libsnark
Definition: accumulation_vector.hpp:18
libsnark::fooram_cpu_checker::packed_store_addr
pb_variable< FieldT > packed_store_addr
Definition: fooram_cpu_checker.hpp:62
libsnark::fooram_cpu_checker::pack_prev_state
std::shared_ptr< packing_gadget< FieldT > > pack_prev_state
Definition: fooram_cpu_checker.hpp:78
libsnark::fooram_cpu_checker::packed_next_state
pb_variable< FieldT > packed_next_state
Definition: fooram_cpu_checker.hpp:74
bar_gadget.hpp
libsnark::fooram_protoboard
Definition: fooram_protoboard.hpp:21
libsnark::fooram_cpu_checker::next_state
pb_variable_array< FieldT > next_state
Definition: fooram_cpu_checker.hpp:52
libsnark::fooram_cpu_checker::ls_next_val
pb_variable_array< FieldT > ls_next_val
Definition: fooram_cpu_checker.hpp:51
libsnark::fooram_cpu_checker::pack_next_state
std::shared_ptr< packing_gadget< FieldT > > pack_next_state
Definition: fooram_cpu_checker.hpp:79
libsnark::fooram_cpu_checker::ls_prev_val
pb_variable_array< FieldT > ls_prev_val
Definition: fooram_cpu_checker.hpp:50
gadget.hpp
libsnark::fooram_cpu_checker::pack_ls_addr
std::shared_ptr< packing_gadget< FieldT > > pack_ls_addr
Definition: fooram_cpu_checker.hpp:75
libsnark::fooram_cpu_checker::next_has_accepted
pb_variable< FieldT > next_has_accepted
Definition: fooram_cpu_checker.hpp:54
libsnark::fooram_cpu_checker::packed_prev_state
pb_variable< FieldT > packed_prev_state
Definition: fooram_cpu_checker.hpp:73
libsnark::fooram_cpu_checker::packed_store_val
pb_variable< FieldT > packed_store_val
Definition: fooram_cpu_checker.hpp:63
libsnark::fooram_gadget
Definition: fooram_protoboard.hpp:29
libsnark::fooram_cpu_checker::pack_ls_next_val
std::shared_ptr< packing_gadget< FieldT > > pack_ls_next_val
Definition: fooram_cpu_checker.hpp:77
libsnark::fooram_gadget::pb
fooram_protoboard< FieldT > & pb
Definition: fooram_protoboard.hpp:32
libsnark::fooram_cpu_checker::packed_next_pc_addr
pb_variable< FieldT > packed_next_pc_addr
Definition: fooram_cpu_checker.hpp:57
libsnark::pb_linear_combination_array
Definition: pb_variable.hpp:118
libsnark::fooram_cpu_checker::prev_pc_val
pb_variable_array< FieldT > prev_pc_val
Definition: fooram_cpu_checker.hpp:46
libsnark::fooram_cpu_checker::packed_load_addr
pb_variable< FieldT > packed_load_addr
Definition: fooram_cpu_checker.hpp:61
libsnark::fooram_cpu_checker::packed_ls_addr
pb_variable< FieldT > packed_ls_addr
Definition: fooram_cpu_checker.hpp:70
libsnark::fooram_cpu_checker::one_as_addr
pb_linear_combination_array< FieldT > one_as_addr
Definition: fooram_cpu_checker.hpp:58
fooram_cpu_checker.tcc
memory_interface.hpp
libsnark::pb_variable
Definition: pb_variable.hpp:24
basic_gadgets.hpp
fooram_protoboard.hpp
libsnark::fooram_cpu_checker
Definition: fooram_cpu_checker.hpp:42
libsnark::pb_variable_array
Definition: pb_variable.hpp:44
libsnark::fooram_cpu_checker::dump
void dump() const
libsnark::fooram_cpu_checker::packed_ls_prev_val
pb_variable< FieldT > packed_ls_prev_val
Definition: fooram_cpu_checker.hpp:71
libsnark::fooram_cpu_checker::ls_addr
pb_variable_array< FieldT > ls_addr
Definition: fooram_cpu_checker.hpp:49
libsnark::fooram_cpu_checker::generate_r1cs_witness_address
void generate_r1cs_witness_address()
libsnark::fooram_cpu_checker::fooram_cpu_checker
fooram_cpu_checker(fooram_protoboard< FieldT > &pb, pb_variable_array< FieldT > &prev_pc_addr, pb_variable_array< FieldT > &prev_pc_val, pb_variable_array< FieldT > &prev_state, pb_variable_array< FieldT > &ls_addr, pb_variable_array< FieldT > &ls_prev_val, pb_variable_array< FieldT > &ls_next_val, pb_variable_array< FieldT > &next_state, pb_variable_array< FieldT > &next_pc_addr, pb_variable< FieldT > &next_has_accepted, const std::string &annotation_prefix)
libsnark::fooram_cpu_checker::pack_ls_prev_val
std::shared_ptr< packing_gadget< FieldT > > pack_ls_prev_val
Definition: fooram_cpu_checker.hpp:76
libsnark::fooram_cpu_checker::prev_state
pb_variable_array< FieldT > prev_state
Definition: fooram_cpu_checker.hpp:47
libsnark::fooram_cpu_checker::pack_next_pc_addr
std::shared_ptr< packing_gadget< FieldT > > pack_next_pc_addr
Definition: fooram_cpu_checker.hpp:59
libsnark::fooram_cpu_checker::compute_packed_store_val
std::shared_ptr< bar_gadget< FieldT > > compute_packed_store_val
Definition: fooram_cpu_checker.hpp:68
libsnark::fooram_cpu_checker::prev_pc_addr
pb_variable_array< FieldT > prev_pc_addr
Definition: fooram_cpu_checker.hpp:45
libsnark::fooram_cpu_checker::compute_packed_store_addr
std::shared_ptr< bar_gadget< FieldT > > compute_packed_store_addr
Definition: fooram_cpu_checker.hpp:67
libsnark::fooram_cpu_checker::packed_ls_next_val
pb_variable< FieldT > packed_ls_next_val
Definition: fooram_cpu_checker.hpp:72
libsnark::fooram_cpu_checker::next_pc_addr
pb_variable_array< FieldT > next_pc_addr
Definition: fooram_cpu_checker.hpp:53
libsnark::fooram_cpu_checker::generate_r1cs_witness
void generate_r1cs_witness()
Definition: fooram_cpu_checker.hpp:96