Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
memory_contents_examples.cpp
Go to the documentation of this file.
1 
15 #include <cstdlib>
17 #include <map>
18 #include <set>
19 
20 namespace libsnark
21 {
22 
24  const size_t num_addresses,
25  const size_t value_size,
26  const size_t block1_size,
27  const size_t block2_size)
28 {
29  const size_t max_unit = 1ul << value_size;
30 
31  memory_contents result;
32  for (size_t i = 0; i < block1_size; ++i) {
33  result[i] = std::rand() % max_unit;
34  }
35 
36  for (size_t i = 0; i < block2_size; ++i) {
37  result[num_addresses / 2 + i] = std::rand() % max_unit;
38  }
39 
40  return result;
41 }
42 
44  const size_t num_addresses,
45  const size_t value_size,
46  const size_t num_filled)
47 {
48  const size_t max_unit = 1ul << value_size;
49 
50  std::set<size_t> unfilled;
51  for (size_t i = 0; i < num_addresses; ++i) {
52  unfilled.insert(i);
53  }
54 
55  memory_contents result;
56  for (size_t i = 0; i < num_filled; ++i) {
57  auto it = unfilled.begin();
58  std::advance(it, std::rand() % unfilled.size());
59  result[*it] = std::rand() % max_unit;
60  unfilled.erase(it);
61  }
62 
63  return result;
64 }
65 
66 } // namespace libsnark
libsnark
Definition: accumulation_vector.hpp:18
libsnark::memory_contents
std::map< size_t, size_t > memory_contents
Definition: memory_interface.hpp:25
memory_contents_examples.hpp
libsnark::block_memory_contents
memory_contents block_memory_contents(const size_t num_addresses, const size_t value_size, const size_t block1_size, const size_t block2_size)
Definition: memory_contents_examples.cpp:23
libsnark::random_memory_contents
memory_contents random_memory_contents(const size_t num_addresses, const size_t value_size, const size_t num_filled)
Definition: memory_contents_examples.cpp:43