75int main(
int argc,
char** argv)
77 std::vector<std::string> args(argv, argv + argc);
79 if (args.size() < 5) {
80 info(
"usage: ", args[0],
"[honk flavor] [circuit type] [srs path] [public inputs]");
84 const std::string flavor = args[1];
85 const std::string circuit_type = args[2];
86 const std::string srs_path = args[3];
87 const std::string string_input = args[4];
95 std::stringstream s_stream(string_input);
96 while (s_stream.good()) {
98 getline(s_stream, sub,
',');
99 if (sub.substr(0, 2) ==
"0x") {
102 std::string padded =
pad_left(sub, 64);
107 if (flavor ==
"honk") {
108 if (circuit_type ==
"blake") {
109 generate_proof<BlakeCircuit, UltraKeccakFlavor>(
inputs);
110 }
else if (circuit_type ==
"add2") {
111 generate_proof<Add2Circuit, UltraKeccakFlavor>(
inputs);
112 }
else if (circuit_type ==
"ecdsa") {
113 generate_proof<EcdsaCircuit, UltraKeccakFlavor>(
inputs);
114 }
else if (circuit_type ==
"recursive") {
115 generate_proof<RecursiveCircuit, UltraKeccakFlavor>(
inputs);
117 info(
"Invalid circuit type: " + circuit_type);
121 }
else if (flavor ==
"honk_zk") {
122 if (circuit_type ==
"blake") {
123 generate_proof<BlakeCircuit, UltraKeccakZKFlavor>(
inputs);
124 }
else if (circuit_type ==
"add2") {
125 generate_proof<Add2Circuit, UltraKeccakZKFlavor>(
inputs);
126 }
else if (circuit_type ==
"ecdsa") {
127 generate_proof<EcdsaCircuit, UltraKeccakZKFlavor>(
inputs);
128 }
else if (circuit_type ==
"recursive") {
129 generate_proof<RecursiveCircuit, UltraKeccakZKFlavor>(
inputs);
131 info(
"Invalid circuit type: " + circuit_type);
135 info(
"Only honk flavor allowed");