20 : commitment_key(
std::move(bn254_commitment_key))
21 , transcript(transcript)
55 info(
"Constructing a Goblin proof with num ultra ops = ",
op_queue->get_ultra_ops_table_num_rows());
59 "Goblin::prove: merge_verification_queue should contain only a single proof at this stage.");
64 vinfo(
"prove eccvm...");
66 vinfo(
"finished eccvm proving.");
70 vinfo(
"prove translator...");
72 vinfo(
"finished translator proving.");
89 auto [pairing_points, merged_table_commitments] =
90 merge_verifier.
verify_proof(stdlib_merge_proof, merge_commitments);
94 return { pairing_points, merged_table_commitments };
99 const std::shared_ptr<Transcript>& transcript,
103 auto [merge_verified, merged_table_commitments] = merge_verifier.
verify_proof(proof.
merge_proof, merge_commitments);
110 bool accumulator_construction_verified = translator_verifier.
verify_proof(
118 bool op_queue_consistency_verified =
121 vinfo(
"merge verified?: ", merge_verified);
122 vinfo(
"eccvm verified?: ", eccvm_verified);
123 vinfo(
"accumulator construction_verified?: ", accumulator_construction_verified);
124 vinfo(
"translation verified?: ", translation_verified);
125 vinfo(
"consistency verified?: ", op_queue_consistency_verified);
127 return merge_verified && eccvm_verified && accumulator_construction_verified && translation_verified &&
128 op_queue_consistency_verified;
#define BB_ASSERT_EQ(actual, expected,...)
#define ASSERT(expression,...)
CommitmentKey object over a pairing group 𝔾₁.
ECCVMProof construct_proof()
FF evaluation_challenge_x
bool verify_proof(const ECCVMProof &proof)
This function verifies an ECCVM Honk proof for given program settings.
FF evaluation_challenge_x
TranslationEvaluations_< FF > translation_evaluations
FF translation_masking_term_eval
fq evaluation_challenge_x
Goblin(CommitmentKey< curve::BN254 > bn254_commitment_key=CommitmentKey< curve::BN254 >(), const std::shared_ptr< Transcript > &transcript=std::make_shared< Transcript >())
static bool verify(const GoblinProof &proof, const MergeCommitments &merge_commitments, const std::shared_ptr< Transcript > &transcript, const MergeSettings merge_settings=MergeSettings::PREPEND)
Verify a full Goblin proof (ECCVM, Translator, merge)
std::pair< PairingPoints, RecursiveTableCommitments > recursively_verify_merge(MegaBuilder &builder, const RecursiveMergeCommitments &merge_commitments, const std::shared_ptr< RecursiveTranscript > &transcript, const MergeSettings merge_settings=MergeSettings::PREPEND)
Recursively verify the next merge proof in the merge verification queue.
void prove_eccvm()
Construct an ECCVM proof and the translation polynomial evaluations.
fq translation_batching_challenge_v
void prove_merge(const std::shared_ptr< Transcript > &transcript=std::make_shared< Transcript >(), const MergeSettings merge_settings=MergeSettings::PREPEND)
Construct a merge proof for the goblin ECC ops in the provided circuit; append the proof to the merge...
std::shared_ptr< OpQueue > op_queue
void prove_translator()
Construct a translator proof.
GoblinProof prove(const MergeSettings merge_settings=MergeSettings::PREPEND)
Constuct a full Goblin proof (ECCVM, Translator, merge)
MergeProver::MergeProof MergeProof
CommitmentKey< curve::BN254 > commitment_key
std::deque< MergeProof > merge_verification_queue
std::shared_ptr< Transcript > transcript
Prover class for the Goblin ECC op queue transcript merge protocol.
Verifier class for the Goblin ECC op queue transcript merge protocol.
std::pair< bool, TableCommitments > verify_proof(const HonkProof &proof, const InputCommitments &input_commitments)
Verify proper construction of the aggregate Goblin ECC op queue polynomials T_j, j = 1,...
TranslatorCircuitBuilder creates a circuit that evaluates the correctness of the evaluation of EccOpQ...
HonkProof construct_proof()
bool verify_proof(const HonkProof &proof, const uint256_t &evaluation_input_x, const BF &batching_challenge_v)
This function verifies a TranslatorFlavor Honk proof for given program settings.
bool verify_translation(const TranslationEvaluations &translation_evaluations, const BF &translation_masking_term_eval)
bool verify_consistency_with_final_merge(const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &merge_commitments)
Checks that translator and merge protocol operate on the same EccOpQueue data.
A simple wrapper around a vector of stdlib field elements representing a proof.
std::pair< PairingPoints, TableCommitments > verify_proof(const stdlib::Proof< CircuitBuilder > &proof, const InputCommitments &input_commitments)
Computes inputs to a pairing check that, if verified, establishes proper construction of the aggregat...
Entry point for Barretenberg command-line interface.
MergeSettings
The MergeSettings define whether an current subtable will be added at the beginning (PREPEND) or at t...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
#define PROFILE_THIS_NAME(name)
HonkProof translator_proof