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: Complete, auditors: [Sergei], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6#pragma once
16
17#include <vector>
18
19namespace bb {
20
25template <typename Flavor_> class MultilinearBatchingVerifier {
26 public:
27 using Flavor = Flavor_;
28 using FF = typename Flavor::FF;
29 using Curve = typename Flavor::Curve;
31
35 using Proof = std::vector<FF>;
36
40 using InstanceCommitments = InstanceFlavor::VerifierCommitments;
41 using InstanceFF = InstanceFlavor::FF;
44
45 explicit MultilinearBatchingVerifier(const std::shared_ptr<Transcript>& transcript);
46
48 InstanceCommitments& verifier_commitments,
49 std::vector<InstanceFF>& unshifted_challenges,
50 std::vector<InstanceFF>& shifted_challenges);
51
52 private:
53 std::shared_ptr<Transcript> transcript;
56
60 FF compute_new_target_sum(const FF& alpha,
61 SumcheckOutput<InstanceFlavor>& instance_sumcheck,
62 const std::vector<InstanceFF>& unshifted_challenges,
63 const std::vector<InstanceFF>& shifted_challenges,
64 const FF& accumulator_non_shifted_evaluation,
65 const FF& accumulator_shifted_evaluation) const;
66
70 template <size_t N>
71 Commitment batch_mul(RefArray<Commitment, N> instance_commitments,
72 const Commitment& accumulator_commitment,
73 std::vector<FF>& scalars,
74 const FF& batching_challenge);
75
80 InstanceCommitments& verifier_commitments,
81 std::vector<InstanceFF>& unshifted_challenges,
82 std::vector<InstanceFF>& shifted_challenges,
83 const Commitment& non_shifted_accumulator_commitment,
84 const Commitment& shifted_accumulator_commitment,
85 const FF& batching_challenge);
86
93 bool check_eq_consistency(const SumcheckOutput<Flavor>& sumcheck_result,
94 const std::vector<FF>& accumulator_challenges,
95 const std::vector<InstanceFF>& instance_challenges);
96};
97
98} // namespace bb
typename Curve::ScalarField FF
typename G1::affine_element Commitment
curve::Grumpkin Curve
BaseTranscript< Codec, HashFunction > Transcript
static constexpr size_t NUM_SHIFTED_ENTITIES
static constexpr size_t NUM_UNSHIFTED_ENTITIES
The recursive counterpart to the "native" Mega flavor.
Multilinear batching verifier. Verifies claim reduction via sumcheck.
FF compute_new_target_sum(const FF &alpha, SumcheckOutput< InstanceFlavor > &instance_sumcheck, const std::vector< InstanceFF > &unshifted_challenges, const std::vector< InstanceFF > &shifted_challenges, const FF &accumulator_non_shifted_evaluation, const FF &accumulator_shifted_evaluation) const
Utility to compute the new target sum for the batching sumcheck.
std::shared_ptr< VerifierClaim > accumulator_claim
VerifierClaim compute_new_claim(const SumcheckOutput< Flavor > &sumcheck_result, InstanceCommitments &verifier_commitments, std::vector< InstanceFF > &unshifted_challenges, std::vector< InstanceFF > &shifted_challenges, const Commitment &non_shifted_accumulator_commitment, const Commitment &shifted_accumulator_commitment, const FF &batching_challenge)
Utility to compute the new claim after the batching sumcheck.
Commitment batch_mul(RefArray< Commitment, N > instance_commitments, const Commitment &accumulator_commitment, std::vector< FF > &scalars, const FF &batching_challenge)
Utility to perform batch mul of commitments.
std::conditional_t< std::is_same_v< Flavor, MultilinearBatchingFlavor >, MegaFlavor, MegaRecursiveFlavor_< MegaCircuitBuilder > > InstanceFlavor
InstanceFlavor::VerifierCommitments InstanceCommitments
bool check_eq_consistency(const SumcheckOutput< Flavor > &sumcheck_result, const std::vector< FF > &accumulator_challenges, const std::vector< InstanceFF > &instance_challenges)
Verify that the prover used the correct eq polynomials.
std::pair< bool, VerifierClaim > verify_proof(SumcheckOutput< InstanceFlavor > &instance_sumcheck, InstanceCommitments &verifier_commitments, std::vector< InstanceFF > &unshifted_challenges, std::vector< InstanceFF > &shifted_challenges)
std::shared_ptr< VerifierClaim > instance_claim
A template class for a reference array. Behaves as if std::array<T&, N> was possible.
Definition ref_array.hpp:22
Implementation of the sumcheck Verifier for statements of the form for multilinear polynomials .
Definition sumcheck.hpp:785
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
Contains the evaluations of multilinear polynomials at the challenge point . These are computed by S...