73int main(
int argc,
char** argv)
75 std::vector<std::string> args(argv, argv + argc);
77 if (args.size() < 5) {
78 info(
"usage: ", args[0],
"[honk flavor] [circuit type] [srs path] [public inputs]");
82 const std::string flavor = args[1];
83 const std::string circuit_type = args[2];
84 const std::string srs_path = args[3];
85 const std::string string_input = args[4];
93 std::stringstream s_stream(string_input);
94 while (s_stream.good()) {
96 getline(s_stream, sub,
',');
97 if (sub.substr(0, 2) ==
"0x") {
100 std::string padded =
pad_left(sub, 64);
105 if (flavor ==
"honk") {
106 if (circuit_type ==
"blake") {
107 generate_proof<BlakeCircuit, UltraKeccakFlavor>(
inputs);
108 }
else if (circuit_type ==
"add2") {
109 generate_proof<Add2Circuit, UltraKeccakFlavor>(
inputs);
110 }
else if (circuit_type ==
"ecdsa") {
111 generate_proof<EcdsaCircuit, UltraKeccakFlavor>(
inputs);
112 }
else if (circuit_type ==
"recursive") {
113 generate_proof<RecursiveCircuit, UltraKeccakFlavor>(
inputs);
115 info(
"Invalid circuit type: " + circuit_type);
119 }
else if (flavor ==
"honk_zk") {
120 if (circuit_type ==
"blake") {
121 generate_proof<BlakeCircuit, UltraKeccakZKFlavor>(
inputs);
122 }
else if (circuit_type ==
"add2") {
123 generate_proof<Add2Circuit, UltraKeccakZKFlavor>(
inputs);
124 }
else if (circuit_type ==
"ecdsa") {
125 generate_proof<EcdsaCircuit, UltraKeccakZKFlavor>(
inputs);
126 }
else if (circuit_type ==
"recursive") {
127 generate_proof<RecursiveCircuit, UltraKeccakZKFlavor>(
inputs);
129 info(
"Invalid circuit type: " + circuit_type);
133 info(
"Only honk flavor allowed");