Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
multilinear_batching_verifier.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6#pragma once
7
12
13#include <span>
14#include <utility>
15
16namespace bb {
17
26template <typename Flavor_> class MultilinearBatchingVerifierInternal {
27 public:
28 using Flavor = Flavor_;
29 using FF = typename Flavor::FF;
30 using Curve = typename Flavor::Curve;
36
37 static constexpr size_t NUM_CLAIMS = Flavor::NUM_CLAIMS;
38 static constexpr bool IsRecursive = Curve::is_stdlib_type;
39
40 explicit MultilinearBatchingVerifierInternal(const std::shared_ptr<Transcript>& transcript);
41
42 // The batching sumcheck is read from the shared transcript; the caller is responsible for loading the proof onto it
43 // beforehand (in HyperNova folding it is already loaded by the instance sumcheck; in the kernel path the kernel
44 // loads the separate batching proof).
46
47 private:
48 std::shared_ptr<Transcript> transcript;
49
50 FF compute_target_sum(const FF& alpha, const std::vector<VerifierClaim>& claims, std::span<const FF> scalars) const;
51
53 const std::vector<VerifierClaim>& claims,
54 std::vector<FF> scalars);
55
56 bool check_eq_consistency(const SumcheckOutput<Flavor>& sumcheck_result, const std::vector<VerifierClaim>& claims);
57};
58
64template <bool IsRecursive_> class MultilinearBatchingVerifier {
65 public:
67 using Curve = typename BaseFlavor::Curve;
68 using Transcript = typename BaseFlavor::Transcript;
71
72 static constexpr bool IsRecursive = IsRecursive_;
73
74 explicit MultilinearBatchingVerifier(const std::shared_ptr<Transcript>& transcript);
75
76 // The batching proof must already be loaded onto the shared transcript by the caller (see the internal verifier).
78
79 private:
80 template <size_t NumClaims>
82
83 std::shared_ptr<Transcript> transcript;
84};
85
88
89} // namespace bb
typename Curve::ScalarField FF
typename G1::affine_element Commitment
curve::Grumpkin Curve
BaseTranscript< Codec, HashFunction > Transcript
Public entrypoint for multilinear batching verification.
std::pair< bool, VerifierClaim > verify_with_width(const std::vector< VerifierClaim > &claims)
std::conditional_t< Curve::is_stdlib_type, stdlib::Proof< MegaCircuitBuilder >, HonkProof > Proof
std::conditional_t< IsRecursive_, MultilinearBatchingRecursiveFlavor, MultilinearBatchingFlavor > BaseFlavor
typename BaseFlavor::Transcript Transcript
std::pair< bool, VerifierClaim > verify_proof(const std::vector< VerifierClaim > &claims)
Internal verifier for multilinear batching sumcheck over a fixed number of claims.
FF compute_target_sum(const FF &alpha, const std::vector< VerifierClaim > &claims, std::span< const FF > scalars) const
VerifierClaim compute_new_claim(const SumcheckOutput< Flavor > &sumcheck_result, const std::vector< VerifierClaim > &claims, std::vector< FF > scalars)
std::conditional_t< Curve::is_stdlib_type, stdlib::Proof< MegaCircuitBuilder >, HonkProof > Proof
bool check_eq_consistency(const SumcheckOutput< Flavor > &sumcheck_result, const std::vector< VerifierClaim > &claims)
std::pair< bool, VerifierClaim > verify_proof(const std::vector< VerifierClaim > &claims)
Implementation of the sumcheck Verifier for statements of the form for multilinear polynomials .
Definition sumcheck.hpp:802
static constexpr bool is_stdlib_type
Definition grumpkin.hpp:67
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
std::vector< fr > HonkProof
Definition proof.hpp:15
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...