From 19eb7f9bd48f1f5fb8d9e9a2e172c8f0c2c9445b Mon Sep 17 00:00:00 2001 From: Lucas Xia Date: Wed, 13 Mar 2024 14:05:50 -0600 Subject: [PATCH] refactor: moving wit comms and witness and comm labels from instance to oink (#5199) Continues the refactoring of instance by moving witness_commitments and commitment_labels to oink prover. Also changes some uses of prover_polynomials to proving_key instead. --- .../sumcheck/instance/prover_instance.hpp | 4 ---- .../barretenberg/ultra_honk/oink_prover.cpp | 20 +++++-------------- .../barretenberg/ultra_honk/oink_prover.hpp | 2 ++ 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp index 62f9cca22af..4a40250fd6f 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp @@ -25,8 +25,6 @@ template class ProverInstance_ { using FF = typename Flavor::FF; using ProverPolynomials = typename Flavor::ProverPolynomials; using Polynomial = typename Flavor::Polynomial; - using WitnessCommitments = typename Flavor::WitnessCommitments; - using CommitmentLabels = typename Flavor::CommitmentLabels; using RelationSeparator = typename Flavor::RelationSeparator; using Trace = ExecutionTrace_; @@ -34,8 +32,6 @@ template class ProverInstance_ { public: std::shared_ptr proving_key; ProverPolynomials prover_polynomials; - WitnessCommitments witness_commitments; - CommitmentLabels commitment_labels; std::array sorted_polynomials; diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp index bfb1d0ad97f..9f140c5815c 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.cpp @@ -30,8 +30,6 @@ template void OinkProver::execute_preamble_round( */ template void OinkProver::execute_wire_commitments_round() { - auto& witness_commitments = instance->witness_commitments; - // Commit to the first three wire polynomials of the instance // We only commit to the fourth wire polynomial after adding memory recordss witness_commitments.w_l = commitment_key->commit(instance->proving_key->w_l); @@ -39,7 +37,6 @@ template void OinkProver::execute_wire_commitment witness_commitments.w_o = commitment_key->commit(instance->proving_key->w_o); auto wire_comms = witness_commitments.get_wires(); - auto& commitment_labels = instance->commitment_labels; auto wire_labels = commitment_labels.get_wires(); for (size_t idx = 0; idx < 3; ++idx) { transcript->send_to_verifier(domain_separator + wire_labels[idx], wire_comms[idx]); @@ -72,16 +69,14 @@ template void OinkProver::execute_wire_commitment */ template void OinkProver::execute_sorted_list_accumulator_round() { - auto& witness_commitments = instance->witness_commitments; - const auto& commitment_labels = instance->commitment_labels; auto eta = transcript->template get_challenge(domain_separator + "eta"); instance->compute_sorted_accumulator_polynomials(eta); // Commit to the sorted witness-table accumulator and the finalized (i.e. with memory records) fourth wire // polynomial - witness_commitments.sorted_accum = commitment_key->commit(instance->prover_polynomials.sorted_accum); - witness_commitments.w_4 = commitment_key->commit(instance->prover_polynomials.w_4); + witness_commitments.sorted_accum = commitment_key->commit(instance->proving_key->sorted_accum); + witness_commitments.w_4 = commitment_key->commit(instance->proving_key->w_4); transcript->send_to_verifier(domain_separator + commitment_labels.sorted_accum, witness_commitments.sorted_accum); transcript->send_to_verifier(domain_separator + commitment_labels.w_4, witness_commitments.w_4); @@ -93,16 +88,13 @@ template void OinkProver::execute_sorted_list_acc */ template void OinkProver::execute_log_derivative_inverse_round() { - auto& witness_commitments = instance->witness_commitments; - const auto& commitment_labels = instance->commitment_labels; - auto [beta, gamma] = transcript->template get_challenges(domain_separator + "beta", domain_separator + "gamma"); instance->relation_parameters.beta = beta; instance->relation_parameters.gamma = gamma; if constexpr (IsGoblinFlavor) { // Compute and commit to the logderivative inverse used in DataBus instance->compute_logderivative_inverse(beta, gamma); - witness_commitments.lookup_inverses = commitment_key->commit(instance->prover_polynomials.lookup_inverses); + witness_commitments.lookup_inverses = commitment_key->commit(instance->proving_key->lookup_inverses); transcript->send_to_verifier(domain_separator + commitment_labels.lookup_inverses, witness_commitments.lookup_inverses); } @@ -114,14 +106,12 @@ template void OinkProver::execute_log_derivative_ */ template void OinkProver::execute_grand_product_computation_round() { - auto& witness_commitments = instance->witness_commitments; - const auto& commitment_labels = instance->commitment_labels; instance->compute_grand_product_polynomials(instance->relation_parameters.beta, instance->relation_parameters.gamma); - witness_commitments.z_perm = commitment_key->commit(instance->prover_polynomials.z_perm); - witness_commitments.z_lookup = commitment_key->commit(instance->prover_polynomials.z_lookup); + witness_commitments.z_perm = commitment_key->commit(instance->proving_key->z_perm); + witness_commitments.z_lookup = commitment_key->commit(instance->proving_key->z_lookup); transcript->send_to_verifier(domain_separator + commitment_labels.z_perm, witness_commitments.z_perm); transcript->send_to_verifier(domain_separator + commitment_labels.z_lookup, witness_commitments.z_lookup); diff --git a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.hpp b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.hpp index 470794d8237..d9dc0a1a209 100644 --- a/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.hpp +++ b/barretenberg/cpp/src/barretenberg/ultra_honk/oink_prover.hpp @@ -27,6 +27,8 @@ template class OinkProver { std::shared_ptr transcript; std::shared_ptr commitment_key; std::string domain_separator; + typename Flavor::WitnessCommitments witness_commitments; + typename Flavor::CommitmentLabels commitment_labels; OinkProver(const std::shared_ptr>& inst, const std::shared_ptr& commitment_key,