Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
c_bind.cpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
7#include "c_bind.hpp"
8#include "../acir_format/acir_to_constraint_buf.hpp"
17
20#include "honk_contract.hpp"
21#include <cstdint>
22#include <memory>
23
24WASM_EXPORT void acir_get_circuit_sizes(uint8_t const* acir_vec,
25 bool const* has_ipa_claim,
26 uint32_t* total,
27 uint32_t* subgroup)
28{
29 const acir_format::ProgramMetadata metadata{ .has_ipa_claim = *has_ipa_claim, .size_hint = 1 << 19 };
31 from_buffer<std::vector<uint8_t>>(acir_vec)) };
32 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program, metadata);
33 builder.finalize_circuit(/*ensure_nonzero=*/true);
34 *total = htonl((uint32_t)builder.get_finalized_total_circuit_size());
35 *subgroup = htonl((uint32_t)builder.get_circuit_subgroup_size(builder.get_finalized_total_circuit_size()));
36}
37
38WASM_EXPORT void acir_prove_and_verify_ultra_honk(uint8_t const* acir_vec, uint8_t const* witness_vec, bool* result)
39{
41 acir_format::circuit_buf_to_acir_format(from_buffer<std::vector<uint8_t>>(acir_vec)),
42 acir_format::witness_buf_to_witness_vector(from_buffer<std::vector<uint8_t>>(witness_vec))
43 };
44
45 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
46
48 auto verification_key = std::make_shared<UltraFlavor::VerificationKey>(prover_instance->get_precomputed());
49 UltraProver prover{ prover_instance, verification_key };
50 auto proof = prover.construct_proof();
51
52 UltraVerifier verifier{ verification_key };
53
54 *result = verifier.template verify_proof<DefaultIO>(proof).result;
55 info("verified: ", *result);
56}
57
58WASM_EXPORT void acir_prove_and_verify_mega_honk(uint8_t const* acir_vec, uint8_t const* witness_vec, bool* result)
59{
61 acir_format::circuit_buf_to_acir_format(from_buffer<std::vector<uint8_t>>(acir_vec)),
62 acir_format::witness_buf_to_witness_vector(from_buffer<std::vector<uint8_t>>(witness_vec))
63 };
64
65 auto builder = acir_format::create_circuit<MegaCircuitBuilder>(program);
66
68 auto verification_key = std::make_shared<MegaFlavor::VerificationKey>(prover_instance->get_precomputed());
69 MegaProver prover{ prover_instance, verification_key };
70 auto proof = prover.construct_proof();
71
72 MegaVerifier verifier{ verification_key };
73
74 *result = verifier.template verify_proof<DefaultIO>(proof).result;
75}
76
77WASM_EXPORT void acir_prove_aztec_client(uint8_t const* ivc_inputs_buf, uint8_t** out_proof, uint8_t** out_vk)
78{
79 auto ivc_inputs_vec = from_buffer<std::vector<uint8_t>>(ivc_inputs_buf);
80 // Accumulate the entire program stack into the IVC
81 auto start = std::chrono::steady_clock::now();
85 auto end = std::chrono::steady_clock::now();
86 auto diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
87 vinfo("time to construct and accumulate all circuits: ", diff.count());
88
89 vinfo("calling ivc.prove ...");
90 Chonk::Proof proof = ivc->prove();
91 end = std::chrono::steady_clock::now();
92
93 diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
94 vinfo("time to construct, accumulate, prove all circuits: ", diff.count());
95
96 start = std::chrono::steady_clock::now();
97 *out_proof = proof.to_msgpack_heap_buffer();
98 end = std::chrono::steady_clock::now();
99 diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
100 vinfo("time to serialize proof: ", diff.count());
101
102 start = std::chrono::steady_clock::now();
103 *out_vk = to_heap_buffer(to_buffer(ivc->get_vk()));
104 end = std::chrono::steady_clock::now();
105 diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
106 vinfo("time to serialize vk: ", diff.count());
107}
108
109WASM_EXPORT void acir_verify_aztec_client(uint8_t const* proof_buf, uint8_t const* vk_buf, bool* result)
110{
111 const auto proof = Chonk::Proof::from_msgpack_buffer(proof_buf);
112 const auto vk = from_buffer<Chonk::VerificationKey>(from_buffer<std::vector<uint8_t>>(vk_buf));
113
114 *result = Chonk::verify(proof, vk);
115}
116
117WASM_EXPORT void acir_prove_ultra_zk_honk(uint8_t const* acir_vec,
118 uint8_t const* witness_vec,
119 uint8_t const* vk_buf,
120 uint8_t** out)
121{
122 // Lambda function to ensure things get freed before proving.
123 UltraZKProver prover = [&] {
125 acir_format::circuit_buf_to_acir_format(from_buffer<std::vector<uint8_t>>(acir_vec)),
126 acir_format::witness_buf_to_witness_vector(from_buffer<std::vector<uint8_t>>(witness_vec))
127 };
128 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
130 auto verification_key =
131 std::make_shared<UltraZKFlavor::VerificationKey>(from_buffer<UltraZKFlavor::VerificationKey>(vk_buf));
132
133 return UltraZKProver(prover_instance, verification_key);
134 }();
135
136 auto proof = prover.construct_proof();
137 *out = to_heap_buffer(to_buffer(proof));
138}
139
140WASM_EXPORT void acir_prove_ultra_keccak_honk(uint8_t const* acir_vec,
141 uint8_t const* witness_vec,
142 uint8_t const* vk_buf,
143 uint8_t** out)
144{
145 // Lambda function to ensure things get freed before proving.
146 UltraKeccakProver prover = [&] {
148 acir_format::circuit_buf_to_acir_format(from_buffer<std::vector<uint8_t>>(acir_vec)),
149 acir_format::witness_buf_to_witness_vector(from_buffer<std::vector<uint8_t>>(witness_vec))
150 };
151 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
152
155 from_buffer<UltraKeccakFlavor::VerificationKey>(vk_buf));
156 return UltraKeccakProver(prover_instance, verification_key);
157 }();
158 auto proof = prover.construct_proof();
159 *out = to_heap_buffer(to_buffer(proof));
160}
161
162WASM_EXPORT void acir_prove_ultra_keccak_zk_honk(uint8_t const* acir_vec,
163 uint8_t const* witness_vec,
164 uint8_t const* vk_buf,
165 uint8_t** out)
166{
167 // Lambda function to ensure things get freed before proving.
168 UltraKeccakZKProver prover = [&] {
170 acir_format::circuit_buf_to_acir_format(from_buffer<std::vector<uint8_t>>(acir_vec)),
171 acir_format::witness_buf_to_witness_vector(from_buffer<std::vector<uint8_t>>(witness_vec))
172 };
173 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
174
177 from_buffer<UltraKeccakZKFlavor::VerificationKey>(vk_buf));
178 return UltraKeccakZKProver(prover_instance, verification_key);
179 }();
180 auto proof = prover.construct_proof();
181 *out = to_heap_buffer(to_buffer(proof));
182}
183
184WASM_EXPORT void acir_prove_ultra_starknet_honk([[maybe_unused]] uint8_t const* acir_vec,
185 [[maybe_unused]] uint8_t const* witness_vec,
186 [[maybe_unused]] uint8_t const* vk_buf,
187 [[maybe_unused]] uint8_t** out)
188{
189#ifdef STARKNET_GARAGA_FLAVORS
190 // Lambda function to ensure things get freed before proving.
191 UltraStarknetProver prover = [&] {
193 acir_format::circuit_buf_to_acir_format(from_buffer<std::vector<uint8_t>>(acir_vec)),
194 acir_format::witness_buf_to_witness_vector(from_buffer<std::vector<uint8_t>>(witness_vec))
195 };
196 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
197
198 return UltraStarknetProver(builder);
199 }();
200 auto proof = prover.construct_proof();
201 *out = to_heap_buffer(to_buffer(proof));
202#else
203 throw_or_abort("bb wasm was not compiled with starknet garaga flavors!");
204#endif
205}
206
207WASM_EXPORT void acir_prove_ultra_starknet_zk_honk([[maybe_unused]] uint8_t const* acir_vec,
208 [[maybe_unused]] uint8_t const* witness_vec,
209 [[maybe_unused]] uint8_t const* vk_buf,
210 [[maybe_unused]] uint8_t** out)
211{
212#ifdef STARKNET_GARAGA_FLAVORS
213 // Lambda function to ensure things get freed before proving.
214 UltraStarknetZKProver prover = [&] {
216 acir_format::circuit_buf_to_acir_format(from_buffer<std::vector<uint8_t>>(acir_vec)),
217 acir_format::witness_buf_to_witness_vector(from_buffer<std::vector<uint8_t>>(witness_vec))
218 };
219 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
220
221 return UltraStarknetZKProver(builder);
222 }();
223 auto proof = prover.construct_proof();
224 *out = to_heap_buffer(to_buffer(proof));
225#else
226 throw_or_abort("bb wasm was not compiled with starknet garaga flavors!");
227#endif
228}
229
230WASM_EXPORT void acir_verify_ultra_zk_honk(uint8_t const* proof_buf, uint8_t const* vk_buf, bool* result)
231{
232 using VerificationKey = UltraZKFlavor::VerificationKey;
233 using Verifier = UltraVerifier_<UltraZKFlavor>;
234
235 auto proof = many_from_buffer<bb::fr>(from_buffer<std::vector<uint8_t>>(proof_buf));
236 auto verification_key = std::make_shared<VerificationKey>(from_buffer<VerificationKey>(vk_buf));
237
238 Verifier verifier{ verification_key };
239
240 *result = verifier.template verify_proof<DefaultIO>(proof).result;
241}
242
243WASM_EXPORT void acir_verify_ultra_keccak_honk(uint8_t const* proof_buf, uint8_t const* vk_buf, bool* result)
244{
245 using VerificationKey = UltraKeccakFlavor::VerificationKey;
246 using Verifier = UltraVerifier_<UltraKeccakFlavor>;
247
248 auto proof = many_from_buffer<uint256_t>(from_buffer<std::vector<uint8_t>>(proof_buf));
249 auto verification_key = std::make_shared<VerificationKey>(from_buffer<VerificationKey>(vk_buf));
250
251 Verifier verifier{ verification_key };
252
253 *result = verifier.template verify_proof<DefaultIO>(proof).result;
254}
255
256WASM_EXPORT void acir_verify_ultra_keccak_zk_honk(uint8_t const* proof_buf, uint8_t const* vk_buf, bool* result)
257{
258 using VerificationKey = UltraKeccakZKFlavor::VerificationKey;
260
261 auto proof = many_from_buffer<uint256_t>(from_buffer<std::vector<uint8_t>>(proof_buf));
262 auto verification_key = std::make_shared<VerificationKey>(from_buffer<VerificationKey>(vk_buf));
263
264 Verifier verifier{ verification_key };
265
266 *result = verifier.template verify_proof<DefaultIO>(proof).result;
267}
268
269WASM_EXPORT void acir_verify_ultra_starknet_honk([[maybe_unused]] uint8_t const* proof_buf,
270 [[maybe_unused]] uint8_t const* vk_buf,
271 [[maybe_unused]] bool* result)
272{
273#ifdef STARKNET_GARAGA_FLAVORS
274 using VerificationKey = UltraStarknetFlavor::VerificationKey;
276
277 auto proof = from_buffer<std::vector<bb::fr>>(from_buffer<std::vector<uint8_t>>(proof_buf));
278 auto verification_key = std::make_shared<VerificationKey>(from_buffer<VerificationKey>(vk_buf));
279
280 Verifier verifier{ verification_key };
281
282 *result = verifier.template verify_proof<DefaultIO>(proof).result;
283 ;
284#else
285 throw_or_abort("bb wasm was not compiled with starknet garaga flavors!");
286#endif
287}
288
289WASM_EXPORT void acir_verify_ultra_starknet_zk_honk([[maybe_unused]] uint8_t const* proof_buf,
290 [[maybe_unused]] uint8_t const* vk_buf,
291 [[maybe_unused]] bool* result)
292{
293#ifdef STARKNET_GARAGA_FLAVORS
294 using VerificationKey = UltraStarknetZKFlavor::VerificationKey;
296
297 auto proof = many_from_buffer<bb::fr>(from_buffer<std::vector<uint8_t>>(proof_buf));
298 auto verification_key = std::make_shared<VerificationKey>(from_buffer<VerificationKey>(vk_buf));
299
300 Verifier verifier{ verification_key };
301
302 *result = verifier.template verify_proof<DefaultIO>(proof).result;
303#else
304 throw_or_abort("bb wasm was not compiled with starknet garaga flavors!");
305#endif
306}
307
308WASM_EXPORT void acir_write_vk_ultra_honk(uint8_t const* acir_vec, uint8_t** out)
309{
312 // lambda to free the builder
313 ProverInstance prover_instance = [&] {
315 from_buffer<std::vector<uint8_t>>(acir_vec)) };
316 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
317 return ProverInstance(builder);
318 }();
319 VerificationKey vk(prover_instance.get_precomputed());
320 vinfo("Constructed UltraHonk verification key");
321 *out = to_heap_buffer(to_buffer(vk));
322}
323
324WASM_EXPORT void acir_write_vk_ultra_keccak_honk(uint8_t const* acir_vec, uint8_t** out)
325{
327 using VerificationKey = UltraKeccakFlavor::VerificationKey;
328
329 // lambda to free the builder
330 ProverInstance prover_instance = [&] {
332 from_buffer<std::vector<uint8_t>>(acir_vec)) };
333 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
334 return ProverInstance(builder);
335 }();
336 VerificationKey vk(prover_instance.get_precomputed());
337 vinfo("Constructed UltraKeccakHonk verification key");
338 *out = to_heap_buffer(to_buffer(vk));
339}
340
341WASM_EXPORT void acir_write_vk_ultra_keccak_zk_honk(uint8_t const* acir_vec, uint8_t** out)
342{
344 using VerificationKey = UltraKeccakZKFlavor::VerificationKey;
345
346 // lambda to free the builder
347 ProverInstance prover_instance = [&] {
349 from_buffer<std::vector<uint8_t>>(acir_vec)) };
350 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
351 return ProverInstance(builder);
352 }();
353 VerificationKey vk(prover_instance.get_precomputed());
354 vinfo("Constructed UltraKeccakZKHonk verification key");
355 *out = to_heap_buffer(to_buffer(vk));
356}
357
358WASM_EXPORT void acir_write_vk_ultra_starknet_honk([[maybe_unused]] uint8_t const* acir_vec,
359 [[maybe_unused]] uint8_t** out)
360{
361#ifdef STARKNET_GARAGA_FLAVORS
363 using VerificationKey = UltraStarknetFlavor::VerificationKey;
364
365 // lambda to free the builder
366 ProverInstance prover_instance = [&] {
368 from_buffer<std::vector<uint8_t>>(acir_vec)) };
369 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
370 return ProverInstance(builder);
371 }();
372 VerificationKey vk(prover_instance.get_precomputed());
373 vinfo("Constructed UltraStarknetHonk verification key");
374 *out = to_heap_buffer(to_buffer(vk));
375#else
376 throw_or_abort("bb wasm was not compiled with starknet garaga flavors!");
377#endif
378}
379
380WASM_EXPORT void acir_write_vk_ultra_starknet_zk_honk([[maybe_unused]] uint8_t const* acir_vec,
381 [[maybe_unused]] uint8_t** out)
382{
383#ifdef STARKNET_GARAGA_FLAVORS
385 using VerificationKey = UltraStarknetZKFlavor::VerificationKey;
386
387 // lambda to free the builder
388 ProverInstance prover_instance = [&] {
390 from_buffer<std::vector<uint8_t>>(acir_vec)) };
391 auto builder = acir_format::create_circuit<UltraCircuitBuilder>(program);
392 return ProverInstance(builder);
393 }();
394 VerificationKey vk(prover_instance.get_precomputed());
395 vinfo("Constructed UltraStarknetZKHonk verification key");
396 *out = to_heap_buffer(to_buffer(vk));
397#else
398 throw_or_abort("bb wasm was not compiled with starknet garaga flavors!");
399#endif
400}
401
402WASM_EXPORT void acir_honk_solidity_verifier(uint8_t const* proof_buf, uint8_t const* vk_buf, uint8_t** out)
403{
404 using VerificationKey = UltraKeccakFlavor::VerificationKey;
405
406 auto proof = many_from_buffer<bb::fr>(from_buffer<std::vector<uint8_t>>(proof_buf));
407 auto verification_key = from_buffer<VerificationKey>(vk_buf);
408
409 auto str = get_honk_solidity_verifier(&verification_key);
410 *out = to_heap_buffer(str);
411}
412
414{
415 auto proof = many_from_buffer<bb::fr>(from_buffer<std::vector<uint8_t>>(proof_buf));
416 *out = to_heap_buffer(proof);
417}
418
419WASM_EXPORT void acir_vk_as_fields_ultra_honk(uint8_t const* vk_buf, fr::vec_out_buf out_vkey)
420{
422
423 auto verification_key = std::make_shared<VerificationKey>(from_buffer<VerificationKey>(vk_buf));
424 std::vector<bb::fr> vkey_as_fields = verification_key->to_field_elements();
425 *out_vkey = to_heap_buffer(vkey_as_fields);
426}
427
428WASM_EXPORT void acir_vk_as_fields_mega_honk(uint8_t const* vk_buf, fr::vec_out_buf out_vkey)
429{
431
432 auto verification_key = std::make_shared<VerificationKey>(from_buffer<VerificationKey>(vk_buf));
433 std::vector<bb::fr> vkey_as_fields = verification_key->to_field_elements();
434 *out_vkey = to_heap_buffer(vkey_as_fields);
435}
436
437WASM_EXPORT void acir_gates_aztec_client(uint8_t const* ivc_inputs_buf, uint8_t** out)
438{
439 auto ivc_inputs_vec = from_buffer<std::vector<uint8_t>>(ivc_inputs_buf);
440 // Note: we parse a stack, but only 'bytecode' needs to be set.
441 auto raw_steps = PrivateExecutionStepRaw::parse_uncompressed(ivc_inputs_vec);
442 std::vector<uint32_t> totals;
443
444 auto ivc = std::make_shared<Chonk>(/*num_circuits=*/raw_steps.size());
445 const acir_format::ProgramMetadata metadata{ ivc };
446
447 for (const PrivateExecutionStepRaw& step : raw_steps) {
448 std::vector<uint8_t> bytecode_vec(step.bytecode.begin(), step.bytecode.end());
449 const acir_format::AcirFormat constraint_system =
451
452 // Create an acir program from the constraint system
453 acir_format::AcirProgram program{ constraint_system };
454
455 auto builder = acir_format::create_circuit<MegaCircuitBuilder>(program);
456 builder.finalize_circuit(/*ensure_nonzero=*/true);
457 totals.push_back(static_cast<uint32_t>(builder.num_gates()));
458 }
459
460 *out = to_heap_buffer(to_buffer(totals));
461}
static bool verify(const Proof &proof, const VerificationKey &vk)
Definition chonk.cpp:528
The verification key is responsible for storing the commitments to the precomputed (non-witness) poly...
A ProverInstance is normally constructed from a finalized circuit and it contains all the information...
Flavor::PrecomputedData get_precomputed()
The verification key is responsible for storing the commitments to the precomputed (non-witnessk) pol...
#define vinfo(...)
Definition log.hpp:80
void info(Args... args)
Definition log.hpp:75
AluTraceBuilder builder
Definition alu.test.cpp:124
WASM_EXPORT void acir_prove_aztec_client(uint8_t const *ivc_inputs_buf, uint8_t **out_proof, uint8_t **out_vk)
Definition c_bind.cpp:77
WASM_EXPORT void acir_get_circuit_sizes(uint8_t const *acir_vec, bool const *has_ipa_claim, uint32_t *total, uint32_t *subgroup)
Definition c_bind.cpp:24
WASM_EXPORT void acir_prove_ultra_starknet_honk(uint8_t const *acir_vec, uint8_t const *witness_vec, uint8_t const *vk_buf, uint8_t **out)
Definition c_bind.cpp:184
WASM_EXPORT void acir_honk_solidity_verifier(uint8_t const *proof_buf, uint8_t const *vk_buf, uint8_t **out)
Definition c_bind.cpp:402
WASM_EXPORT void acir_verify_ultra_keccak_zk_honk(uint8_t const *proof_buf, uint8_t const *vk_buf, bool *result)
Definition c_bind.cpp:256
WASM_EXPORT void acir_gates_aztec_client(uint8_t const *ivc_inputs_buf, uint8_t **out)
Definition c_bind.cpp:437
WASM_EXPORT void acir_prove_ultra_keccak_honk(uint8_t const *acir_vec, uint8_t const *witness_vec, uint8_t const *vk_buf, uint8_t **out)
Definition c_bind.cpp:140
WASM_EXPORT void acir_verify_ultra_starknet_zk_honk(uint8_t const *proof_buf, uint8_t const *vk_buf, bool *result)
Definition c_bind.cpp:289
WASM_EXPORT void acir_write_vk_ultra_starknet_zk_honk(uint8_t const *acir_vec, uint8_t **out)
Definition c_bind.cpp:380
WASM_EXPORT void acir_prove_ultra_zk_honk(uint8_t const *acir_vec, uint8_t const *witness_vec, uint8_t const *vk_buf, uint8_t **out)
Definition c_bind.cpp:117
WASM_EXPORT void acir_prove_and_verify_ultra_honk(uint8_t const *acir_vec, uint8_t const *witness_vec, bool *result)
Construct and verify an UltraHonk proof.
Definition c_bind.cpp:38
WASM_EXPORT void acir_vk_as_fields_mega_honk(uint8_t const *vk_buf, fr::vec_out_buf out_vkey)
Definition c_bind.cpp:428
WASM_EXPORT void acir_write_vk_ultra_keccak_zk_honk(uint8_t const *acir_vec, uint8_t **out)
Definition c_bind.cpp:341
WASM_EXPORT void acir_prove_ultra_starknet_zk_honk(uint8_t const *acir_vec, uint8_t const *witness_vec, uint8_t const *vk_buf, uint8_t **out)
Definition c_bind.cpp:207
WASM_EXPORT void acir_verify_ultra_zk_honk(uint8_t const *proof_buf, uint8_t const *vk_buf, bool *result)
Definition c_bind.cpp:230
WASM_EXPORT void acir_verify_ultra_starknet_honk(uint8_t const *proof_buf, uint8_t const *vk_buf, bool *result)
Definition c_bind.cpp:269
WASM_EXPORT void acir_proof_as_fields_ultra_honk(uint8_t const *proof_buf, fr::vec_out_buf out)
Definition c_bind.cpp:413
WASM_EXPORT void acir_write_vk_ultra_keccak_honk(uint8_t const *acir_vec, uint8_t **out)
Definition c_bind.cpp:324
WASM_EXPORT void acir_prove_ultra_keccak_zk_honk(uint8_t const *acir_vec, uint8_t const *witness_vec, uint8_t const *vk_buf, uint8_t **out)
Definition c_bind.cpp:162
WASM_EXPORT void acir_verify_ultra_keccak_honk(uint8_t const *proof_buf, uint8_t const *vk_buf, bool *result)
Definition c_bind.cpp:243
WASM_EXPORT void acir_prove_and_verify_mega_honk(uint8_t const *acir_vec, uint8_t const *witness_vec, bool *result)
Construct and verify a Chonk proof.
Definition c_bind.cpp:58
WASM_EXPORT void acir_write_vk_ultra_honk(uint8_t const *acir_vec, uint8_t **out)
Definition c_bind.cpp:308
WASM_EXPORT void acir_verify_aztec_client(uint8_t const *proof_buf, uint8_t const *vk_buf, bool *result)
Definition c_bind.cpp:109
WASM_EXPORT void acir_write_vk_ultra_starknet_honk(uint8_t const *acir_vec, uint8_t **out)
Definition c_bind.cpp:358
WASM_EXPORT void acir_vk_as_fields_ultra_honk(uint8_t const *vk_buf, fr::vec_out_buf out_vkey)
Definition c_bind.cpp:419
std::string get_honk_solidity_verifier(auto const &verification_key)
UltraKeccakFlavor::VerificationKey VerificationKey
ProverInstance_< UltraKeccakFlavor > ProverInstance
WitnessVector witness_buf_to_witness_vector(std::vector< uint8_t > &&buf)
Convert a buffer representing a witness vector into Barretenberg's internal WitnessVector format.
AcirFormat circuit_buf_to_acir_format(std::vector< uint8_t > &&buf)
Convert a buffer representing a circuit into Barretenberg's internal AcirFormat representation.
UltraProver_< UltraKeccakFlavor > UltraKeccakProver
UltraProver_< UltraKeccakZKFlavor > UltraKeccakZKProver
UltraProver_< UltraZKFlavor > UltraZKProver
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
T from_buffer(B const &buffer, size_t offset=0)
std::vector< uint8_t > to_buffer(T const &value)
uint8_t * to_heap_buffer(T const &value)
A full proof for the IVC scheme containing a Mega proof showing correctness of the Hiding kernel (whi...
Definition chonk.hpp:91
static Proof from_msgpack_buffer(uint8_t const *&buffer)
Definition chonk.cpp:623
uint8_t * to_msgpack_heap_buffer() const
Very quirky method to convert a msgpack buffer to a "heap" buffer.
Definition chonk.cpp:615
This is the msgpack encoding of the objects returned by the following typescript: const stepToStruct ...
static std::vector< PrivateExecutionStepRaw > parse_uncompressed(const std::vector< uint8_t > &buf)
std::shared_ptr< Chonk > accumulate()
void parse(std::vector< PrivateExecutionStepRaw > &&steps)
uint8_t ** vec_out_buf
void throw_or_abort(std::string const &err)
#define WASM_EXPORT