10 #include <boost/program_options.hpp>
18 namespace po = boost::program_options;
23 std::string &processed_assembly_fn,
24 std::string &proving_key_fn,
25 std::string &primary_input_fn,
26 std::string &auxiliary_input_fn,
27 std::string &proof_fn)
30 po::options_description desc(
"Usage");
31 desc.add_options()(
"help",
"print this help message")(
33 po::value<std::string>(&processed_assembly_fn)->required())(
34 "proving_key", po::value<std::string>(&proving_key_fn)->required())(
36 po::value<std::string>(&primary_input_fn)->required())(
38 po::value<std::string>(&auxiliary_input_fn)->required())(
39 "proof", po::value<std::string>(&proof_fn)->required());
42 po::store(po::parse_command_line(argc, argv, desc), vm);
44 if (vm.count(
"help")) {
45 std::cout << desc <<
"\n";
50 }
catch (std::exception &e) {
51 std::cerr <<
"Error: " << e.what() <<
"\n";
61 int main(
int argc,
const char *argv[])
66 std::string processed_assembly_fn =
"processed.txt";
67 std::string proving_key_fn =
"proving_key.txt";
68 std::string primary_input_fn =
"primary_input.txt";
69 std::string auxiliary_input_fn =
"auxiliary_input.txt";
70 std::string proof_fn =
"proof.txt";
72 std::string processed_assembly_fn;
73 std::string proving_key_fn;
74 std::string primary_input_fn;
75 std::string auxiliary_input_fn;
81 processed_assembly_fn,
89 libff::start_profiling();
93 std::ifstream pk_file(proving_key_fn);
97 std::ifstream processed(processed_assembly_fn);
100 std::ifstream f_primary_input(primary_input_fn);
101 std::ifstream f_auxiliary_input(auxiliary_input_fn);
107 pk.ap, pk.primary_input_size_bound, program, primary_input);
109 ram_ppzksnark_prover<default_tinyram_ppzksnark_pp>(
110 pk, boot_trace, auxiliary_input);
112 std::ofstream proof_file(proof_fn);