37 kernel_io.reconstruct_from_public(oink_result.public_inputs);
40 if (!kernel_io.pairing_inputs.check()) {
41 info(
"ChonkVerifier: verification failed at PI pairing points check");
46 const Commitment kernel_calldata_commitment = oink_result.kernel_calldata_commitment;
47 const Commitment return_data_commitment = kernel_io.kernel_return_data;
48 bool databus_consistency_verified = (kernel_calldata_commitment == return_data_commitment);
49 vinfo(
"ChonkVerifier: databus consistency verified: ", databus_consistency_verified);
50 if (!databus_consistency_verified) {
51 info(
"ChonkVerifier: verification failed at databus consistency check");
58 MergeCommitments merge_commitments{ .t_commitments = oink_result.ecc_op_wires,
59 .T_prev_commitments = kernel_io.ecc_op_tables };
62 vinfo(
"ChonkVerifier: Merge reduced to pairing check: ", merge_result.reduction_succeeded ?
"true" :
"false");
64 if (!merge_result.reduction_succeeded) {
65 info(
"ChonkVerifier: verification failed at Merge reduction");
68 if (!merge_result.pairing_points.check()) {
69 info(
"ChonkVerifier: verification failed at Merge pairing check");
76 vinfo(
"ChonkVerifier: ECCVM reduced to TripleIPA claim: ", eccvm_result.reduction_succeeded ?
"true" :
"false");
78 if (!eccvm_result.reduction_succeeded) {
79 info(
"ChonkVerifier: verification failed at ECCVM step");
82 auto translator_input = eccvm_verifier.get_translator_input_data();
85 auto batched_result = batched_verifier.
verify(proof.joint_proof,
86 translator_input.evaluation_challenge_x,
87 translator_input.batching_challenge_v,
88 translator_input.accumulated_result,
89 merge_result.merged_commitments);
90 vinfo(
"ChonkVerifier: Batched translator+joint reduction: ", batched_result.reduction_succeeded ?
"true" :
"false");
92 if (!batched_result.reduction_succeeded) {
93 info(
"ChonkVerifier: verification failed at batched translator+joint reduction");
96 if (!batched_result.pairing_points.check()) {
97 info(
"ChonkVerifier: verification failed at batched translator+joint pairing check");
101 return { .all_checks_passed =
true,
102 .triple_ipa_opening = { .claim =
std::move(eccvm_result.triple_ipa_claim), .proof = proof.ipa_proof } };
139 kernel_io.reconstruct_from_public(oink_result.public_inputs);
143 if (kernel_io.kernel_return_data.get_value() != kernel_calldata_commitment.get_value()) {
144 info(
"ChonkRecursiveVerifier: Databus Consistency check failure");
146 kernel_io.kernel_return_data.incomplete_assert_equal(kernel_calldata_commitment);
151 MergeCommitments merge_commitments{ .t_commitments = oink_result.ecc_op_wires,
152 .T_prev_commitments = kernel_io.ecc_op_tables };
155 vinfo(
"ChonkRecursiveVerifier: Merge reduced to pairing check: ",
156 merge_result.reduction_succeeded ?
"true" :
"false");
161 vinfo(
"ChonkRecursiveVerifier: ECCVM reduced to TripleIPA claim: ",
162 eccvm_result.reduction_succeeded ?
"true" :
"false");
163 auto translator_input = eccvm_verifier.get_translator_input_data();
166 auto batched_result = batched_verifier.
verify(proof.joint_proof,
167 translator_input.evaluation_challenge_x,
168 translator_input.batching_challenge_v,
169 translator_input.accumulated_result,
170 merge_result.merged_commitments);
171 vinfo(
"ChonkRecursiveVerifier: Batched translator+joint reduction: ",
172 batched_result.reduction_succeeded ?
"true" :
"false");
176 pairing_points_to_aggregate.reserve(NUM_PAIRING_POINTS);
178 pairing_points_to_aggregate.push_back(kernel_io.pairing_inputs);
179 pairing_points_to_aggregate.push_back(
std::move(merge_result.pairing_points));
180 pairing_points_to_aggregate.push_back(
std::move(batched_result.pairing_points));
186 constexpr bool handle_edge_cases =
false;
188 PairingPoints::aggregate_multiple(pairing_points_to_aggregate, handle_edge_cases);
190 bool all_checks_passed =
191 merge_result.reduction_succeeded && eccvm_result.reduction_succeeded && batched_result.reduction_succeeded;
195 .triple_ipa_opening = { .claim =
std::move(eccvm_result.triple_ipa_claim), .proof = proof.ipa_proof },
196 .all_checks_passed = all_checks_passed,
ReductionResult verify(const Proof &joint_proof, const TransBF &evaluation_input_x, const TransBF &batching_challenge_v, const TransBF &accumulated_result, const std::array< Commitment, TranslatorFlavor::NUM_OP_QUEUE_WIRES > &op_queue_wire_commitments)
Phase 2: Verify translator Oink + joint sumcheck + joint PCS.