barretenberg
Loading...
Searching...
No Matches
claim.hpp
1#pragma once
2
3#include "barretenberg/commitment_schemes/commitment_key.hpp"
4#include "barretenberg/polynomials/polynomial.hpp"
5
12template <typename Curve> class OpeningPair {
13 using Fr = typename Curve::ScalarField;
14
15 public:
16 Fr challenge; // r
17 Fr evaluation; // v = p(r)
18
19 bool operator==(const OpeningPair& other) const = default;
20};
21
27template <typename Curve> class ProverOpeningClaim {
28 using Fr = typename Curve::ScalarField;
30
31 public:
33 OpeningPair<Curve> opening_pair; // (challenge r, evaluation v = p(r))
34};
35
43template <typename Curve> class OpeningClaim {
45 using Commitment = typename Curve::AffineElement;
46 using Fr = typename Curve::ScalarField;
47
48 public:
49 // (challenge r, evaluation v = p(r))
50 OpeningPair<Curve> opening_pair;
51 // commitment to univariate polynomial p(X)
52 Commitment commitment;
53
62 bool verify(std::shared_ptr<CK> ck, const barretenberg::Polynomial<Fr>& polynomial) const
63 {
64 Fr real_eval = polynomial.evaluate(opening_pair.challenge);
65 if (real_eval != opening_pair.evaluation) {
66 return false;
67 }
68 // Note: real_commitment is a raw type, while commitment may be a linear combination.
69 auto real_commitment = ck->commit(polynomial);
70 return (real_commitment == commitment);
71 };
72
73 bool operator==(const OpeningClaim& other) const = default;
74};
75} // namespace proof_system::honk::pcs
Definition: polynomial.hpp:12
CommitmentKey object over a pairing group 𝔾₁.
Definition: commitment_key.hpp:35
Unverified claim (C,r,v) for some witness polynomial p(X) such that.
Definition: claim.hpp:43
bool verify(std::shared_ptr< CK > ck, const barretenberg::Polynomial< Fr > &polynomial) const
inefficiently check that the claim is correct by recomputing the commitment and evaluating the polyno...
Definition: claim.hpp:62
Opening pair (r,v) for some witness polynomial p(X) such that p(r) = v.
Definition: claim.hpp:12
Polynomial p and an opening pair (r,v) such that p(r) = v.
Definition: claim.hpp:27
Provides interfaces for different 'CommitmentKey' classes.
Definition: claim.hpp:6