Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
ram_params.hpp
Go to the documentation of this file.
1 
12 #ifndef RAM_PARAMS_HPP_
13 #define RAM_PARAMS_HPP_
14 
15 #include <libff/common/utils.hpp>
17 #include <vector>
18 
19 namespace libsnark
20 {
21 
22 /*
23  When declaring a new ramT one should do a make it a class that declares
24  typedefs for:
25 
26  base_field_type
27  ram_cpu_checker_type
28  architecture_params_type
29 
30  For ram_to_r1cs reduction currently the following are also necessary:
31  protoboard_type (e.g. tinyram_protoboard<FieldT>)
32  gadget_base_type (e.g. tinyram_gadget<FieldT>)
33  cpu_state_variable_type (must have pb_variable_array<FieldT> all_vars)
34 
35  The ramT class must also have a static size_t variable
36  timestamp_length, which specifies the zk-SNARK reduction timestamp
37  length.
38 */
39 
40 template<typename ramT> using ram_base_field = typename ramT::base_field_type;
41 
42 template<typename ramT> using ram_cpu_state = libff::bit_vector;
43 
44 template<typename ramT> using ram_boot_trace = memory_store_trace;
45 
46 template<typename ramT> using ram_protoboard = typename ramT::protoboard_type;
47 
48 template<typename ramT> using ram_gadget_base = typename ramT::gadget_base_type;
49 
50 template<typename ramT> using ram_cpu_checker = typename ramT::cpu_checker_type;
51 
52 template<typename ramT>
53 using ram_architecture_params = typename ramT::architecture_params_type;
54 
55 template<typename ramT> using ram_input_tape = std::vector<size_t>;
56 
57 /*
58  One should also make the following methods for ram_architecture_params
59 
60  (We are not yet making a ram_architecture_params base class, as it
61  would require base class for ram_program
62 
63  TODO: make this base class)
64 
65  size_t address_size();
66  size_t value_size();
67  size_t cpu_state_size();
68  size_t initial_pc_addr();
69  libff::bit_vector initial_cpu_state();
70 */
71 
72 } // namespace libsnark
73 
74 #endif // RAM_PARAMS_HPP_
libsnark::ram_input_tape
std::vector< size_t > ram_input_tape
Definition: ram_params.hpp:55
libsnark::ram_architecture_params
typename ramT::architecture_params_type ram_architecture_params
Definition: ram_params.hpp:53
libsnark::ram_protoboard
typename ramT::protoboard_type ram_protoboard
Definition: ram_params.hpp:46
libsnark
Definition: accumulation_vector.hpp:18
libsnark::ram_base_field
typename ramT::base_field_type ram_base_field
Definition: ram_params.hpp:40
libsnark::ram_cpu_state
libff::bit_vector ram_cpu_state
Definition: ram_params.hpp:42
libsnark::memory_store_trace
Definition: memory_store_trace.hpp:29
libsnark::ram_cpu_checker
typename ramT::cpu_checker_type ram_cpu_checker
Definition: ram_params.hpp:50
memory_store_trace.hpp
libsnark::ram_gadget_base
typename ramT::gadget_base_type ram_gadget_base
Definition: ram_params.hpp:48