Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
demo_ram_ppzksnark_verifier.cpp
Go to the documentation of this file.
1 
7 #include <fstream>
8 #include <iostream>
9 #ifndef MINDEPS
10 #include <boost/program_options.hpp>
11 #endif
12 
16 
17 #ifndef MINDEPS
18 namespace po = boost::program_options;
19 
21  const int argc,
22  const char **argv,
23  std::string &processed_assembly_fn,
24  std::string &verification_key_fn,
25  std::string &primary_input_fn,
26  std::string &proof_fn,
27  std::string &verification_result_fn)
28 {
29  try {
30  po::options_description desc("Usage");
31  desc.add_options()("help", "print this help message")(
32  "processed_assembly",
33  po::value<std::string>(&processed_assembly_fn)->required())(
34  "verification_key",
35  po::value<std::string>(&verification_key_fn)->required())(
36  "primary_input",
37  po::value<std::string>(&primary_input_fn)->required())(
38  "proof", po::value<std::string>(&proof_fn)->required())(
39  "verification_result",
40  po::value<std::string>(&verification_result_fn)->required());
41 
42  po::variables_map vm;
43  po::store(po::parse_command_line(argc, argv, desc), vm);
44 
45  if (vm.count("help")) {
46  std::cout << desc << "\n";
47  return false;
48  }
49 
50  po::notify(vm);
51  } catch (std::exception &e) {
52  std::cerr << "Error: " << e.what() << "\n";
53  return false;
54  }
55 
56  return true;
57 }
58 #endif
59 
60 using namespace libsnark;
61 
62 int main(int argc, const char *argv[])
63 {
65 
66 #ifdef MINDEPS
67  std::string processed_assembly_fn = "processed.txt";
68  std::string verification_key_fn = "verification_key.txt";
69  std::string proof_fn = "proof.txt";
70  std::string primary_input_fn = "primary_input.txt";
71  std::string verification_result_fn = "verification_result.txt";
72 #else
73  std::string processed_assembly_fn;
74  std::string verification_key_fn;
75  std::string proof_fn;
76  std::string primary_input_fn;
77  std::string verification_result_fn;
78 
80  argc,
81  argv,
82  processed_assembly_fn,
83  verification_key_fn,
84  primary_input_fn,
85  proof_fn,
86  verification_result_fn)) {
87  return 1;
88  }
89 #endif
90  libff::start_profiling();
91 
93  std::ifstream vk_file(verification_key_fn);
94  vk_file >> vk;
95  vk_file.close();
96 
97  std::ifstream processed(processed_assembly_fn);
98  tinyram_program program = load_preprocessed_program(vk.ap, processed);
99 
100  std::ifstream f_primary_input(primary_input_fn);
101  tinyram_input_tape primary_input = load_tape(f_primary_input);
102 
103  std::ifstream proof_file(proof_fn);
105  proof_file >> pi;
106  proof_file.close();
107 
110  vk.ap, vk.primary_input_size_bound, program, primary_input);
111  const bool bit = ram_ppzksnark_verifier<default_tinyram_ppzksnark_pp>(
112  vk, boot_trace, pi);
113 
114  printf("==================================================================="
115  "=============\n");
116  printf("The verification result is: %s\n", (bit ? "PASS" : "FAIL"));
117  printf("==================================================================="
118  "=============\n");
119  std::ofstream vr_file(verification_result_fn);
120  vr_file << bit << "\n";
121  vr_file.close();
122 }
tinyram_params.hpp
tinyram_ppzksnark_pp.hpp
libsnark
Definition: accumulation_vector.hpp:18
main
int main(int argc, const char *argv[])
Definition: demo_ram_ppzksnark_verifier.cpp:62
libsnark::default_tinyram_ppzksnark_pp::init_public_params
static void init_public_params()
Definition: tinyram_ppzksnark_pp.cpp:18
libsnark::ram_ppzksnark_verification_key
Definition: ram_ppzksnark.hpp:114
libsnark::load_preprocessed_program
tinyram_program load_preprocessed_program(const tinyram_architecture_params &ap, std::istream &preprocessed)
Definition: tinyram_aux.cpp:312
libsnark::tinyram_input_tape
std::vector< size_t > tinyram_input_tape
Definition: tinyram_aux.hpp:122
libsnark::r1cs_ppzksnark_proof
Definition: r1cs_ppzksnark.hpp:298
process_verifier_command_line
bool process_verifier_command_line(const int argc, const char **argv, std::string &processed_assembly_fn, std::string &verification_key_fn, std::string &primary_input_fn, std::string &proof_fn, std::string &verification_result_fn)
Definition: demo_ram_ppzksnark_verifier.cpp:20
libsnark::memory_store_trace
Definition: memory_store_trace.hpp:29
libsnark::load_tape
tinyram_input_tape load_tape(std::istream &tape)
Definition: tinyram_aux.cpp:369
libsnark::tinyram_boot_trace_from_program_and_input
memory_store_trace tinyram_boot_trace_from_program_and_input(const tinyram_architecture_params &ap, const size_t boot_trace_size_bound, const tinyram_program &program, const tinyram_input_tape &primary_input)
Definition: tinyram_aux.cpp:338
ram_ppzksnark.hpp
libsnark::tinyram_program
Definition: tinyram_aux.hpp:200