Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
oink_prover.test.cpp
Go to the documentation of this file.
5
6#include <gtest/gtest.h>
7
8using namespace bb;
9
20
25TEST_F(OinkTests, OinkProverIsDeterministic)
26{
27 Builder circuit;
28 circuit.add_ultra_and_mega_gates_to_ensure_all_polys_are_non_zero(); // Ensure all polys are non-zero
29 auto proving_key = std::make_shared<DeciderProvingKey>(circuit);
30 auto verification_key = std::make_shared<VerificationKey>(proving_key->get_precomputed());
31
32 {
33 // Run OinkProver for the first time
34 OinkProver prover(proving_key, verification_key);
35 prover.prove();
36 }
37
38 // Store data generated by Oink prover
39 auto alphas = proving_key->alphas;
40 auto relation_parameters = proving_key->relation_parameters;
41 auto gate_challenges = proving_key->gate_challenges;
42 auto w4 = proving_key->polynomials.w_4;
43 auto lookup_read_counts = proving_key->polynomials.lookup_read_counts;
44 auto lookup_read_tag = proving_key->polynomials.lookup_read_tags;
45 auto lookup_inverse = proving_key->polynomials.lookup_inverses;
46 auto z_perm = proving_key->polynomials.z_perm;
47 auto databus_inverses = proving_key->polynomials.get_databus_inverses().get_copy();
48
49 {
50 // Run OinkProver for the second time
51 OinkProver prover(proving_key, verification_key);
52 prover.prove();
53 }
54
55 // Check that the data hasn't changed
56 for (auto [new_alpha, old_alpha] : zip_view(proving_key->alphas, alphas)) {
57 BB_ASSERT_EQ(new_alpha, old_alpha);
58 };
59 for (auto [new_parameter, old_parameter] :
60 zip_view(proving_key->relation_parameters.get_to_fold(), relation_parameters.get_to_fold())) {
61 BB_ASSERT_EQ(new_parameter, old_parameter);
62 };
63 for (auto [new_challenge, old_challenge] : zip_view(proving_key->gate_challenges, gate_challenges)) {
64 BB_ASSERT_EQ(new_challenge, old_challenge);
65 };
66 BB_ASSERT_EQ(proving_key->polynomials.w_4, w4);
67 BB_ASSERT_EQ(proving_key->polynomials.lookup_read_counts, lookup_read_counts);
68 BB_ASSERT_EQ(proving_key->polynomials.lookup_read_tags, lookup_read_tag);
69 BB_ASSERT_EQ(proving_key->polynomials.lookup_inverses, lookup_inverse);
70 BB_ASSERT_EQ(proving_key->polynomials.z_perm, z_perm);
71 for (auto [new_databus, old_databus] :
72 zip_view(proving_key->polynomials.get_databus_inverses().get_copy(), databus_inverses)) {
73 BB_ASSERT_EQ(new_databus, old_databus);
74 };
75}
#define BB_ASSERT_EQ(actual, expected,...)
Definition assert.hpp:59
OinkProver< Flavor > OinkProver
static void SetUpTestSuite()
A DeciderProvingKey is normally constructed from a finalized circuit and it contains all the informat...
The verification key is responsible for storing the commitments to the precomputed (non-witness) poly...
MegaCircuitBuilder CircuitBuilder
Class for all the oink rounds, which are shared between the folding prover and ultra prover.
void prove()
Oink Prover function that runs all the rounds of the verifier.
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
Entry point for Barretenberg command-line interface.
TEST_F(IPATest, ChallengesAreZero)
Definition ipa.test.cpp:123
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13