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 "acir_format.hpp"
12#include "proof_surgeon.hpp"
13
14#include <gtest/gtest.h>
15#include <vector>
16
17using namespace acir_format;
18using namespace bb;
19
20template <typename Flavor> class MockVerifierInputsTest : public ::testing::Test {
21 public:
23};
24
25using FlavorTypes = testing::Types<MegaFlavor, UltraFlavor, UltraZKFlavor, UltraRollupFlavor>;
26
28
32TEST(MockVerifierInputsTest, MockMergeProofSize)
33{
35 EXPECT_EQ(merge_proof.size(), MERGE_PROOF_SIZE);
36}
37
41TEST(MockVerifierInputsTest, MockPreIpaProofSize)
42{
43 HonkProof pre_ipa_proof = create_mock_pre_ipa_proof();
44 EXPECT_EQ(pre_ipa_proof.size(), ECCVMFlavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS - IPA_PROOF_LENGTH);
45}
46
50TEST(MockVerifierInputsTest, MockIPAProofSize)
51{
52 HonkProof ipa_proof = create_mock_ipa_proof();
53 EXPECT_EQ(ipa_proof.size(), IPA_PROOF_LENGTH);
54}
55
59TEST(MockVerifierInputsTest, MockTranslatorProofSize)
60{
61 HonkProof translator_proof = create_mock_translator_proof();
62 EXPECT_EQ(translator_proof.size(), TranslatorFlavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS);
63}
64
69TEST(MockVerifierInputsTest, MockMegaOinkProofSize)
70{
71 using Flavor = MegaFlavor;
73
74 {
75 // AppIO
76 const size_t NUM_PUBLIC_INPUTS = stdlib::recursion::honk::AppIO::PUBLIC_INPUTS_SIZE;
77 HonkProof honk_proof = create_mock_oink_proof<Flavor, stdlib::recursion::honk::AppIO>();
78 EXPECT_EQ(honk_proof.size(), Flavor::OINK_PROOF_LENGTH_WITHOUT_PUB_INPUTS + NUM_PUBLIC_INPUTS);
79 }
80
81 {
82 // KernelIO
83 const size_t NUM_PUBLIC_INPUTS = stdlib::recursion::honk::KernelIO::PUBLIC_INPUTS_SIZE;
84 HonkProof honk_proof = create_mock_oink_proof<Flavor, stdlib::recursion::honk::KernelIO>();
85 EXPECT_EQ(honk_proof.size(), Flavor::OINK_PROOF_LENGTH_WITHOUT_PUB_INPUTS + NUM_PUBLIC_INPUTS);
86 }
87
88 {
89 // HidingKernelIO
91 HonkProof honk_proof = create_mock_oink_proof<Flavor, stdlib::recursion::honk::HidingKernelIO<Builder>>();
92 EXPECT_EQ(honk_proof.size(), Flavor::OINK_PROOF_LENGTH_WITHOUT_PUB_INPUTS + NUM_PUBLIC_INPUTS);
93 }
94}
95
100TYPED_TEST(MockVerifierInputsTest, MockUltraOinkProofSize)
101{
102 using Flavor = TypeParam;
107
109 const size_t NUM_PUBLIC_INPUTS = IO::PUBLIC_INPUTS_SIZE;
110 HonkProof honk_proof = create_mock_oink_proof<Flavor, IO>();
111 EXPECT_EQ(honk_proof.size(), Flavor::OINK_PROOF_LENGTH_WITHOUT_PUB_INPUTS + NUM_PUBLIC_INPUTS);
112 } else {
113 GTEST_SKIP();
114 }
115}
116
121TYPED_TEST(MockVerifierInputsTest, MockDeciderProofSize)
122{
123 using Flavor = TypeParam;
124
126 HonkProof honk_proof = create_mock_decider_proof<Flavor>();
127 EXPECT_EQ(honk_proof.size(), Flavor::DECIDER_PROOF_LENGTH());
128 } else {
129 GTEST_SKIP();
130 }
131}
132
137TEST(MockVerifierInputsTest, MockMegaHonkProofSize)
138{
139 using Flavor = MegaFlavor;
141
142 {
143 // AppIO
144 const size_t NUM_PUBLIC_INPUTS = stdlib::recursion::honk::AppIO::PUBLIC_INPUTS_SIZE;
145 HonkProof honk_proof = create_mock_honk_proof<Flavor, stdlib::recursion::honk::AppIO>();
146 EXPECT_EQ(honk_proof.size(), Flavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS() + NUM_PUBLIC_INPUTS);
147 }
148
149 {
150 // KernelIO
151 const size_t NUM_PUBLIC_INPUTS = stdlib::recursion::honk::KernelIO::PUBLIC_INPUTS_SIZE;
152 HonkProof honk_proof = create_mock_honk_proof<Flavor, stdlib::recursion::honk::KernelIO>();
153 EXPECT_EQ(honk_proof.size(), Flavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS() + NUM_PUBLIC_INPUTS);
154 }
155
156 {
157 // HidingKernelIO
159 HonkProof honk_proof = create_mock_honk_proof<Flavor, stdlib::recursion::honk::HidingKernelIO<Builder>>();
160 EXPECT_EQ(honk_proof.size(), Flavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS() + NUM_PUBLIC_INPUTS);
161 }
162}
163
169{
170 using Flavor = TypeParam;
175
177 const size_t NUM_PUBLIC_INPUTS = IO::PUBLIC_INPUTS_SIZE;
178 HonkProof honk_proof = create_mock_honk_proof<Flavor, IO>();
179 EXPECT_EQ(honk_proof.size(), Flavor::PROOF_LENGTH_WITHOUT_PUB_INPUTS() + NUM_PUBLIC_INPUTS);
180 } else {
181 GTEST_SKIP();
182 }
183}
184
189TEST(MockVerifierInputsTest, MockClientIVCProofSize)
190{
192
193 HonkProof civc_proof = create_mock_civc_proof<Builder>();
194 EXPECT_EQ(civc_proof.size(), ClientIVC::Proof::PROOF_LENGTH());
195}
static constexpr size_t PROOF_LENGTH_WITHOUT_PUB_INPUTS
MergeProver::MergeProof MergeProof
Definition goblin.hpp:36
static constexpr size_t DECIDER_PROOF_LENGTH(size_t virtual_log_n=VIRTUAL_LOG_N)
static constexpr size_t OINK_PROOF_LENGTH_WITHOUT_PUB_INPUTS
MegaCircuitBuilder CircuitBuilder
static constexpr size_t PROOF_LENGTH_WITHOUT_PUB_INPUTS
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.
testing::Types< MegaFlavor, UltraFlavor, UltraZKFlavor, UltraRollupFlavor > FlavorTypes
Goblin::MergeProof create_mock_merge_proof()
Create a mock merge 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_pre_ipa_proof()
Create a mock pre-ipa proof which has the correct structure but is not necessarily valid.
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)
TYPED_TEST_SUITE(BoomerangRecursiveVerifierTest, Flavors)
Entry point for Barretenberg command-line interface.
std::vector< fr > HonkProof
Definition proof.hpp:15
TEST(MegaCircuitBuilder, CopyConstructor)
TYPED_TEST(ShpleminiTest, CorrectnessOfMultivariateClaimBatching)
MegaCircuitBuilder_< field< Bn254FrParams > > MegaCircuitBuilder
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
static constexpr size_t PROOF_LENGTH(size_t virtual_log_n=MegaZKFlavor::VIRTUAL_LOG_N)
The size of a ClientIVC proof with backend-added public inputs: HidingKernelIO.