Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
test_bench_shared.hpp
Go to the documentation of this file.
7
8namespace bb {
9
14 std::vector<Chonk::CircuitVerificationKey> per_circuit_vks;
15};
16
18 PrivateFunctionExecutionMockCircuitProducer& circuit_producer, const PrecomputedVks& precomputed_vks)
19{
20 const size_t NUM_CIRCUITS = circuit_producer.total_num_circuits;
21 Chonk ivc{ circuit_producer.circuit_kinds() };
22
24 precomputed_vks.per_circuit_vks.size(), NUM_CIRCUITS, "There should be a precomputed VK for each circuit");
25
26 for (size_t circuit_idx = 0; circuit_idx < NUM_CIRCUITS; ++circuit_idx) {
27 MegaCircuitBuilder circuit;
28 {
29 BB_BENCH_NAME("construct_circuits");
30 circuit = circuit_producer.create_next_circuit(ivc);
31 }
32 ivc.accumulate(circuit, precomputed_vks.per_circuit_vks[circuit_idx]);
33 }
34 return { ivc.prove(), ivc.get_hiding_kernel_vk_and_hash() };
35}
36
43 size_t num_app_circuits, const PrecomputedVks& precomputed_vks, const bool large_first_app = true)
44{
45 PrivateFunctionExecutionMockCircuitProducer circuit_producer(num_app_circuits, large_first_app);
46 return accumulate_and_prove_with_precomputed_vks(circuit_producer, precomputed_vks);
47}
48
50 std::vector<bool> leading_is_kernel_flags,
51 const PrecomputedVks& precomputed_vks,
52 const bool large_first_app = false)
53{
54 PrivateFunctionExecutionMockCircuitProducer circuit_producer(std::move(leading_is_kernel_flags), large_first_app);
55 return accumulate_and_prove_with_precomputed_vks(circuit_producer, precomputed_vks);
56}
57
58inline PrecomputedVks precompute_vks(PrivateFunctionExecutionMockCircuitProducer& circuit_producer)
59{
60 const size_t NUM_CIRCUITS = circuit_producer.total_num_circuits;
61 Chonk ivc{ circuit_producer.circuit_kinds() };
62
64 out.per_circuit_vks.reserve(NUM_CIRCUITS);
65 for (size_t j = 0; j < NUM_CIRCUITS; ++j) {
66 auto circuit = circuit_producer.create_next_circuit(ivc);
67
69 using FlavorT = flavor_for<K>;
70 using VK = typename FlavorT::VerificationKey;
71 MegaCircuitBuilder_<bb::fr> builder{ circuit };
72 builder.op_queue = std::make_shared<ECCOpQueue>(*builder.op_queue);
74 ProverInstance_<FlavorT>(builder).get_precomputed()) };
75 });
76
77 out.per_circuit_vks.push_back(vk);
78 ivc.accumulate(circuit, vk);
79 }
80
81 return out;
82}
83
84inline PrecomputedVks precompute_vks(const size_t num_app_circuits, const bool large_first_app = true)
85{
86 PrivateFunctionExecutionMockCircuitProducer circuit_producer(num_app_circuits, large_first_app);
87 return precompute_vks(circuit_producer);
88}
89
90inline PrecomputedVks precompute_vks(std::vector<bool> leading_is_kernel_flags, const bool large_first_app = false)
91{
92 PrivateFunctionExecutionMockCircuitProducer circuit_producer(std::move(leading_is_kernel_flags), large_first_app);
93 return precompute_vks(circuit_producer);
94}
95
96} // namespace bb
#define BB_ASSERT_EQ(actual, expected,...)
Definition assert.hpp:83
#define BB_BENCH_NAME(name)
Definition bb_bench.hpp:264
The IVC scheme used by the aztec client for private function execution.
Definition chonk.hpp:42
std::vector< CircuitKind > circuit_kinds
Definition chonk.hpp:159
bb::CircuitVerificationKey CircuitVerificationKey
Definition chonk.hpp:101
Contains all the information required by a Honk prover to create a proof, constructed from a finalize...
AluTraceBuilder builder
Definition alu.test.cpp:124
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
std::pair< ChonkProof, std::shared_ptr< MegaZKFlavor::VKAndHash > > accumulate_and_prove_with_precomputed_vks(PrivateFunctionExecutionMockCircuitProducer &circuit_producer, const PrecomputedVks &precomputed_vks)
PrecomputedVks precompute_vks(PrivateFunctionExecutionMockCircuitProducer &circuit_producer)
constexpr decltype(auto) dispatch_kind(CircuitKind kind, F &&f)
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
bb::VectorAffineElementPushSpan< BaseParams > out
Bundle of precomputed VKs returned by precompute_vks.
std::vector< Chonk::CircuitVerificationKey > per_circuit_vks