barretenberg
Loading...
Searching...
No Matches
verification_key.hpp
1#pragma once
2
8#include "barretenberg/commitment_schemes/commitment_key.hpp"
9#include "barretenberg/ecc/curves/bn254/bn254.hpp"
10#include "barretenberg/ecc/curves/bn254/pairing.hpp"
11#include "barretenberg/ecc/curves/grumpkin/grumpkin.hpp"
12#include "barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp"
13#include "barretenberg/numeric/bitop/pow.hpp"
14#include "barretenberg/polynomials/polynomial.hpp"
15#include "barretenberg/polynomials/polynomial_arithmetic.hpp"
16#include "barretenberg/srs/factories/crs_factory.hpp"
17#include "barretenberg/srs/factories/file_crs_factory.hpp"
18
19#include <cstddef>
20#include <memory>
21#include <string_view>
22
24
25template <class Curve> class VerifierCommitmentKey;
26
32template <> class VerifierCommitmentKey<curve::BN254> {
33 using Curve = curve::BN254;
34 using GroupElement = typename Curve::Element;
35 using Commitment = typename Curve::AffineElement;
36
37 public:
38 VerifierCommitmentKey() = delete;
39
46 VerifierCommitmentKey([[maybe_unused]] size_t num_points,
47 std::shared_ptr<barretenberg::srs::factories::CrsFactory<Curve>> crs_factory)
48 : srs(crs_factory->get_verifier_crs())
49 {}
50
58 bool pairing_check(const GroupElement& p0, const GroupElement& p1)
59 {
60 Commitment pairing_points[2]{ p0, p1 };
61 // The final pairing check of step 12.
62 Curve::TargetField result = barretenberg::pairing::reduced_ate_pairing_batch_precomputed(
63 pairing_points, srs->get_precomputed_g2_lines(), 2);
64
65 return (result == Curve::TargetField::one());
66 }
67
68 std::shared_ptr<barretenberg::srs::factories::VerifierCrs<Curve>> srs;
69};
70
76template <> class VerifierCommitmentKey<curve::Grumpkin> {
77 using Curve = curve::Grumpkin;
78 using GroupElement = typename Curve::Element;
79 using Commitment = typename Curve::AffineElement;
80
81 public:
82 VerifierCommitmentKey() = delete;
83
91 VerifierCommitmentKey(size_t num_points,
92 std::shared_ptr<barretenberg::srs::factories::CrsFactory<Curve>> crs_factory)
93 : pippenger_runtime_state(num_points)
94 , srs(crs_factory->get_verifier_crs(num_points))
95
96 {}
97
99 std::shared_ptr<barretenberg::srs::factories::VerifierCrs<Curve>> srs;
100};
101
102} // namespace proof_system::honk::pcs
Definition: field12.hpp:5
Definition: crs_factory.hpp:72
Definition: bn254.hpp:10
Definition: grumpkin.hpp:36
VerifierCommitmentKey(size_t num_points, std::shared_ptr< barretenberg::srs::factories::CrsFactory< Curve > > crs_factory)
Construct a new Kate Verification Key object from existing SRS.
Definition: verification_key.hpp:46
bool pairing_check(const GroupElement &p0, const GroupElement &p1)
verifies a pairing equation over 2 points using the verifier SRS
Definition: verification_key.hpp:58
VerifierCommitmentKey(size_t num_points, std::shared_ptr< barretenberg::srs::factories::CrsFactory< Curve > > crs_factory)
Construct a new IPA Verification Key object from existing SRS.
Definition: verification_key.hpp:91
Definition: verification_key.hpp:25
Provides interfaces for different 'CommitmentKey' classes.
Definition: claim.hpp:6