Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
mock_verifier_inputs.test.cpp
Go to the documentation of this file.
2#include "barretenberg/aztec/aztec_constants.hpp"
9
10#include <gtest/gtest.h>
11
12using namespace acir_format;
13using namespace bb;
14
15class MockVerifierInputsTest : public ::testing::Test {
16 public:
18};
19
20// Static assertions for proof size constants that must stay in sync with Noir (constants.nr)
21// These constants are used by Noir protocol circuits and TypeScript
22
23// Public input component sizes (used in Noir)
24static_assert(PAIRING_POINTS_SIZE == 8, "PAIRING_POINTS_SIZE changed - update constants.nr");
25static_assert(GRUMPKIN_OPENING_CLAIM_SIZE == 6, "IPA_CLAIM_SIZE changed - update constants.nr");
26static_assert(HIDING_KERNEL_PUBLIC_INPUTS_SIZE == 28,
27 "HIDING_KERNEL_IO_PUBLIC_INPUTS_SIZE changed - update constants.nr");
28
29// Component proof lengths (used in Noir)
30static_assert(MERGE_PROOF_SIZE == 41,
31 "MERGE_PROOF_SIZE changed - update CHONK_MERGE_PROOF_SIZE in constants.nr "
32 "and run barretenberg/cpp/scripts/remake-constants.sh");
33static_assert(ECCVMFlavor::PROOF_LENGTH == 556,
34 "ECCVM proof size changed - update CHONK_ECCVM_PROOF_LENGTH in constants.nr "
35 "and run barretenberg/cpp/scripts/remake-constants.sh");
36static_assert(ECCVMFlavor::TRIPLE_IPA_PROOF_LENGTH == 70, "TripleIPA proof size changed - update constants.nr");
37static_assert(IPA_PROOF_LENGTH == 64, "IPA_PROOF_LENGTH changed - update constants.nr");
38static_assert(TranslatorFlavor::PROOF_LENGTH == 483, "Translator proof size changed - update constants.nr");
39
40// Full proof lengths (used in Noir)
41static_assert(
43 UltraFlavor::VIRTUAL_LOG_N) == 410,
44 "RECURSIVE_PROOF_LENGTH changed - update constants.nr");
45static_assert(ChonkProof::PROOF_LENGTH == 1221, "CHONK_PROOF_LENGTH changed - update constants.nr");
46static_assert(ChonkProof::HIDING_OINK_LENGTH == 48,
47 "ChonkProof::HIDING_OINK_LENGTH changed - update CHONK_HIDING_OINK_LENGTH in constants.nr "
48 "and run barretenberg/cpp/scripts/remake-constants.sh");
49static_assert(ChonkProof::JOINT_PROOF_LENGTH == 478,
50 "ChonkProof::JOINT_PROOF_LENGTH changed - update CHONK_JOINT_PROOF_LENGTH in constants.nr "
51 "and run barretenberg/cpp/scripts/remake-constants.sh");
53 "MEGA_APP_VK_LENGTH_IN_FIELDS changed - update constants.nr");
55 "MEGA_KERNEL_VK_LENGTH_IN_FIELDS changed - update constants.nr");
57 "MEGA_ZK_VK_LENGTH_IN_FIELDS changed - update constants.nr");
59 "MultilinearBatching proof size changed - update constants.nr");
60
64TEST_F(MockVerifierInputsTest, MockMergeProofSize)
65{
67 EXPECT_EQ(merge_proof.size(), MERGE_PROOF_SIZE);
68}
69
73TEST_F(MockVerifierInputsTest, MockBatchMergeProofSize)
74{
75 HonkProof batch_merge_proof = create_mock_batch_merge_proof();
76 EXPECT_EQ(batch_merge_proof.size(), BATCH_MERGE_PROOF_SIZE);
77}
78
82TEST_F(MockVerifierInputsTest, MockPreIpaProofSize)
83{
84 HonkProof eccvm_proof = create_mock_eccvm_proof();
85 EXPECT_EQ(eccvm_proof.size(), ECCVMFlavor::PROOF_LENGTH);
86}
87
92{
93 HonkProof ipa_proof = create_mock_ipa_proof();
94 EXPECT_EQ(ipa_proof.size(), IPA_PROOF_LENGTH);
95}
96
100TEST_F(MockVerifierInputsTest, MockTranslatorProofSize)
101{
102 HonkProof translator_proof = create_mock_translator_proof();
103 EXPECT_EQ(translator_proof.size(), TranslatorFlavor::PROOF_LENGTH);
104}
105
109TEST_F(MockVerifierInputsTest, MockMegaOinkProofSize)
110{
111 using Flavor = MegaFlavor;
113 constexpr size_t OINK_LENGTH = ProofLength::Oink<Flavor>::LENGTH_WITHOUT_PUB_INPUTS;
114
115 HonkProof app_proof = create_mock_oink_proof<Flavor, stdlib::recursion::honk::AppIO>();
116 EXPECT_EQ(app_proof.size(), OINK_LENGTH + stdlib::recursion::honk::AppIO::PUBLIC_INPUTS_SIZE);
117
118 HonkProof kernel_proof = create_mock_oink_proof<Flavor, stdlib::recursion::honk::KernelIO>();
119 EXPECT_EQ(kernel_proof.size(), OINK_LENGTH + stdlib::recursion::honk::KernelIO::PUBLIC_INPUTS_SIZE);
120
121 HonkProof hiding_proof = create_mock_oink_proof<Flavor, stdlib::recursion::honk::HidingKernelIO<Builder>>();
122 EXPECT_EQ(hiding_proof.size(), OINK_LENGTH + stdlib::recursion::honk::HidingKernelIO<Builder>::PUBLIC_INPUTS_SIZE);
123}
124
128TEST_F(MockVerifierInputsTest, MockUltraOinkProofSize)
129{
130 {
131 using Flavor = UltraFlavor;
133 HonkProof proof = create_mock_oink_proof<Flavor, IO>();
134 EXPECT_EQ(proof.size(), ProofLength::Oink<Flavor>::LENGTH_WITHOUT_PUB_INPUTS + IO::PUBLIC_INPUTS_SIZE);
135 }
136 {
137 using Flavor = UltraZKFlavor;
139 HonkProof proof = create_mock_oink_proof<Flavor, IO>();
140 EXPECT_EQ(proof.size(), ProofLength::Oink<Flavor>::LENGTH_WITHOUT_PUB_INPUTS + IO::PUBLIC_INPUTS_SIZE);
141 }
142 {
143 using Flavor = UltraFlavor;
145 HonkProof proof = create_mock_oink_proof<Flavor, IO>();
146 EXPECT_EQ(proof.size(), ProofLength::Oink<Flavor>::LENGTH_WITHOUT_PUB_INPUTS + IO::PUBLIC_INPUTS_SIZE);
147 }
148}
149
153TEST_F(MockVerifierInputsTest, MockMegaHonkProofSize)
154{
155 using Flavor = MegaFlavor;
157 constexpr size_t HONK_LENGTH = ProofLength::Honk<Flavor>::LENGTH_WITHOUT_PUB_INPUTS(Flavor::VIRTUAL_LOG_N);
158
159 HonkProof app_proof = create_mock_honk_proof<Flavor, stdlib::recursion::honk::AppIO>();
160 EXPECT_EQ(app_proof.size(), HONK_LENGTH + stdlib::recursion::honk::AppIO::PUBLIC_INPUTS_SIZE);
161
162 HonkProof kernel_proof = create_mock_honk_proof<Flavor, stdlib::recursion::honk::KernelIO>();
163 EXPECT_EQ(kernel_proof.size(), HONK_LENGTH + stdlib::recursion::honk::KernelIO::PUBLIC_INPUTS_SIZE);
164
165 HonkProof hiding_proof = create_mock_honk_proof<Flavor, stdlib::recursion::honk::HidingKernelIO<Builder>>();
166 EXPECT_EQ(hiding_proof.size(), HONK_LENGTH + stdlib::recursion::honk::HidingKernelIO<Builder>::PUBLIC_INPUTS_SIZE);
167}
168
172TEST_F(MockVerifierInputsTest, MockUltraHonkProofSize)
173{
174 {
175 using Flavor = UltraFlavor;
177 HonkProof proof = create_mock_honk_proof<Flavor, IO>();
178 EXPECT_EQ(proof.size(),
179 ProofLength::Honk<Flavor>::LENGTH_WITHOUT_PUB_INPUTS(Flavor::VIRTUAL_LOG_N) + IO::PUBLIC_INPUTS_SIZE);
180 }
181 {
182 using Flavor = UltraZKFlavor;
184 HonkProof proof = create_mock_honk_proof<Flavor, IO>();
185 EXPECT_EQ(proof.size(),
186 ProofLength::Honk<Flavor>::LENGTH_WITHOUT_PUB_INPUTS(Flavor::VIRTUAL_LOG_N) + IO::PUBLIC_INPUTS_SIZE);
187 }
188 {
189 using Flavor = UltraFlavor;
191 HonkProof proof = create_mock_honk_proof<Flavor, IO>();
192 // RollupIO has HasIPA=true, so proof includes IPA_PROOF_LENGTH
193 constexpr size_t expected = ProofLength::Honk<Flavor>::LENGTH_WITHOUT_PUB_INPUTS(Flavor::VIRTUAL_LOG_N) +
194 IO::PUBLIC_INPUTS_SIZE + IPA_PROOF_LENGTH;
195 EXPECT_EQ(proof.size(), expected);
196 }
197}
198
200{
202 EXPECT_EQ(avm_proof.size(), AVM_V2_PROOF_LENGTH_IN_FIELDS);
203}
204
208TEST_F(MockVerifierInputsTest, MockChonkProofSize)
209{
211 HonkProof chonk_proof = create_mock_chonk_proof<Builder>();
212 EXPECT_EQ(chonk_proof.size(), ChonkProof::PROOF_LENGTH);
213}
214
218TEST_F(MockVerifierInputsTest, MockMultilinearBatchingProofSize)
219{
221 HonkProof batching_proof = create_mock_multilinear_batch_proof(/*num_claims=*/2);
222 EXPECT_EQ(batching_proof.size(), ProofLength::MultilinearBatching<Flavor>::LENGTH);
223}
static constexpr size_t PROOF_LENGTH
static constexpr size_t TRIPLE_IPA_PROOF_LENGTH
MergeProver::MergeProof MergeProof
Definition goblin.hpp:42
Native flavor for multilinear batching sumcheck with NumClaims polynomials.
static constexpr size_t calc_num_data_types()
Calculate the number of field elements needed for serialization.
Definition flavor.hpp:202
static constexpr size_t PROOF_LENGTH
Child class of UltraFlavor that runs with ZK Sumcheck.
Manages the data that is propagated on the public inputs of an application/function circuit.
Manages the data that is propagated on the public inputs of a hiding kernel circuit.
The data that is propagated on the public inputs of a rollup circuit.
HonkProof create_mock_multilinear_batch_proof(size_t num_claims)
Create a mock multilinear batching proof of the given width (number of batched claims) that has corre...
Goblin::MergeProof create_mock_merge_proof()
Create a mock merge proof which has the correct structure but is not necessarily valid.
HonkProof create_mock_eccvm_proof()
Create a mock pre-ipa proof which has the correct structure but is not necessarily valid.
HonkProof create_mock_translator_proof()
Create a mock Translator proof which has the correct structure but is not necessarily valid.
HonkProof create_mock_batch_merge_proof()
Create a mock batch merge proof which has the correct structure but is not necessarily valid.
HonkProof create_mock_avm_proof_without_pub_inputs()
Create a mock AVM proof without public inputs that has the correct structure but is not in general va...
HonkProof create_mock_ipa_proof()
Create a mock ipa proof which has the correct structure but is not necessarily valid.
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
TEST_F(BoomerangGoblinRecursiveVerifierTests, graph_description_basic)
Construct and check a goblin recursive verification circuit.
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
std::vector< fr > HonkProof
Definition proof.hpp:15
MegaCircuitBuilder_< field< Bn254FrParams > > MegaCircuitBuilder
static constexpr size_t JOINT_PROOF_LENGTH
static constexpr size_t PROOF_LENGTH
static constexpr size_t HIDING_OINK_LENGTH
Full Honk proof layout (used by UltraVerifier).
static constexpr size_t LENGTH_WITHOUT_PUB_INPUTS(size_t log_n)
MultilinearBatching proof layout (used by HyperNova folding).
Computes Oink proof length from flavor traits.