Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
ultra_prover.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: Planned, auditors: [], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6
7#pragma once
16
17namespace bb {
18
19template <IsUltraOrMegaHonk Flavor_> class UltraProver_ {
20 public:
21 using Flavor = Flavor_;
22 using FF = typename Flavor::FF;
26 using Curve = typename Flavor::Curve;
30 using PCS = typename Flavor::PCS;
35 using Proof = typename Transcript::Proof;
37
39 std::shared_ptr<HonkVK> honk_vk;
40
41 std::shared_ptr<Transcript> transcript;
42
44
46
48
50
51 UltraProver_(const std::shared_ptr<ProverInstance>&, const std::shared_ptr<HonkVK>&, const CommitmentKey&);
52
54 const std::shared_ptr<HonkVK>&,
55 const std::shared_ptr<Transcript>& transcript = std::make_shared<Transcript>());
56
57 explicit UltraProver_(Builder&,
58 const std::shared_ptr<HonkVK>&,
59 const std::shared_ptr<Transcript>& transcript = std::make_shared<Transcript>());
60
61 explicit UltraProver_(Builder&&, const std::shared_ptr<HonkVK>&);
62
65
67
70 Proof prove() { return construct_proof(); };
71
73};
74
78#ifdef STARKNET_GARAGA_FLAVORS
79using UltraStarknetProver = UltraProver_<UltraStarknetFlavor>;
80using UltraStarknetZKProver = UltraProver_<UltraStarknetZKFlavor>;
81#endif
85
86} // namespace bb
std::vector< DataType > Proof
A container for commitment labels.
A container for the prover polynomials.
typename Curve::ScalarField FF
ECCVMCircuitBuilder CircuitBuilder
typename G1::affine_element Commitment
bb::Polynomial< FF > Polynomial
curve::Grumpkin Curve
bb::CommitmentKey< Curve > CommitmentKey
FixedVKAndHash_< PrecomputedEntities< Commitment >, BF, ECCVMHardcodedVKAndHash > VerificationKey
The verification key stores commitments to the precomputed polynomials used by the verifier.
BaseTranscript< Codec, HashFunction > Transcript
A ProverInstance is normally constructed from a finalized circuit and it contains all the information...
A Curve-agnostic ZK protocol to prove inner products of small vectors.
Polynomial quotient_W
bb::RelationParameters< FF > relation_parameters
CommitmentKey commitment_key
std::shared_ptr< HonkVK > honk_vk
typename Flavor::Polynomial Polynomial
BB_PROFILE void generate_gate_challenges()
BB_PROFILE void execute_pcs()
Produce a univariate opening claim for the sumcheck multivariate evalutions and a batched univariate ...
SumcheckOutput< Flavor > sumcheck_output
typename Flavor::PCS PCS
std::shared_ptr< Transcript > transcript
typename Transcript::Proof Proof
typename Flavor::Commitment Commitment
typename Flavor::CommitmentLabels CommitmentLabels
std::shared_ptr< ProverInstance > prover_instance
BB_PROFILE void execute_sumcheck_iop()
Run Sumcheck to establish that ∑_i pow(\vec{β*})f_i(ω) = 0. This results in u = (u_1,...
typename Flavor::CommitmentKey CommitmentKey
typename Flavor::FF FF
typename Flavor::Transcript Transcript
typename Flavor::ProverPolynomials ProverPolynomials
typename Flavor::Curve Curve
typename Flavor::CircuitBuilder Builder
Proof export_proof()
Export the complete proof, including IPA proof for rollup circuits.
typename Flavor::VerificationKey HonkVK
#define BB_PROFILE
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
Container for parameters used by the grand product (permutation, lookup) Honk relations.
Contains the evaluations of multilinear polynomials at the challenge point . These are computed by S...
This structure is created to contain various polynomials and constants required by ZK Sumcheck.