Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
hypernova_verifier.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: Complete, auditors: [Sergei], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6#pragma once
7
17
18#include <optional>
19#include <span>
20#include <utility>
21#include <vector>
22
23namespace bb {
24
35template <bool IsRecursive_> class HypernovaFoldingVerifier {
36 public:
37 static constexpr bool IsRecursive = IsRecursive_;
38 // Representative flavor: Curve/commitment/transcript shapes are common to the app and kernel flavors, so the kernel
39 // one stands in for both.
41 using FF = typename BaseFlavor::FF;
42 using Curve = typename BaseFlavor::Curve;
43 using Commitment = typename BaseFlavor::Commitment;
44 using Transcript = typename BaseFlavor::Transcript;
48
49 template <typename InstanceFlavor> using VerifierInstance = VerifierInstance_<InstanceFlavor>;
50
51 HypernovaFoldingVerifier(std::shared_ptr<Transcript> transcript)
52 : transcript(std::move(transcript))
53 {}
54
59 template <typename InstanceFlavor>
60 bool accumulate_instance(const std::shared_ptr<VerifierInstance<InstanceFlavor>>& instance, const Proof& proof);
61
69 std::pair<bool, Accumulator> finalize(const Proof& batching_proof,
70 std::optional<Accumulator> previous_accumulator = std::nullopt);
71
72 // Read access to the per-instance claims accumulated so far
74
75 private:
76 std::shared_ptr<Transcript> transcript;
78
83 template <typename InstanceFlavor>
85 const std::shared_ptr<VerifierInstance<InstanceFlavor>>& instance,
86 const Proof& proof,
87 size_t num_public_inputs);
88
92 template <typename InstanceFlavor>
94 const std::shared_ptr<VerifierInstance<InstanceFlavor>>& instance);
95
99 template <size_t N> Commitment batch_mul(std::span<Commitment, N> _points, std::vector<FF>& scalars);
100};
101
104
105} // namespace bb
Stateful HyperNova folding verifier (native + recursive). Verifies a series of instances against a st...
Commitment batch_mul(std::span< Commitment, N > _points, std::vector< FF > &scalars)
Utility to perform batch mul of commitments.
std::pair< bool, Accumulator > finalize(const Proof &batching_proof, std::optional< Accumulator > previous_accumulator=std::nullopt)
Batch the previous accumulator (if any) and the cached claims into a single accumulator.
typename BaseFlavor::Transcript Transcript
std::conditional_t< IsRecursive, stdlib::Proof< MegaCircuitBuilder >, HonkProof > Proof
std::conditional_t< IsRecursive, MegaKernelRecursiveFlavor, MegaKernelFlavor > BaseFlavor
HypernovaFoldingVerifier(std::shared_ptr< Transcript > transcript)
typename BaseFlavor::Curve Curve
static constexpr bool IsRecursive
bool accumulate_instance(const std::shared_ptr< VerifierInstance< InstanceFlavor > > &instance, const Proof &proof)
Verify the instance-to-accumulator sumcheck of one incoming proof and cache the resulting claim.
const std::vector< Accumulator > & get_cached_claims() const
SumcheckOutput< InstanceFlavor > sumcheck_on_incoming_instance(const std::shared_ptr< VerifierInstance< InstanceFlavor > > &instance, const Proof &proof, size_t num_public_inputs)
Perform Oink + Sumcheck on the incoming instance, generating the challenges at which the polynomial c...
Accumulator sumcheck_output_to_accumulator(SumcheckOutput< InstanceFlavor > &sumcheck_output, const std::shared_ptr< VerifierInstance< InstanceFlavor > > &instance)
Convert the output of the instance sumcheck into an accumulator claim.
std::shared_ptr< Transcript > transcript
std::vector< Accumulator > cached_claims
typename BaseFlavor::Commitment Commitment
Public entrypoint for multilinear batching verification.
The VerifierInstance encapsulates all the necessary information for a Honk Verifier to verify a proof...
Base class templates shared across Honk flavors.
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
std::vector< fr > HonkProof
Definition proof.hpp:15
STL namespace.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
Verifier's claim for multilinear batching - contains commitments and evaluation claims.
Contains the evaluations of multilinear polynomials at the challenge point . These are computed by S...