66int main(
int argc,
char** argv)
68 std::vector<std::string> args(argv, argv + argc);
70 if (args.size() < 5) {
71 info(
"usage: ", args[0],
"[honk flavor] [circuit type] [srs path] [public inputs]");
75 const std::string flavor = args[1];
76 const std::string circuit_type = args[2];
77 const std::string srs_path = args[3];
78 const std::string string_input = args[4];
86 std::stringstream s_stream(string_input);
87 while (s_stream.good()) {
89 getline(s_stream, sub,
',');
90 if (sub.substr(0, 2) ==
"0x") {
93 std::string padded =
pad_left(sub, 64);
98 if (flavor ==
"honk") {
99 if (circuit_type ==
"blake") {
100 generate_proof<BlakeCircuit, UltraKeccakFlavor>(
inputs);
101 }
else if (circuit_type ==
"add2") {
102 generate_proof<Add2Circuit, UltraKeccakFlavor>(
inputs);
103 }
else if (circuit_type ==
"ecdsa") {
104 generate_proof<EcdsaCircuit, UltraKeccakFlavor>(
inputs);
105 }
else if (circuit_type ==
"recursive") {
106 generate_proof<RecursiveCircuit, UltraKeccakFlavor>(
inputs);
108 info(
"Invalid circuit type: " + circuit_type);
112 }
else if (flavor ==
"honk_zk") {
113 if (circuit_type ==
"blake") {
114 generate_proof<BlakeCircuit, UltraKeccakZKFlavor>(
inputs);
115 }
else if (circuit_type ==
"add2") {
116 generate_proof<Add2Circuit, UltraKeccakZKFlavor>(
inputs);
117 }
else if (circuit_type ==
"ecdsa") {
118 generate_proof<EcdsaCircuit, UltraKeccakZKFlavor>(
inputs);
119 }
else if (circuit_type ==
"recursive") {
120 generate_proof<RecursiveCircuit, UltraKeccakZKFlavor>(
inputs);
122 info(
"Invalid circuit type: " + circuit_type);
126 info(
"Only honk flavor allowed");
FixedVKAndHash_< PrecomputedEntities< Commitment >, BF, ECCVMHardcodedVKAndHash > VerificationKey
The verification key stores commitments to the precomputed polynomials used by the verifier.