200 return (has_previous_accumulator ? 1 : 0) + group_size;
309 template <
typename NativeFlavor>
311 const VerifierInputs& queue_entry);
328 template <
typename InstanceFlavor>
358 template <
typename InstanceFlavor>
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
The IVC scheme used by the aztec client for private function execution.
PublicInputsResult process_app_public_inputs(std::vector< StdlibFF > &public_inputs, AppWitnessCommitments &witness_commitments)
ProverAccumulator prover_accumulator
std::shared_ptr< FoldingProver > folding_prover
void verify_decider_natively()
void set_num_circuits_accumulated_for_mocking(const size_t num_circuits)
Set the num circuits accumulated for mocking an IVC state. Used when writing VKs.
std::shared_ptr< MegaZKFlavor::VKAndHash > get_hiding_kernel_vk_and_hash() const
Get the hiding kernel verification key and hash for Chonk verification.
void complete_kernel_circuit_logic(ClientCircuit &circuit)
Append logic to complete a kernel circuit.
void run_native_instance_sumcheck(const std::shared_ptr< typename NativeFlavor::VerificationKey > &honk_vk, const VerifierInputs &queue_entry)
Templated native verification of the instance to accumulator sumcheck.
CircuitKind current_kind() const
Kind of the circuit currently being accumulated (or, between accumulate calls, the next one expected)...
VerifierAccumulator native_verifier_accum
void prove_multilinear_batching()
Generate multilinear batching proof for the current group of accumulators.
void accumulate(ClientCircuit &circuit, const CircuitVerificationKey &vk)
Accumulate a circuit into the running IVC.
static void hide_op_queue_content_in_hiding(ClientCircuit &circuit)
Adds two random non-ops to the hiding kernel for zero-knowledge.
void accumulate_hiding_kernel(ClientCircuit &circuit, const std::shared_ptr< MegaZKVerificationKey > &precomputed_vk)
Build the hiding kernel's ZK proving key and verification key (proving is deferred to prove()).
KernelRecursiveFlavor::FF StdlibFF
std::shared_ptr< Transcript > transcript
size_t num_circuits_accumulated
std::pair< PairingPoints, EccOpRunningHash > recursive_verification_and_consistency_checks(const StdlibVerifierInputs &verifier_inputs, HypernovaFoldingRecursiveVerifier &folding_verifier, const std::optional< StdlibFF > &prev_stdlib_acc_hash, const std::optional< EccOpRunningHash > &running_ecc_op_hash)
Run sumcheck on a single proof in the group and perform its databus/accumulator-hash consistency chec...
StdlibFF EccOpRunningHash
std::vector< CircuitKind > circuit_kinds
void update_native_verifier_accumulator(bool is_init_group)
Natively verify the multilinear batching proof and update the native verifier accumulator....
bb::CircuitVerificationKey CircuitVerificationKey
size_t get_num_circuits() const
std::deque< StdlibVerifierInputs > StdlibVerificationQueue
size_t get_num_circuits_accumulated() const
Get the number of circuits accumulated by the IVC.
ChonkProof prove()
Construct Chonk proof using the batched MegaZK + Translator protocol.
std::shared_ptr< HypernovaFoldingNativeVerifier > native_folding_verifier
bb::CircuitKind CircuitKind
void instantiate_stdlib_verification_queue(ClientCircuit &circuit, const std::vector< StdlibCircuitVKAndHash > &input_keys={})
Instantiate a stdlib verification queue for use in the kernel completion logic.
VerifierAccumulator recursive_verifier_native_accum
PublicInputsResult process_kernel_public_inputs(std::vector< StdlibFF > &public_inputs, KernelWitnessCommitments &witness_commitments, const std::optional< StdlibFF > &prev_accum_hash)
Process public inputs from a verified circuit and perform databus consistency checks.
const Goblin & get_goblin() const
curve::BN254::AffineElement Commitment
KernelRecursiveFlavor::WitnessCommitments KernelWitnessCommitments
std::shared_ptr< HidingKernelProverInstance > hiding_prover_inst
CircuitKind next_kind() const
Kind of the circuit that follows the one currently being accumulated, or CircuitKind::None if the cur...
MegaCircuitBuilder ClientCircuit
std::shared_ptr< Transcript > native_verifier_accumulation_transcript
bool is_hiding_kernel() const
Whether the circuit currently being accumulated/completed is the hiding kernel.
void accumulate_and_fold(ClientCircuit &circuit, const CircuitVerificationKey &vk)
Turn the incoming instance into an accumulator. If a kernel follows, also produce a multilinear batch...
KernelRecursiveFlavor::Commitment RecursiveCommitment
AppRecursiveFlavor::WitnessCommitments AppWitnessCommitments
std::deque< VerifierInputs > VerificationQueue
void debug_incoming_circuit(ClientCircuit &circuit, const std::shared_ptr< ProverInstance_< InstanceFlavor > > &prover_instance, const std::shared_ptr< typename InstanceFlavor::VerificationKey > &precomputed_vk)
VerificationQueue verification_queue
static constexpr size_t group_claim_count(bool has_previous_accumulator, size_t group_size)
Number of claims a kernel batches: the previous accumulator (absent for the init kernel) plus one sum...
HonkProof multilinear_batch_proof
std::shared_ptr< MegaZKVerificationKey > hiding_vk
bool is_init_kernel() const
Whether the kernel currently being completed is the init kernel (the first kernel,...
std::shared_ptr< Transcript > prover_accumulation_transcript
HonkProof instance_to_accumulator(ClientCircuit &circuit, const std::shared_ptr< typename InstanceFlavor::VerificationKey > &vk)
void verify_native_instance_sumcheck(const VerifierInputs &queue_entry)
Natively verify the instance-to-accumulator sumcheck of the circuit just accumulated....
StdlibVerificationQueue stdlib_verification_queue
FixedVKAndHash_< PrecomputedEntities< Commitment >, BF, ECCVMHardcodedVKAndHash > VerificationKey
The verification key stores commitments to the precomputed polynomials used by the verifier.
Simple verification key class for fixed-size circuits (ECCVM, Translator, AVM).
HyperNova decider prover. Produces final opening proof for the accumulated claim.
HyperNova decider verifier (native + recursive). Verifies final opening proof.
HyperNova folding prover. Folds circuit instances into accumulators, deferring PCS verification.
MultilinearBatchingProverClaim Accumulator
Mega flavor specialized for Chonk app circuits.
NativeVerificationKey_< PrecomputedEntities< Commitment >, Codec, HashFunction, CommitmentKey > VerificationKey
Recursive counterpart to MegaAppFlavor.
MegaAppFlavor::WitnessEntities< Commitment > WitnessCommitments
VKAndHash_< FF, VerificationKey > VKAndHash
Mega flavor specialized for Chonk kernel circuits.
NativeVerificationKey_< PrecomputedEntities< Commitment >, Codec, HashFunction, CommitmentKey > VerificationKey
Recursive counterpart to MegaKernelFlavor.
MegaKernelFlavor::WitnessEntities< Commitment > WitnessCommitments
stdlib::bn254< CircuitBuilder > Curve
StdlibTranscript< CircuitBuilder > Transcript
VKAndHash_< FF, VerificationKey > VKAndHash
typename Curve::ScalarField FF
typename Curve::Element Commitment
Hiding-kernel-only Mega variant: runs with ZK Sumcheck and a reduced relation set.
NativeVerificationKey_< PrecomputedEntities< Commitment >, Codec, HashFunction, CommitmentKey > VerificationKey
Base Native verification key class.
Contains all the information required by a Honk prover to create a proof, constructed from a finalize...
FixedVKAndHash_< VKEntities< Commitment >, FF, TranslatorHardcodedVKAndHash > VerificationKey
The verification key stores commitments to the precomputed polynomials used by the verifier.
Wrapper holding a verification key and its precomputed hash.
The VerifierInstance encapsulates all the necessary information for a Honk Verifier to verify a proof...
typename Group::affine_element AffineElement
Manages the data that is propagated on the public inputs of an application/function circuit.
Manages the data that is propagated on the public inputs of a hiding kernel circuit.
Manages the data that is propagated on the public inputs of a kernel circuit.
KernelIO_< MAX_APPS_PER_KERNEL > KernelIO
DefaultIO< MegaCircuitBuilder > AppIO
The data that is propagated on the public inputs of an application/function circuit.
Entry point for Barretenberg command-line interface.
std::vector< fr > HonkProof
std::variant< std::shared_ptr< MegaAppFlavor::VerificationKey >, std::shared_ptr< MegaKernelFlavor::VerificationKey >, std::shared_ptr< MegaZKFlavor::VerificationKey > > CircuitVerificationKey
field< Bn254FrParams > fr
HypernovaFoldingVerifier< true > HypernovaFoldingRecursiveVerifier
BaseTranscript< FrCodec, bb::crypto::Poseidon2< bb::crypto::Poseidon2Bn254ScalarFieldParams > > NativeTranscript
MegaCircuitBuilder_< field< Bn254FrParams > > MegaCircuitBuilder
VerifierCommitmentKey< Curve > vk
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Prover's claim for multilinear batching - contains polynomials and their evaluation claims.