Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
hypernova_decider_verifier.cpp
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
15
16namespace bb {
17
18template <typename Flavor>
20 Accumulator& accumulator, const HypernovaDeciderVerifier::Proof& proof)
21{
22 using ShpleminiVerifier = bb::ShpleminiVerifier_<Curve, Flavor::HasZK>;
23 using ClaimBatcher = ClaimBatcher_<Curve>;
24 using ClaimBatch = ClaimBatcher::Batch;
25
26 vinfo("HypernovaDeciderVerifier: verifying PCS proof...");
27 transcript->load_proof(proof);
28
29 // Construct generator based on whether we are in-circuit or not
30 Commitment generator;
31 if constexpr (IsRecursiveFlavor<Flavor>) {
32 generator = Commitment::one(accumulator.non_shifted_commitment.get_context());
33 } else {
34 generator = Commitment::one();
35 }
36
37 // Execute Shplemini verifier
38 ClaimBatcher claim_batcher{ .unshifted = ClaimBatch{ RefVector(accumulator.non_shifted_commitment),
39 RefVector(accumulator.non_shifted_evaluation) },
40 .shifted = ClaimBatch{ RefVector(accumulator.shifted_commitment),
41 RefVector(accumulator.shifted_evaluation) } };
42 auto opening_claim =
43 ShpleminiVerifier::compute_batch_opening_claim(claim_batcher, accumulator.challenge, generator, transcript)
44 .batch_opening_claim;
45
46 if constexpr (IsRecursiveFlavor<Flavor>) {
47 PairingPoints pairing_points(PCS::reduce_verify_batch_opening_claim(std::move(opening_claim), transcript));
48 return pairing_points;
49 } else {
50 auto pairing_points = PCS::reduce_verify_batch_opening_claim(std::move(opening_claim), transcript);
51 return { typename Curve::AffineElement(pairing_points.P0()),
52 typename Curve::AffineElement(pairing_points.P1()) };
53 }
54};
55
60}; // namespace bb
HyperNova decider verifier (native + recursive). Verifies final opening proof.
PairingPoints verify_proof(Accumulator &accumulator, const Proof &proof)
HypernovaFoldingVerifier< IsRecursiveFlavor< Flavor > >::Proof Proof
std::conditional_t< Curve::is_stdlib_type, stdlib::recursion::PairingPoints< Curve >, bb::PairingPoints< Curve > > PairingPoints
A template class for a reference vector. Behaves as if std::vector<T&> was possible.
typename Group::affine_element AffineElement
Definition grumpkin.hpp:64
#define vinfo(...)
Definition log.hpp:94
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
Logic to support batching opening claims for unshifted and shifted polynomials in Shplemini.
Verifier's claim for multilinear batching - contains commitments and evaluation claims.