10 #include <boost/program_options.hpp>
18 namespace po = boost::program_options;
23 std::string &architecture_params_fn,
24 std::string &computation_bounds_fn,
25 std::string &proving_key_fn,
26 std::string &verification_key_fn)
29 po::options_description desc(
"Usage");
30 desc.add_options()(
"help",
"print this help message")(
31 "architecture_params",
32 po::value<std::string>(&architecture_params_fn)->required())(
34 po::value<std::string>(&computation_bounds_fn)->required())(
35 "proving_key", po::value<std::string>(&proving_key_fn)->required())(
37 po::value<std::string>(&verification_key_fn)->required());
40 po::store(po::parse_command_line(argc, argv, desc), vm);
42 if (vm.count(
"help")) {
43 std::cout << desc <<
"\n";
48 }
catch (std::exception &e) {
49 std::cerr <<
"Error: " << e.what() <<
"\n";
59 int main(
int argc,
const char *argv[])
63 std::string architecture_params_fn =
"architecture_params.txt";
64 std::string computation_bounds_fn =
"computation_bounds.txt";
65 std::string proving_key_fn =
"proving_key.txt";
66 std::string verification_key_fn =
"verification_key.txt";
68 std::string architecture_params_fn;
69 std::string computation_bounds_fn;
70 std::string proving_key_fn;
71 std::string verification_key_fn;
76 architecture_params_fn,
77 computation_bounds_fn,
79 verification_key_fn)) {
83 libff::start_profiling();
87 std::ifstream f_ap(architecture_params_fn);
90 std::ifstream f_rp(computation_bounds_fn);
91 size_t tinyram_input_size_bound, tinyram_program_size_bound, time_bound;
92 f_rp >> tinyram_input_size_bound >> tinyram_program_size_bound >>
95 const size_t boot_trace_size_bound =
96 tinyram_program_size_bound + tinyram_input_size_bound;
99 ram_ppzksnark_generator<default_ram_ppzksnark_pp>(
100 ap, boot_trace_size_bound, time_bound);
102 std::ofstream pk(proving_key_fn);
106 std::ofstream vk(verification_key_fn);