24 : commitment_key(
std::move(bn254_commitment_key))
25 , transcript(transcript)
45 ECCVMFlavor::PCS::compute_opening_proof(eccvm_prover.
key->commitment_key, opening_claim, ipa_transcript);
66 info(
"Goblin: num ultra ops = ",
op_queue->get_ultra_ops_count());
70 "Goblin::prove: merge_verification_queue should contain only a single proof at this stage.");
73 vinfo(
"prove eccvm...");
75 vinfo(
"finished eccvm proving.");
76 vinfo(
"prove translator...");
78 vinfo(
"finished translator proving.");
94 auto [pairing_points, merged_table_commitments, degree_check_passed, concatenation_check_passed] =
95 merge_verifier.
verify_proof(stdlib_merge_proof, merge_commitments);
99 return { pairing_points, merged_table_commitments };
104 const std::shared_ptr<Transcript>& transcript,
108 auto [merge_pairing_points, merged_table_commitments, degree_check_passed, concatenation_check_passed] =
110 bool merge_verified = merge_pairing_points.check() && degree_check_passed && concatenation_check_passed;
118 ECCVMFlavor::PCS::reduce_verify(eccvm_verifier.
key->pcs_verification_key, opening_claim, ipa_transcript);
120 vinfo(
"eccvm ipa verified?: ", ipa_verified);
133 merged_table_commitments);
135 vinfo(
"merge verified?: ", merge_verified);
136 vinfo(
"eccvm verified?: ", eccvm_verified);
137 vinfo(
"translator verified?: ", translator_verified);
139 return merge_verified && eccvm_verified && translator_verified;
#define BB_ASSERT(expression,...)
#define BB_ASSERT_EQ(actual, expected,...)
#define BB_BENCH_NAME(name)
CommitmentKey object over a pairing group 𝔾₁.
FF evaluation_challenge_x
std::pair< Proof, OpeningClaim > construct_proof()
std::shared_ptr< ProvingKey > key
Unified ECCVM verifier class for both native and recursive verification.
bool translation_masking_consistency_checked
std::shared_ptr< VerificationKey > key
OpeningClaim< Curve > verify_proof()
Verifies an ECCVM Honk proof for given program settings.
TranslatorInputData get_translator_input_data() const
Get the data required by the TranslatorVerifier.
fq evaluation_challenge_x
void ensure_well_formed_op_queue_for_avm(MegaBuilder &builder) const
Translator requires the op queue to start with a no-op to ensure op queue polynomials are shiftable a...
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.
Unified verifier class for the Goblin ECC op queue transcript merge protocol.
VerificationResult verify_proof(const Proof &proof, const InputCommitments &input_commitments)
Verify the merge proof.
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, const uint256_t &accumulated_result, const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &op_queue_wire_commitments)
This function verifies a TranslatorFlavor Honk proof for given program settings.
A simple wrapper around a vector of stdlib field elements representing a proof.
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
HonkProof translator_proof
curve::BN254::BaseField Fq