41 claim.
univariate.opening_pair.challenge.fix_witness();
42 claim.
univariate.opening_pair.evaluation.fix_witness();
44 challenge.fix_witness();
66 auto goblin_proof = goblin.
prove();
70 auto ultra_ops_table_columns = goblin.
op_queue->construct_ultra_ops_table_columns(
false);
73 table_commitments[idx] = pcs_commitment_key.
commit(ultra_ops_table_columns[idx]);
78 recursive_table_commitments[idx] = RecursiveCommitment::from_witness(outer_builder, table_commitments[idx]);
81 recursive_table_commitments[idx].unset_free_witness_tag();
85 return { goblin_proof, table_commitments, recursive_table_commitments };
97 auto [proof, table_commitments, recursive_table_commitments] = create_goblin_avm_prover_output(&
builder);
102 auto output = verifier.reduce_to_pairing_check_and_triple_ipa_opening();
104 fix_triple_ipa_claim_witnesses(output.triple_ipa_opening.claim);
109 inputs.pairing_inputs = output.translator_pairing_points;
110 inputs.ipa_claim = ipa_claim;
115 auto translator_pairing_points = output.translator_pairing_points;
123 translator_pairing_points.fix_witness();
128 info(
"Recursive Verifier: num gates = ",
builder.num_gates());
130 auto variables_in_one_gate = graph.get_variables_in_one_gate();
133 EXPECT_EQ(variables_in_one_gate.size(), 0);
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
CommitmentKey object over a pairing group 𝔾₁.
Commitment commit(PolynomialSpan< const Fr > polynomial, bool has_duplicates_hint=false) const
Uses the ProverSRS to create a commitment to p(X)
Simple verification key class for fixed-size circuits (ECCVM, Translator, AVM).
Specialization of Goblin for the AVM.
GoblinAvmProof prove()
Constuct a full GoblinAvm proof (ECCVM, Translator)
TranslatorFlavor::VerificationKey TranslatorVerificationKey
ECCVMFlavor::VerificationKey ECCVMVerificationKey
Curve::AffineElement Commitment
std::array< Commitment, UltraCircuitBuilder::NUM_WIRES > TableCommitments
std::shared_ptr< OpQueue > op_queue
IPA (inner product argument) commitment scheme class.
static constexpr size_t NUM_WIRES
static void construct_arithmetic_circuit(Builder &builder, const size_t target_log2_dyadic_size=4, bool include_public_inputs=true)
Populate a builder with a specified number of arithmetic gates; includes a PI.
Curve::AffineElement Commitment
UltraCircuitBuilder CircuitBuilder
bb::GoblinAvmRecursiveVerifier::Commitment RecursiveCommitment
static void fix_triple_ipa_claim_witnesses(TripleIpaClaim &claim)
std::array< Commitment, UltraCircuitBuilder::NUM_WIRES > TableCommitments
bb::GoblinAvmRecursiveVerifier::TableCommitments RecursiveTableCommitments
UltraFlavor::Commitment Commitment
static void SetUpTestSuite()
static ProverOutput create_goblin_avm_prover_output(OuterBuilder *outer_builder)
Create a goblin proof needed by the goblin recursive verifier.
The data that is propagated on the public inputs of a rollup circuit.
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
TEST_F(BoomerangGoblinRecursiveVerifierTests, graph_description_basic)
Construct and check a goblin recursive verification circuit.
BaseTranscript< stdlib::StdlibCodec< stdlib::field_t< UltraCircuitBuilder > >, stdlib::poseidon2< UltraCircuitBuilder > > UltraStdlibTranscript
MegaCircuitBuilder_< field< Bn254FrParams > > MegaCircuitBuilder
UltraStaticAnalyzer StaticAnalyzer
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
The compact TripleIPA opening claim: the statement that crosses verifier boundaries.
std::vector< Fr > multilinear_challenge
Commitment unshifted_commitment
Commitment shifted_commitment
OpeningClaim< Curve > univariate
RecursiveTableCommitments recursive_table_commitments
TableCommitments table_commitments