diff --git a/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp b/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp index 01b1abcdef5d..7501b87a68e9 100644 --- a/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp +++ b/barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.test.cpp @@ -125,12 +125,13 @@ TEST_F(ClientIVCTests, Full) auto intermediary_acc = update_accumulator_and_decide_native( ivc.prover_fold_output.accumulator, kernel_fold_proof, foo_verifier_instance, kernel_vk); - VerifierFoldData kernel_fold_output = { kernel_fold_proof, function_vk_with_merge }; + VerifierFoldData kernel_fold_output = { kernel_fold_proof, kernel_vk }; size_t NUM_CIRCUITS = 1; for (size_t circuit_idx = 0; circuit_idx < NUM_CIRCUITS; ++circuit_idx) { // Accumulate function circuit Builder function_circuit = create_mock_circuit(ivc); FoldProof function_fold_proof = ivc.accumulate(function_circuit); + function_vk_with_merge = std::make_shared(ivc.prover_instance->proving_key); intermediary_acc = update_accumulator_and_decide_native( ivc.prover_fold_output.accumulator, function_fold_proof, intermediary_acc, function_vk_with_merge); diff --git a/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_verifier.cpp b/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_verifier.cpp index cf08f67d30a1..1b0ce6e39fb1 100644 --- a/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_verifier.cpp @@ -15,11 +15,12 @@ void ProtoGalaxyVerifier_::receive_and_finalise_instance(cons transcript->template receive_from_prover(domain_separator + "_public_input_size"); inst->verification_key->pub_inputs_offset = transcript->template receive_from_prover(domain_separator + "_pub_inputs_offset"); - inst->verification_key->public_inputs.clear(); + std::vector public_inputs; for (size_t i = 0; i < inst->verification_key->num_public_inputs; ++i) { auto public_input_i = transcript->template receive_from_prover(domain_separator + "_public_input_" + std::to_string(i)); - inst->verification_key->public_inputs.emplace_back(public_input_i); + public_inputs.emplace_back(public_input_i); + ASSERT(public_input_i == inst->verification_key->public_inputs[i]); } // Get commitments to first three wire polynomials diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp index b0b7a602c184..c94ca141555a 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/ultra_verifier.cpp @@ -74,6 +74,9 @@ template bool UltraVerifier_::verify_proof(const HonkP for (size_t i = 0; i < public_input_size; ++i) { auto public_input_i = transcript->template receive_from_prover("public_input_" + std::to_string(i)); public_inputs.emplace_back(public_input_i); + if (public_input_i != key->public_inputs[i]) { + return false; + } } // Get commitments to first three wire polynomials