25 vinfo(
"Goblin: Merge reduced to pairing check successfully: ", merge_result.reduction_succeeded ?
"true" :
"false");
27 if constexpr (!IsRecursive) {
28 if (!merge_result.reduction_succeeded) {
29 info(
"Goblin verification failed at Merge step");
32 if (!merge_result.pairing_points.check()) {
33 info(
"Goblin verification failed at Merge pairing check");
39 ECCVMVerifier eccvm_verifier{ transcript, proof.eccvm_proof };
41 vinfo(
"Goblin: ECCVM reduced to IPA opening successfully: ", eccvm_result.reduction_succeeded ?
"true" :
"false");
43 if constexpr (!IsRecursive) {
44 if (!eccvm_result.reduction_succeeded) {
45 info(
"Goblin verification failed at ECCVM step");
51 auto translator_input = eccvm_verifier.get_translator_input_data();
57 proof.translator_proof,
58 translator_input.evaluation_challenge_x,
60 translator_input.accumulated_result,
61 merge_result.merged_commitments };
62 auto translator_result = translator_verifier.reduce_to_pairing_check();
63 vinfo(
"Goblin: Translator reduced to pairing check successfully: ",
64 translator_result.reduction_succeeded ?
"true" :
"false");
66 if constexpr (!IsRecursive) {
67 if (!translator_result.reduction_succeeded) {
68 info(
"Goblin verification failed at Translator step");
72 if (!translator_result.pairing_points.check()) {
73 info(
"Goblin verification failed at Translator pairing check");
81 bool all_checks_passed =
82 merge_result.reduction_succeeded && eccvm_result.reduction_succeeded && translator_result.reduction_succeeded;
90 .translator_pairing_points =
std::move(translator_result.pairing_points),
91 .ipa_claim =
std::move(eccvm_result.ipa_claim),
92 .ipa_proof = proof.ipa_proof,
93 .all_checks_passed = all_checks_passed };