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: Completed, auditors: [Sergei], commit: }
3// external_1: { status: not started, auditors: [], commit: }
4// external_2: { status: not started, auditors: [], commit: }
5// =====================
6
7#pragma once
15
16namespace bb {
17
18template <typename Flavor_> class UltraProver_ {
19 public:
20 using Flavor = Flavor_;
21 using FF = typename Flavor::FF;
23 using Curve = typename Flavor::Curve;
24 using PCS = typename Flavor::PCS;
29 using Proof = typename Transcript::Proof;
31
33 const std::shared_ptr<HonkVK>&,
34 const std::shared_ptr<Transcript>& transcript = std::make_shared<Transcript>());
35
38
39 size_t num_public_inputs() const { return prover_instance->num_public_inputs(); }
40 size_t log_dyadic_size() const { return prover_instance->log_dyadic_size(); }
41 const std::shared_ptr<Transcript>& get_transcript() const { return transcript; }
42
43 private:
45 std::shared_ptr<Transcript> transcript;
46 std::shared_ptr<HonkVK> honk_vk;
50
51 size_t virtual_log_n; // Set during gate challenge generation, reused by sumcheck and PCS
52
56};
57
61#ifdef STARKNET_GARAGA_FLAVORS
62using UltraStarknetProver = UltraProver_<UltraStarknetFlavor>;
63using UltraStarknetZKProver = UltraProver_<UltraStarknetZKFlavor>;
64#endif
68
69} // namespace bb
std::vector< DataType > Proof
typename Curve::ScalarField FF
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
Contains all the information required by a Honk prover to create a proof, constructed from a finalize...
A Curve-agnostic ZK protocol to prove inner products of small vectors.
size_t num_public_inputs() const
CommitmentKey commitment_key
std::shared_ptr< HonkVK > honk_vk
BB_PROFILE void generate_gate_challenges()
BB_PROFILE void execute_pcs()
Reduce the sumcheck multivariate evaluations to a single univariate opening claim via Shplemini,...
SumcheckOutput< Flavor > sumcheck_output
typename Flavor::PCS PCS
std::shared_ptr< Transcript > transcript
const std::shared_ptr< Transcript > & get_transcript() const
typename Transcript::Proof Proof
std::shared_ptr< ProverInstance > prover_instance
BB_PROFILE void execute_sumcheck_iop()
Run Sumcheck to establish that ∑_i pow(\vec{β*})f_i(ω) = 0, producing sumcheck round challenges u = (...
typename Flavor::CommitmentKey CommitmentKey
typename Flavor::FF FF
typename Flavor::Transcript Transcript
typename Flavor::Curve Curve
size_t log_dyadic_size() const
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
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.