20 auto verifier_output = verifier.verify_proof(proof.mega_proof);
21 if (!verifier_output.result) {
22 info(
"ChonkVerifier: verification failed at MegaZK verification step");
28 kernel_io.reconstruct_from_public(verifier.get_public_inputs());
31 const Commitment calldata_commitment = verifier.get_calldata_commitment();
32 const Commitment return_data_commitment = kernel_io.kernel_return_data;
33 bool databus_consistency_verified = (calldata_commitment == return_data_commitment);
34 vinfo(
"ChonkVerifier: databus consistency verified: ", databus_consistency_verified);
35 if (!databus_consistency_verified) {
36 info(
"Chonk Verifier: verification failed at databus consistency check");
41 MergeCommitments merge_commitments{ .t_commitments = verifier.get_ecc_op_wires(),
42 .T_prev_commitments = kernel_io.ecc_op_tables };
46 if (!goblin_output.all_checks_passed) {
47 info(
"ChonkVerifier: chonk verification failed at Goblin checks (merge/eccvm/translator reduction + pairing)");
55 vinfo(
"ChonkVerifier: Goblin IPA verified: ", ipa_verified);
57 info(
"ChonkVerifier: Chonk verification failed at IPA check");
71 auto [mega_pcs_pairing_points, mega_reduction_succeeded] = verifier.reduce_to_pairing_check(proof.mega_proof);
72 vinfo(
"ChonkRecursiveVerifier: MegaZK reduced to pairing check: ", mega_reduction_succeeded ?
"true" :
"false");
76 kernel_io.reconstruct_from_public(verifier.get_public_inputs());
79 const Commitment calldata_commitment = verifier.get_calldata_commitment();
80 if (kernel_io.kernel_return_data.get_value() != calldata_commitment.get_value()) {
81 info(
"ChonkRecursiveVerifier: Databus Consistency check failure");
83 kernel_io.kernel_return_data.incomplete_assert_equal(calldata_commitment);
86 MergeCommitments merge_commitments{ .t_commitments = verifier.get_ecc_op_wires(),
87 .T_prev_commitments = kernel_io.ecc_op_tables };
93 pairing_points_to_aggregate.reserve(NUM_PAIRING_POINTS);
96 pairing_points_to_aggregate.push_back(kernel_io.pairing_inputs);
97 pairing_points_to_aggregate.push_back(
std::move(mega_pcs_pairing_points));
98 pairing_points_to_aggregate.push_back(
std::move(goblin_output.merge_pairing_points));
99 pairing_points_to_aggregate.push_back(
std::move(goblin_output.translator_pairing_points));
105 constexpr bool handle_edge_cases =
false;
107 PairingPoints::aggregate_multiple(pairing_points_to_aggregate, handle_edge_cases);
111 .ipa_claim =
std::move(goblin_output.ipa_claim),
112 .ipa_proof =
std::move(goblin_output.ipa_proof),
113 .all_checks_passed = mega_reduction_succeeded && goblin_output.all_checks_passed };