36 static_assert(
DeciderProvingKeys::NUM == 2,
"Protogalaxy currently only supports folding one instance at a time.");
58 const std::vector<std::shared_ptr<DeciderVK>>& vks,
67 BB_ASSERT_EQ(keys.size(),
NUM_KEYS,
"Number of prover keys does not match the number of keys to fold");
69 vks.size(),
NUM_KEYS,
"Number of verification keys does not match the number of vks to Fiat-Shamir");
80 std::shared_ptr<DeciderVK>,
81 const std::string& domain_separator);
106 const std::vector<FF>&
deltas,
#define BB_ASSERT_EQ(actual, expected,...)
A DeciderProvingKey is normally constructed from a finalized circuit and it contains all the informat...
The DeciderVerificationKey encapsulates all the necessary information for a Mega Honk Verifier to ver...
bb::CommitmentKey< Curve > CommitmentKey
static constexpr size_t NUM_SUBRELATIONS
NativeTranscript Transcript
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x .....
BB_PROFILE FoldingResult< Flavor > prove()
Execute the folding prover.
typename Flavor::Transcript Transcript
std::shared_ptr< DeciderPK > accumulator
CombinerQuotient combiner_quotient
UnivariateRelationParameters relation_parameters
void run_oink_prover_on_one_incomplete_key(std::shared_ptr< DeciderPK >, std::shared_ptr< DeciderVK >, const std::string &domain_separator)
For each key produced by a circuit, prior to folding, we need to complete the computation of its prov...
DeciderVerificationKeys vks_to_fold
DeciderProvingKeys_< Flavor, NUM_KEYS > DeciderProvingKeys
std::shared_ptr< Transcript > transcript
void update_target_sum_and_fold(const DeciderProvingKeys &keys, const CombinerQuotient &combiner_quotient, const UnivariateSubrelationSeparators &alphas, const UnivariateRelationParameters &univariate_relation_parameters, const FF &perturbator_evaluation)
Steps 12 - 13 of the paper plus the prover folding work.
std::array< Univariate< FF, DeciderProvingKeys::BATCHED_EXTENDED_LENGTH >, Flavor::NUM_SUBRELATIONS - 1 > UnivariateSubrelationSeparators
DeciderProvingKeys keys_to_fold
std::tuple< std::vector< FF >, UnivariateSubrelationSeparators, UnivariateRelationParameters, FF, CombinerQuotient > combiner_quotient_round(const std::vector< FF > &gate_challenges, const std::vector< FF > &deltas, const DeciderProvingKeys &keys)
Steps 6 - 11 of the paper.
ProtogalaxyProver_(const std::vector< std::shared_ptr< DeciderPK > > &keys, const std::vector< std::shared_ptr< DeciderVK > > &vks, const std::shared_ptr< Transcript > &transcript, ExecutionTraceUsageTracker trace_usage_tracker=ExecutionTraceUsageTracker{})
CommitmentKey commitment_key
Univariate< FF, DeciderProvingKeys::BATCHED_EXTENDED_LENGTH, NUM_KEYS > CombinerQuotient
typename Flavor::template ProtogalaxyTupleOfTuplesOfUnivariates< NUM_KEYS > TupleOfTuplesOfUnivariates
ProtogalaxyProver_()=default
FF perturbator_evaluation
std::tuple< std::vector< FF >, Polynomial< FF > > perturbator_round(const std::shared_ptr< const DeciderPK > &accumulator)
Steps 2 - 5 of the paper.
bb::RelationParameters< Univariate< FF, DeciderProvingKeys::EXTENDED_LENGTH, 0, NUM_KEYS - 1 > > UnivariateRelationParameters
UnivariateSubrelationSeparators alphas
Polynomial< FF > perturbator
static constexpr size_t NUM_SUBRELATIONS
typename Flavor::CommitmentKey CommitmentKey
void run_oink_prover_on_each_incomplete_key()
Create inputs to folding protocol (an Oink interaction).
A univariate polynomial represented by its values on {domain_start, domain_start + 1,...
constexpr size_t NUM_KEYS
typename Flavor::Polynomial Polynomial
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static constexpr size_t EXTENDED_LENGTH
DeciderProvingKey_< Flavor > DeciderPK
static constexpr size_t NUM_SUBRELATIONS
static constexpr size_t NUM
DeciderVerificationKey_< Flavor > DeciderVK
Tracks the cumulative usage of the execution trace across a series of circuits.
Container for parameters used by the grand product (permutation, lookup) Honk relations.