23 vinfo(
"Goblin: Merge reduced to pairing check successfully: ", merge_result.reduction_succeeded ?
"true" :
"false");
25 if constexpr (!IsRecursive) {
26 if (!merge_result.reduction_succeeded) {
27 info(
"Goblin verification failed at Merge step");
30 if (!merge_result.pairing_points.check()) {
31 info(
"Goblin verification failed at Merge pairing check");
37 ECCVMVerifier eccvm_verifier{ transcript, proof.eccvm_proof };
39 vinfo(
"Goblin: ECCVM reduced to IPA opening successfully: ", eccvm_result.reduction_succeeded ?
"true" :
"false");
41 if constexpr (!IsRecursive) {
42 if (!eccvm_result.reduction_succeeded) {
43 info(
"Goblin verification failed at ECCVM step");
49 auto translator_input = eccvm_verifier.get_translator_input_data();
55 proof.translator_proof,
56 translator_input.evaluation_challenge_x,
58 translator_input.accumulated_result,
59 merge_result.merged_commitments };
60 auto translator_result = translator_verifier.reduce_to_pairing_check();
61 vinfo(
"Goblin: Translator reduced to pairing check successfully: ",
62 translator_result.reduction_succeeded ?
"true" :
"false");
64 if constexpr (!IsRecursive) {
65 if (!translator_result.reduction_succeeded) {
66 info(
"Goblin verification failed at Translator step");
70 if (!translator_result.pairing_points.check()) {
71 info(
"Goblin verification failed at Translator pairing check");
79 bool all_checks_passed =
80 merge_result.reduction_succeeded && eccvm_result.reduction_succeeded && translator_result.reduction_succeeded;
88 .translator_pairing_points =
std::move(translator_result.pairing_points),
89 .ipa_claim =
std::move(eccvm_result.ipa_claim),
90 .ipa_proof = proof.ipa_proof,
91 .all_checks_passed = all_checks_passed };