Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Functions
demo_ram_ppzksnark_verifier.cpp File Reference
#include <fstream>
#include <iostream>
#include <boost/program_options.hpp>
#include <libsnark/common/default_types/tinyram_ppzksnark_pp.hpp>
#include <libsnark/relations/ram_computations/rams/tinyram/tinyram_params.hpp>
#include <libsnark/zk_proof_systems/ppzksnark/ram_ppzksnark/ram_ppzksnark.hpp>
Include dependency graph for demo_ram_ppzksnark_verifier.cpp:

Go to the source code of this file.

Functions

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)
 
int main (int argc, const char *argv[])
 

Function Documentation

◆ main()

int main ( int  argc,
const char *  argv[] 
)

Definition at line 62 of file demo_ram_ppzksnark_verifier.cpp.

63 {
64  default_tinyram_ppzksnark_pp::init_public_params();
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 }
Here is the call graph for this function:

◆ 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 
)
Author
This file is part of libsnark, developed by SCIPR Lab and contributors (see AUTHORS).

Definition at line 20 of file demo_ram_ppzksnark_verifier.cpp.

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 }
Here is the caller graph for this function:
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
libsnark::tinyram_program
Definition: tinyram_aux.hpp:200