Zeth - Zerocash on Ethereum  0.8
Reference implementation of the Zeth protocol by Clearmatics
dump_proof_cmd.cpp
Go to the documentation of this file.
1 // Copyright (c) 2015-2022 Clearmatics Technologies Ltd
2 //
3 // SPDX-License-Identifier: LGPL-3.0+
4 
6 
7 #include "libtool/tool_util.hpp"
10 
11 namespace zethtool
12 {
13 
14 namespace commands
15 {
16 
17 class dump_proof_cmd : public generic_subcommand<dump_proof_cmd>
18 {
19 public:
21 
23  const std::string &subcommand_name, const std::string &description)
25  {
26  }
27 
28  template<typename ppT, typename snarkT>
30  {
31  ppT::init_public_params();
32  libff::inhibit_profiling_info = true;
33  libff::inhibit_profiling_counters = true;
34 
35  typename snarkT::proof proof;
36  {
37  std::ifstream in_s = libtool::open_binary_input_file(proof_file);
38  snarkT::proof_read_bytes(proof, in_s);
39  }
40 
41  snarkT::proof_write_json(proof, std::cout);
42  std::cout << "\n";
43  return 0;
44  };
45 
46 protected:
48  boost::program_options::options_description &options,
49  boost::program_options::options_description &all_options,
50  boost::program_options::positional_options_description &pos) override
51  {
52  base_class::initialize_suboptions(options, all_options, pos);
53 
54  all_options.add(options).add_options()(
55  "proof_file", po::value<std::string>(), "(Output) Proof file");
56  pos.add("proof_file", 1);
57  }
58 
60  const boost::program_options::variables_map &vm) override
61  {
63 
64  if (vm.count("proof_file") == 0) {
65  throw po::error("proof_file not specified");
66  }
67  proof_file = vm["proof_file"].as<std::string>();
68  }
69 
70  void subcommand_usage(const char *argv0) override
71  {
72  std::cout << "Usage:\n " << argv0 << " dump-proof [proof_file]\n";
73  }
74 
75  std::string proof_file;
76 };
77 
78 } // namespace commands
79 
81  new commands::dump_proof_cmd("dump-proof", "Print an existing proof");
82 
83 } // namespace zethtool
zethtool::commands::dump_proof_cmd
Definition: dump_proof_cmd.cpp:17
zethtool::generic_subcommand< dump_proof_cmd >::parse_suboptions
void parse_suboptions(const boost::program_options::variables_map &vm) override
Definition: tool_common.hpp:111
libtool::subcommand::description
const std::string & description() const
commands
Definition: __init__.py:1
zethtool::commands::dump_proof_cmd::proof_file
std::string proof_file
Definition: dump_proof_cmd.cpp:75
zethtool::generic_subcommand< dump_proof_cmd >::initialize_suboptions
void initialize_suboptions(boost::program_options::options_description &options, boost::program_options::options_description &, boost::program_options::positional_options_description &) override
Definition: tool_common.hpp:97
tool_util.hpp
zethtool::commands::dump_proof_cmd::initialize_suboptions
void initialize_suboptions(boost::program_options::options_description &options, boost::program_options::options_description &all_options, boost::program_options::positional_options_description &pos) override
Instantiation can now set up the boost program_options structures.
Definition: dump_proof_cmd.cpp:47
zethtool::generic_subcommand
Definition: tool_common.hpp:87
zethtool::commands::dump_proof_cmd::execute_generic
int execute_generic(const global_options &)
Definition: dump_proof_cmd.cpp:29
zethtool::commands::dump_proof_cmd::parse_suboptions
void parse_suboptions(const boost::program_options::variables_map &vm) override
Definition: dump_proof_cmd.cpp:59
global_options
Definition: mpc_subcommand.hpp:15
zethtool::dump_proof_cmd
zeth_subcommand * dump_proof_cmd
Definition: dump_proof_cmd.cpp:80
tool_common.hpp
libtool::subcommand::subcommand_name
std::string subcommand_name
Definition: subcommand.hpp:54
libtool::open_binary_input_file
std::ifstream open_binary_input_file(const std::string &filename)
Definition: tool_util.cpp:10
zethtool::commands::dump_proof_cmd::dump_proof_cmd
dump_proof_cmd(const std::string &subcommand_name, const std::string &description)
Definition: dump_proof_cmd.cpp:22
zethtool::commands::dump_proof_cmd::subcommand_usage
void subcommand_usage(const char *argv0) override
Any command-specific output for usage.
Definition: dump_proof_cmd.cpp:70
dump_proof_cmd.hpp
libtool::subcommand
Class representing a tool subcommand.
Definition: subcommand.hpp:18
zethtool
Definition: dump_proof_cmd.cpp:11
r1cs_variable_assignment_serialization.hpp