3#include "barretenberg/proof_system/composer/composer_lib.hpp"
4#include "barretenberg/protogalaxy/protogalaxy_prover.hpp"
5#include "barretenberg/protogalaxy/protogalaxy_verifier.hpp"
6#include "barretenberg/srs/global_crs.hpp"
7#include "barretenberg/sumcheck/instance/prover_instance.hpp"
8#include "barretenberg/ultra_honk/merge_prover.hpp"
9#include "barretenberg/ultra_honk/merge_verifier.hpp"
10#include "barretenberg/ultra_honk/ultra_prover.hpp"
11#include "barretenberg/ultra_honk/ultra_verifier.hpp"
28 static constexpr size_t NUM_FOLDING = 2;
33 static constexpr size_t num_zero_rows = Flavor::has_zero_row ? 1 : 0;
34 static constexpr std::string_view NAME_STRING =
"UltraHonk";
35 static constexpr size_t NUM_WIRES = CircuitBuilder::NUM_WIRES;
38 std::shared_ptr<CRSFactory> crs_factory_;
40 std::shared_ptr<CommitmentKey> commitment_key;
42 UltraComposer_() { crs_factory_ = barretenberg::srs::get_crs_factory(); }
45 : crs_factory_(std::move(crs_factory))
54 std::shared_ptr<CommitmentKey> compute_commitment_key(
size_t circuit_size)
56 commitment_key = std::make_shared<CommitmentKey>(circuit_size + 1);
57 return commitment_key;
60 std::shared_ptr<Instance> create_instance(CircuitBuilder& circuit);
63 const std::shared_ptr<Transcript>& transcript = std::make_shared<Transcript>());
66 const std::shared_ptr<Instance>&,
67 const std::shared_ptr<Transcript>& transcript = std::make_shared<Transcript>());
82 const std::shared_ptr<ECCOpQueue>& op_queue,
83 const std::shared_ptr<Transcript>& transcript = std::make_shared<Transcript>())
86 op_queue->set_size_data();
89 auto commitment_key = compute_commitment_key(op_queue->get_current_size());
101 const std::shared_ptr<CommitmentKey>& commitment_key)
107 ProtoGalaxyVerifier_<VerifierInstances> create_folding_verifier()
110 auto insts = VerifierInstances();
111 ProtoGalaxyVerifier_<VerifierInstances> output_state(insts);
124extern template class UltraComposer_<honk::flavor::Ultra>;
125extern template class UltraComposer_<honk::flavor::GoblinUltra>;
127using UltraComposer = UltraComposer_<honk::flavor::Ultra>;
128using GoblinUltraComposer = UltraComposer_<honk::flavor::GoblinUltra>;
Definition: crs_factory.hpp:72
GoblinTranslatorCircuitBuilder creates a circuit that evaluates the correctness of the evaluation of ...
Definition: goblin_translator_circuit_builder.hpp:76
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
Definition: transcript.hpp:62
Prover class for the Goblin ECC op queue transcript merge protocol.
Definition: merge_prover.hpp:17
Verifier class for the Goblin ECC op queue transcript merge protocol.
Definition: merge_verifier.hpp:18
Definition: protogalaxy_prover.hpp:15
An Instance is normally constructed from a finalized circuit and it's role is to compute all the poly...
Definition: prover_instance.hpp:20
Definition: ultra_composer.hpp:14
void compute_verification_key(const std::shared_ptr< Instance > &)
Compute the verification key of an Instance, produced from a finalised circuit.
Definition: ultra_composer.cpp:15
MergeVerifier_< Flavor > create_merge_verifier()
Create Verifier for Goblin ECC op queue merge protocol.
Definition: ultra_composer.hpp:98
MergeProver_< Flavor > create_merge_prover(const std::shared_ptr< ECCOpQueue > &op_queue, const std::shared_ptr< Transcript > &transcript=std::make_shared< Transcript >())
Create Prover for Goblin ECC op queue merge protocol.
Definition: ultra_composer.hpp:81
Definition: ultra_prover.hpp:13
Definition: ultra_verifier.hpp:9
The proving key is responsible for storing the polynomials used by the prover.
Definition: goblin_translator.hpp:902
VerificationKey_< PrecomputedEntities< Commitment > > VerificationKey
The verification key is responsible for storing the the commitments to the precomputed (non-witnessk)...
Definition: goblin_translator.hpp:941
CommitmentKey object over a pairing group 𝔾₁.
Definition: commitment_key.hpp:35
Definition: verification_key.hpp:25
Base class templates for structures that contain data parameterized by the fundamental polynomials of...
Defines particular circuit builder types expected to be used for circuit construction in stdlib and c...
Definition: claim.hpp:6
Definition: instances.hpp:7
Definition: instances.hpp:89