22 size_t num_app_circuits,
auto& precomputed_vks,
const bool large_first_app =
true)
24 PrivateFunctionExecutionMockCircuitProducer circuit_producer(num_app_circuits, large_first_app);
25 const size_t NUM_CIRCUITS = circuit_producer.total_num_circuits;
27 ClientIVC ivc{ NUM_CIRCUITS, trace_settings };
29 BB_ASSERT_EQ(precomputed_vks.size(), NUM_CIRCUITS,
"There should be a precomputed VK for each circuit");
31 for (
size_t circuit_idx = 0; circuit_idx < NUM_CIRCUITS; ++circuit_idx) {
35 circuit = circuit_producer.create_next_circuit(ivc);
38 ivc.accumulate(circuit, precomputed_vks[circuit_idx]);
40 return { ivc.prove(), ivc.get_vk() };
44 const bool large_first_app =
true)
46 using CircuitProducer = PrivateFunctionExecutionMockCircuitProducer;
47 CircuitProducer circuit_producer(num_app_circuits, large_first_app);
48 const size_t NUM_CIRCUITS = circuit_producer.total_num_circuits;
50 ClientIVC ivc{ NUM_CIRCUITS, trace_settings };
53 for (
size_t j = 0; j < NUM_CIRCUITS; ++j) {
55 auto circuit = circuit_producer.create_next_circuit(ivc);
58 if (j == NUM_CIRCUITS - 1) {
61 auto vk = CircuitProducer::get_verification_key(circuit, trace_settings);
63 ivc.accumulate(circuit,
vk);
#define BB_ASSERT_EQ(actual, expected,...)
#define BB_BENCH_NAME(name)
The IVC scheme used by the aztec client for private function execution.
Entry point for Barretenberg command-line interface.
std::pair< SumcheckClientIVC::Proof, SumcheckClientIVC::VerificationKey > accumulate_and_prove_ivc_with_precomputed_vks(size_t num_app_circuits, auto &precomputed_vks, const bool large_first_app=true)
Perform a specified number of circuit accumulation rounds.
std::vector< std::shared_ptr< typename MegaFlavor::VerificationKey > > precompute_vks(const size_t num_app_circuits, const bool large_first_app=true)
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept