From 6be383e9684c63f45f5d2cf426ed44041c86a68a Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 25 Jun 2024 13:04:31 +0000 Subject: [PATCH 1/2] enable merge recursive verifier in goblin recursive verifier --- .../verifier/client_ivc_recursive_verifier.test.cpp | 4 ++++ .../honk_recursion/verifier/goblin_recursive_verifier.cpp | 6 ++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp index b7c5f01e502..4be2ca25960 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.test.cpp @@ -88,6 +88,10 @@ TEST_F(ClientIVCRecursionTests, Basic) // Generate the recursive verification circuit verifier.verify(proof); + info("Recursive Verifier: num gates = ", builder->num_gates); + + EXPECT_EQ(builder->failed(), false) << builder->err(); + EXPECT_TRUE(CircuitChecker::check(*builder)); } diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/goblin_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/goblin_recursive_verifier.cpp index 692382da3a0..28f8c323e55 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/goblin_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/goblin_recursive_verifier.cpp @@ -28,9 +28,7 @@ void GoblinRecursiveVerifier::verify(const GoblinProof& proof) }; translator_verifier.verify_translation(translation_evaluations); - // TODO(https://github.com/AztecProtocol/barretenberg/issues/1024): Perform recursive merge verification once it - // works with Ultra arithmetization - // MergeVerifier merge_verified{ builder }; - // [[maybe_unused]] auto merge_pairing_points = merge_verifier.verify_proof(proof.merge_proof); + MergeVerifier merge_verifier{ builder }; + merge_verifier.verify_proof(proof.merge_proof); } } // namespace bb::stdlib::recursion::honk \ No newline at end of file From 06e67536613a3cf062c4d613b877100ddab9175c Mon Sep 17 00:00:00 2001 From: maramihali Date: Tue, 25 Jun 2024 14:54:20 +0000 Subject: [PATCH 2/2] added issue --- .../verifier/client_ivc_recursive_verifier.cpp | 6 ++++++ .../honk_recursion/verifier/goblin_recursive_verifier.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.cpp index 0286a7dbc94..055fa5ca299 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/client_ivc_recursive_verifier.cpp @@ -2,6 +2,12 @@ namespace bb::stdlib::recursion::honk { +/** + * @brief Performs recursive verification of the Client IVC proof. + * + * @todo (https://github.com/AztecProtocol/barretenberg/issues/934): Add logic for accumulating the pairing points + * produced by the verifiers (and potentially IPA accumulators for ECCVM verifier) + */ void ClientIVCRecursiveVerifier::verify(const ClientIVC::Proof& proof) { // Perform recursive folding verification diff --git a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/goblin_recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/goblin_recursive_verifier.cpp index 28f8c323e55..5ad5a190621 100644 --- a/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/goblin_recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/stdlib/honk_recursion/verifier/goblin_recursive_verifier.cpp @@ -2,6 +2,12 @@ namespace bb::stdlib::recursion::honk { +/** + * @brief Runs the Goblin recursive verifier consisting of ECCVM, Translator and Merge verifiers. + * + * @todo https://github.com/AztecProtocol/barretenberg/issues/934: Add logic for accumulating the pairing points + * produced by the translator and merge verifier (and potentially IPA accumulators for ECCVM verifier) + */ void GoblinRecursiveVerifier::verify(const GoblinProof& proof) { // Run the ECCVM recursive verifier