From 9b1010eb9decacfc82ef30bdf50102ecda9e8712 Mon Sep 17 00:00:00 2001 From: Suyash Bagad Date: Tue, 14 Mar 2023 12:11:11 +0000 Subject: [PATCH 1/9] Make dsl composer agnostic. --- cpp/src/barretenberg/dsl/CMakeLists.txt | 2 +- .../dsl/acir_format/acir_format.cpp | 24 +++++------ .../dsl/acir_format/acir_format.hpp | 23 +++++----- .../dsl/acir_format/blake2s_constraint.cpp | 7 +-- .../dsl/acir_format/blake2s_constraint.hpp | 6 ++- .../dsl/acir_format/ecdsa_secp256k1.cpp | 19 ++++---- .../dsl/acir_format/ecdsa_secp256k1.hpp | 6 ++- .../dsl/acir_format/fixed_base_scalar_mul.cpp | 5 +-- .../dsl/acir_format/fixed_base_scalar_mul.hpp | 6 ++- .../dsl/acir_format/hash_to_field.cpp | 7 +-- .../dsl/acir_format/hash_to_field.hpp | 6 ++- .../dsl/acir_format/logic_constraint.cpp | 6 +-- .../dsl/acir_format/logic_constraint.hpp | 11 ++--- .../merkle_membership_constraint.cpp | 6 +-- .../merkle_membership_constraint.hpp | 6 ++- .../barretenberg/dsl/acir_format/pedersen.cpp | 5 +-- .../barretenberg/dsl/acir_format/pedersen.hpp | 6 ++- .../dsl/acir_format/schnorr_verify.cpp | 11 ++--- .../dsl/acir_format/schnorr_verify.hpp | 6 ++- .../dsl/acir_format/sha256_constraint.cpp | 7 +-- .../dsl/acir_format/sha256_constraint.hpp | 6 ++- .../{turbo_proofs => proofs}/CMakeLists.txt | 0 cpp/src/barretenberg/dsl/proofs/c_bind.cpp | 43 +++++++++++++++++++ .../dsl/{turbo_proofs => proofs}/c_bind.hpp | 0 .../turbo_proofs.cpp => proofs/proofs.cpp} | 32 +++++++------- cpp/src/barretenberg/dsl/proofs/proofs.hpp | 18 ++++++++ .../barretenberg/dsl/turbo_proofs/c_bind.cpp | 43 ------------------- .../dsl/turbo_proofs/turbo_proofs.hpp | 18 -------- 28 files changed, 165 insertions(+), 170 deletions(-) rename cpp/src/barretenberg/dsl/{turbo_proofs => proofs}/CMakeLists.txt (100%) create mode 100644 cpp/src/barretenberg/dsl/proofs/c_bind.cpp rename cpp/src/barretenberg/dsl/{turbo_proofs => proofs}/c_bind.hpp (100%) rename cpp/src/barretenberg/dsl/{turbo_proofs/turbo_proofs.cpp => proofs/proofs.cpp} (83%) create mode 100644 cpp/src/barretenberg/dsl/proofs/proofs.hpp delete mode 100644 cpp/src/barretenberg/dsl/turbo_proofs/c_bind.cpp delete mode 100644 cpp/src/barretenberg/dsl/turbo_proofs/turbo_proofs.hpp diff --git a/cpp/src/barretenberg/dsl/CMakeLists.txt b/cpp/src/barretenberg/dsl/CMakeLists.txt index 9e37be54e7..04eeab8d78 100644 --- a/cpp/src/barretenberg/dsl/CMakeLists.txt +++ b/cpp/src/barretenberg/dsl/CMakeLists.txt @@ -1,2 +1,2 @@ add_subdirectory(acir_format) -add_subdirectory(turbo_proofs) +add_subdirectory(proofs) diff --git a/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp b/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp index 4a411a1e32..365b3fdb69 100644 --- a/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp @@ -2,7 +2,7 @@ namespace acir_format { -void read_witness(TurboComposer& composer, std::vector witness) +void read_witness(Composer& composer, std::vector witness) { composer.variables[0] = 0; for (size_t i = 0; i < witness.size(); ++i) { @@ -10,7 +10,7 @@ void read_witness(TurboComposer& composer, std::vector witness } } -void create_circuit(TurboComposer& composer, const acir_format& constraint_system) +void create_circuit(Composer& composer, const acir_format& constraint_system) { if (constraint_system.public_inputs.size() > constraint_system.varnum) { std::cout << "too many public inputs!" << std::endl; @@ -85,14 +85,14 @@ void create_circuit(TurboComposer& composer, const acir_format& constraint_syste } } -TurboComposer create_circuit(const acir_format& constraint_system, - std::unique_ptr&& crs_factory) +Composer create_circuit(const acir_format& constraint_system, + std::unique_ptr&& crs_factory) { if (constraint_system.public_inputs.size() > constraint_system.varnum) { std::cout << "too many public inputs!" << std::endl; } - TurboComposer composer(std::move(crs_factory)); + Composer composer(std::move(crs_factory)); for (size_t i = 1; i < constraint_system.varnum; ++i) { // If the index is in the public inputs vector, then we add it as a public input @@ -165,15 +165,15 @@ TurboComposer create_circuit(const acir_format& constraint_system, return composer; } -TurboComposer create_circuit_with_witness(const acir_format& constraint_system, - std::vector witness, - std::unique_ptr&& crs_factory) +Composer create_circuit_with_witness(const acir_format& constraint_system, + std::vector witness, + std::unique_ptr&& crs_factory) { if (constraint_system.public_inputs.size() > constraint_system.varnum) { std::cout << "too many public inputs!" << std::endl; } - TurboComposer composer(std::move(crs_factory)); + Composer composer(std::move(crs_factory)); for (size_t i = 1; i < constraint_system.varnum; ++i) { // If the index is in the public inputs vector, then we add it as a public input @@ -248,13 +248,13 @@ TurboComposer create_circuit_with_witness(const acir_format& constraint_system, return composer; } -TurboComposer create_circuit_with_witness(const acir_format& constraint_system, std::vector witness) +Composer create_circuit_with_witness(const acir_format& constraint_system, std::vector witness) { if (constraint_system.public_inputs.size() > constraint_system.varnum) { std::cout << "too many public inputs!" << std::endl; } - auto composer = TurboComposer(); + auto composer = Composer(); for (size_t i = 1; i < constraint_system.varnum; ++i) { // If the index is in the public inputs vector, then we add it as a public input @@ -329,7 +329,7 @@ TurboComposer create_circuit_with_witness(const acir_format& constraint_system, return composer; } -void create_circuit_with_witness(TurboComposer& composer, const acir_format& constraint_system, std::vector witness) +void create_circuit_with_witness(Composer& composer, const acir_format& constraint_system, std::vector witness) { if (constraint_system.public_inputs.size() > constraint_system.varnum) { std::cout << "too many public inputs!" << std::endl; diff --git a/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp b/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp index 17c40441d8..d0d8d18075 100644 --- a/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp @@ -9,6 +9,9 @@ #include "merkle_membership_constraint.hpp" #include "pedersen.hpp" #include "hash_to_field.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -35,22 +38,20 @@ struct acir_format { friend bool operator==(acir_format const& lhs, acir_format const& rhs) = default; }; -void read_witness(TurboComposer& composer, std::vector witness); +void read_witness(Composer& composer, std::vector witness); -void create_circuit(TurboComposer& composer, const acir_format& constraint_system); +void create_circuit(Composer& composer, const acir_format& constraint_system); -TurboComposer create_circuit(const acir_format& constraint_system, - std::unique_ptr&& crs_factory); +Composer create_circuit(const acir_format& constraint_system, + std::unique_ptr&& crs_factory); -TurboComposer create_circuit_with_witness(const acir_format& constraint_system, - std::vector witness, - std::unique_ptr&& crs_factory); +Composer create_circuit_with_witness(const acir_format& constraint_system, + std::vector witness, + std::unique_ptr&& crs_factory); -TurboComposer create_circuit_with_witness(const acir_format& constraint_system, std::vector witness); +Composer create_circuit_with_witness(const acir_format& constraint_system, std::vector witness); -void create_circuit_with_witness(TurboComposer& composer, - const acir_format& constraint_system, - std::vector witness); +void create_circuit_with_witness(Composer& composer, const acir_format& constraint_system, std::vector witness); // Serialisation template inline void read(B& buf, acir_format& data) diff --git a/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp b/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp index 38876d0a5b..58ec5a928a 100644 --- a/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.cpp @@ -1,12 +1,9 @@ #include "blake2s_constraint.hpp" #include "round.hpp" -#include "barretenberg/stdlib/types/types.hpp" - -using namespace plonk::stdlib::types; namespace acir_format { -void create_blake2s_constraints(plonk::TurboComposer& composer, const Blake2sConstraint& constraint) +void create_blake2s_constraints(Composer& composer, const Blake2sConstraint& constraint) { // Create byte array struct @@ -27,7 +24,7 @@ void create_blake2s_constraints(plonk::TurboComposer& composer, const Blake2sCon arr.write(element_bytes); } - byte_array_ct output_bytes = plonk::stdlib::blake2s(arr); + byte_array_ct output_bytes = plonk::stdlib::blake2s(arr); // Convert byte array to vector of field_t auto bytes = output_bytes.bytes(); diff --git a/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp b/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp index e4ce915b5a..7119b2dc60 100644 --- a/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/blake2s_constraint.hpp @@ -1,7 +1,9 @@ #pragma once #include #include -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -19,7 +21,7 @@ struct Blake2sConstraint { friend bool operator==(Blake2sConstraint const& lhs, Blake2sConstraint const& rhs) = default; }; -void create_blake2s_constraints(plonk::TurboComposer& composer, const Blake2sConstraint& constraint); +void create_blake2s_constraints(Composer& composer, const Blake2sConstraint& constraint); template inline void read(B& buf, Blake2sInput& constraint) { diff --git a/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp b/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp index 5d495775d7..b38692b3c6 100644 --- a/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp @@ -1,13 +1,10 @@ #include "ecdsa_secp256k1.hpp" #include "barretenberg/crypto/ecdsa/ecdsa.hpp" #include "barretenberg/stdlib/encryption/ecdsa/ecdsa.hpp" -#include "barretenberg/stdlib/types/types.hpp" - -using namespace plonk::stdlib::types; namespace acir_format { -crypto::ecdsa::signature ecdsa_convert_signature(plonk::TurboComposer& composer, std::vector signature) +crypto::ecdsa::signature ecdsa_convert_signature(Composer& composer, std::vector signature) { crypto::ecdsa::signature signature_cr; @@ -42,7 +39,7 @@ crypto::ecdsa::signature ecdsa_convert_signature(plonk::TurboComposer& composer, return signature_cr; } -secp256k1_ct::g1_ct ecdsa_convert_inputs(plonk::TurboComposer* ctx, const secp256k1::g1::affine_element& input) +secp256k1_ct::g1_ct ecdsa_convert_inputs(Composer* ctx, const secp256k1::g1::affine_element& input) { uint256_t x_u256(input.x); uint256_t y_u256(input.y); @@ -61,7 +58,7 @@ secp256k1_ct::g1_ct ecdsa_convert_inputs(plonk::TurboComposer* ctx, const secp25 // vector of bytes here, assumes that the witness indices point to a field element which can be represented // with just a byte. // notice that this function truncates each field_element to a byte -byte_array_ct ecdsa_vector_of_bytes_to_byte_array(plonk::TurboComposer& composer, std::vector vector_of_bytes) +byte_array_ct ecdsa_vector_of_bytes_to_byte_array(Composer& composer, std::vector vector_of_bytes) { byte_array_ct arr(&composer); @@ -77,13 +74,13 @@ byte_array_ct ecdsa_vector_of_bytes_to_byte_array(plonk::TurboComposer& composer } return arr; } -witness_ct ecdsa_index_to_witness(plonk::TurboComposer& composer, uint32_t index) +witness_ct ecdsa_index_to_witness(Composer& composer, uint32_t index) { fr value = composer.get_variable(index); return { &composer, value }; } -void create_ecdsa_verify_constraints(plonk::TurboComposer& composer, const EcdsaSecp256k1Constraint& input) +void create_ecdsa_verify_constraints(Composer& composer, const EcdsaSecp256k1Constraint& input) { auto new_sig = ecdsa_convert_signature(composer, input.signature); @@ -98,15 +95,15 @@ void create_ecdsa_verify_constraints(plonk::TurboComposer& composer, const Ecdsa std::vector rr(new_sig.r.begin(), new_sig.r.end()); std::vector ss(new_sig.s.begin(), new_sig.s.end()); - stdlib::ecdsa::signature sig{ stdlib::byte_array(&composer, rr), - stdlib::byte_array(&composer, ss) }; + stdlib::ecdsa::signature sig{ stdlib::byte_array(&composer, rr), + stdlib::byte_array(&composer, ss) }; pub_key_x_fq.assert_is_in_field(); pub_key_y_fq.assert_is_in_field(); secp256k1_ct::g1_bigfr_ct public_key = secp256k1_ct::g1_bigfr_ct(pub_key_x_fq, pub_key_y_fq); - bool_ct signature_result = stdlib::ecdsa::verify_signature -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -28,7 +30,7 @@ struct EcdsaSecp256k1Constraint { friend bool operator==(EcdsaSecp256k1Constraint const& lhs, EcdsaSecp256k1Constraint const& rhs) = default; }; -void create_ecdsa_verify_constraints(plonk::TurboComposer& composer, const EcdsaSecp256k1Constraint& input); +void create_ecdsa_verify_constraints(Composer& composer, const EcdsaSecp256k1Constraint& input); template inline void read(B& buf, EcdsaSecp256k1Constraint& constraint) { diff --git a/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp b/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp index db5383927c..453ab56f47 100644 --- a/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.cpp @@ -1,11 +1,8 @@ #include "fixed_base_scalar_mul.hpp" -#include "barretenberg/stdlib/types/types.hpp" - -using namespace plonk::stdlib::types; namespace acir_format { -void create_fixed_base_constraint(plonk::TurboComposer& composer, const FixedBaseScalarMul& input) +void create_fixed_base_constraint(Composer& composer, const FixedBaseScalarMul& input) { field_ct scalar_as_field = field_ct::from_witness_index(&composer, input.scalar); diff --git a/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp b/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp index 672978bac6..7139f5c74f 100644 --- a/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/fixed_base_scalar_mul.hpp @@ -1,6 +1,8 @@ #pragma once #include -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -12,7 +14,7 @@ struct FixedBaseScalarMul { friend bool operator==(FixedBaseScalarMul const& lhs, FixedBaseScalarMul const& rhs) = default; }; -void create_fixed_base_constraint(plonk::TurboComposer& composer, const FixedBaseScalarMul& input); +void create_fixed_base_constraint(Composer& composer, const FixedBaseScalarMul& input); template inline void read(B& buf, FixedBaseScalarMul& constraint) { diff --git a/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp b/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp index 577c3b6bac..9470898525 100644 --- a/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/hash_to_field.cpp @@ -1,12 +1,9 @@ #include "hash_to_field.hpp" #include "round.hpp" -#include "barretenberg/stdlib/types/types.hpp" - -using namespace plonk::stdlib::types; namespace acir_format { -void create_hash_to_field_constraints(plonk::TurboComposer& composer, const HashToFieldConstraint constraint) +void create_hash_to_field_constraints(Composer& composer, const HashToFieldConstraint constraint) { // Create byte array struct @@ -31,7 +28,7 @@ void create_hash_to_field_constraints(plonk::TurboComposer& composer, const Hash // Hash To Field using blake2s. // Note: It does not need to be blake2s in the future - byte_array_ct out_bytes = plonk::stdlib::blake2s(arr); + byte_array_ct out_bytes = plonk::stdlib::blake2s(arr); field_ct out(out_bytes); field_ct normalised_out = out.normalize(); diff --git a/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp b/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp index 6f8b901b57..6d612e82b3 100644 --- a/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/hash_to_field.hpp @@ -1,7 +1,9 @@ #pragma once #include #include -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -19,7 +21,7 @@ struct HashToFieldConstraint { friend bool operator==(HashToFieldConstraint const& lhs, HashToFieldConstraint const& rhs) = default; }; -void create_hash_to_field_constraints(plonk::TurboComposer& composer, HashToFieldConstraint constraint); +void create_hash_to_field_constraints(Composer& composer, HashToFieldConstraint constraint); template inline void read(B& buf, HashToFieldInput& constraint) { diff --git a/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp b/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp index 27d938fbf6..9f96ab5f61 100644 --- a/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp @@ -2,7 +2,7 @@ namespace acir_format { -void create_logic_gate(TurboComposer& composer, +void create_logic_gate(Composer& composer, const uint32_t a, const uint32_t b, const uint32_t result, @@ -12,11 +12,11 @@ void create_logic_gate(TurboComposer& composer, auto accumulators = composer.create_logic_constraint(a, b, num_bits, is_xor_gate); composer.assert_equal(accumulators.out.back(), result); } -void xor_gate(TurboComposer& composer, const uint32_t a, const uint32_t b, const uint32_t result, const size_t num_bits) +void xor_gate(Composer& composer, const uint32_t a, const uint32_t b, const uint32_t result, const size_t num_bits) { create_logic_gate(composer, a, b, result, num_bits, true); } -void and_gate(TurboComposer& composer, const uint32_t a, const uint32_t b, const uint32_t result, const size_t num_bits) +void and_gate(Composer& composer, const uint32_t a, const uint32_t b, const uint32_t result, const size_t num_bits) { create_logic_gate(composer, a, b, result, num_bits, false); } diff --git a/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp b/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp index 51dfb73db5..141830932e 100644 --- a/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp @@ -1,6 +1,8 @@ #pragma once #include -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -14,12 +16,11 @@ struct LogicConstraint { friend bool operator==(LogicConstraint const& lhs, LogicConstraint const& rhs) = default; }; -void create_logic_gate( - TurboComposer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits, bool is_xor_gate); +void create_logic_gate(Composer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits, bool is_xor_gate); -void xor_gate(TurboComposer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits); +void xor_gate(Composer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits); -void and_gate(TurboComposer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits); +void and_gate(Composer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits); template inline void read(B& buf, LogicConstraint& constraint) { diff --git a/cpp/src/barretenberg/dsl/acir_format/merkle_membership_constraint.cpp b/cpp/src/barretenberg/dsl/acir_format/merkle_membership_constraint.cpp index 65b746abcf..4ad9a28703 100644 --- a/cpp/src/barretenberg/dsl/acir_format/merkle_membership_constraint.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/merkle_membership_constraint.cpp @@ -1,13 +1,11 @@ #include "merkle_membership_constraint.hpp" #include "barretenberg/stdlib/merkle_tree/membership.hpp" -#include "barretenberg/stdlib/types/types.hpp" -using namespace plonk::stdlib::types; using namespace plonk::stdlib::merkle_tree; namespace acir_format { -void create_merkle_check_membership_constraint(plonk::TurboComposer& composer, const MerkleMembershipConstraint& input) +void create_merkle_check_membership_constraint(Composer& composer, const MerkleMembershipConstraint& input) { // Convert value from a witness index into a field element. // This is the hash of the message. In Barretenberg, this would be input.value = hash_value(message) @@ -23,7 +21,7 @@ void create_merkle_check_membership_constraint(plonk::TurboComposer& composer, c // We are given the HashPath as a Vec // We want to first convert it into a Vec<(fr, fr)> then cast this to hash_path // struct which requires the method create_witness_hashpath - hash_path hash_path; + hash_path hash_path; // In Noir we accept a hash path that only contains one hash per tree level // It is ok to reuse the leaf as it will be overridden in check_subtree_membership when computing the current root diff --git a/cpp/src/barretenberg/dsl/acir_format/merkle_membership_constraint.hpp b/cpp/src/barretenberg/dsl/acir_format/merkle_membership_constraint.hpp index 6cf9a78dd6..f4c195e63f 100644 --- a/cpp/src/barretenberg/dsl/acir_format/merkle_membership_constraint.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/merkle_membership_constraint.hpp @@ -1,6 +1,8 @@ #pragma once #include -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -14,7 +16,7 @@ struct MerkleMembershipConstraint { friend bool operator==(MerkleMembershipConstraint const& lhs, MerkleMembershipConstraint const& rhs) = default; }; -void create_merkle_check_membership_constraint(plonk::TurboComposer& composer, const MerkleMembershipConstraint& input); +void create_merkle_check_membership_constraint(Composer& composer, const MerkleMembershipConstraint& input); template inline void read(B& buf, MerkleMembershipConstraint& constraint) { diff --git a/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp b/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp index 6bb7b9de9b..bb53c66ba1 100644 --- a/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/pedersen.cpp @@ -1,11 +1,8 @@ #include "pedersen.hpp" -#include "barretenberg/stdlib/types/types.hpp" - -using namespace plonk::stdlib::types; namespace acir_format { -void create_pedersen_constraint(plonk::TurboComposer& composer, const PedersenConstraint& input) +void create_pedersen_constraint(Composer& composer, const PedersenConstraint& input) { std::vector scalars; diff --git a/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp b/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp index e53c51fef0..af46c46909 100644 --- a/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/pedersen.hpp @@ -1,6 +1,8 @@ #pragma once #include -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -13,7 +15,7 @@ struct PedersenConstraint { friend bool operator==(PedersenConstraint const& lhs, PedersenConstraint const& rhs) = default; }; -void create_pedersen_constraint(plonk::TurboComposer& composer, const PedersenConstraint& input); +void create_pedersen_constraint(Composer& composer, const PedersenConstraint& input); template inline void read(B& buf, PedersenConstraint& constraint) { diff --git a/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp b/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp index 497bda7f9a..ec973d23ca 100644 --- a/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.cpp @@ -1,12 +1,9 @@ #include "schnorr_verify.hpp" #include "barretenberg/crypto/schnorr/schnorr.hpp" -#include "barretenberg/stdlib/types/types.hpp" - -using namespace plonk::stdlib::types; namespace acir_format { -crypto::schnorr::signature convert_signature(plonk::TurboComposer& composer, std::vector signature) +crypto::schnorr::signature convert_signature(Composer& composer, std::vector signature) { crypto::schnorr::signature signature_cr; @@ -43,7 +40,7 @@ crypto::schnorr::signature convert_signature(plonk::TurboComposer& composer, std // vector of bytes here, assumes that the witness indices point to a field element which can be represented // with just a byte. // notice that this function truncates each field_element to a byte -byte_array_ct vector_of_bytes_to_byte_array(plonk::TurboComposer& composer, std::vector vector_of_bytes) +byte_array_ct vector_of_bytes_to_byte_array(Composer& composer, std::vector vector_of_bytes) { byte_array_ct arr(&composer); @@ -59,13 +56,13 @@ byte_array_ct vector_of_bytes_to_byte_array(plonk::TurboComposer& composer, std: } return arr; } -witness_ct index_to_witness(plonk::TurboComposer& composer, uint32_t index) +witness_ct index_to_witness(Composer& composer, uint32_t index) { fr value = composer.get_variable(index); return { &composer, value }; } -void create_schnorr_verify_constraints(plonk::TurboComposer& composer, const SchnorrConstraint& input) +void create_schnorr_verify_constraints(Composer& composer, const SchnorrConstraint& input) { auto new_sig = convert_signature(composer, input.signature); diff --git a/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp b/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp index 8f0eec2222..f41e6d9e82 100644 --- a/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/schnorr_verify.hpp @@ -1,6 +1,8 @@ #pragma once #include -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -25,7 +27,7 @@ struct SchnorrConstraint { friend bool operator==(SchnorrConstraint const& lhs, SchnorrConstraint const& rhs) = default; }; -void create_schnorr_verify_constraints(plonk::TurboComposer& composer, const SchnorrConstraint& input); +void create_schnorr_verify_constraints(Composer& composer, const SchnorrConstraint& input); template inline void read(B& buf, SchnorrConstraint& constraint) { diff --git a/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp b/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp index b1c2fbe2a8..25ad8af174 100644 --- a/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.cpp @@ -1,15 +1,12 @@ #include "sha256_constraint.hpp" #include "round.hpp" #include "barretenberg/stdlib/hash/sha256/sha256.hpp" -#include "barretenberg/stdlib/types/types.hpp" - -using namespace plonk::stdlib::types; namespace acir_format { // This function does not work (properly) because the stdlib:sha256 function is not working correctly for 512 bits // pair -void create_sha256_constraints(plonk::TurboComposer& composer, const Sha256Constraint& constraint) +void create_sha256_constraints(Composer& composer, const Sha256Constraint& constraint) { // Create byte array struct @@ -31,7 +28,7 @@ void create_sha256_constraints(plonk::TurboComposer& composer, const Sha256Const } // Compute sha256 - byte_array_ct output_bytes = plonk::stdlib::sha256(arr); + byte_array_ct output_bytes = plonk::stdlib::sha256(arr); // Convert byte array to vector of field_t auto bytes = output_bytes.bytes(); diff --git a/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp b/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp index 08b60e0bd1..1dbd2cedfb 100644 --- a/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.hpp @@ -1,7 +1,9 @@ #pragma once #include #include -#include "barretenberg/plonk/composer/turbo_composer.hpp" +#include "barretenberg/stdlib/types/types.hpp" + +using namespace plonk::stdlib::types; namespace acir_format { @@ -21,7 +23,7 @@ struct Sha256Constraint { // This function does not work (properly) because the stdlib:sha256 function is not working correctly for 512 bits // pair -void create_sha256_constraints(plonk::TurboComposer& composer, const Sha256Constraint& constraint); +void create_sha256_constraints(Composer& composer, const Sha256Constraint& constraint); template inline void read(B& buf, Sha256Input& constraint) { diff --git a/cpp/src/barretenberg/dsl/turbo_proofs/CMakeLists.txt b/cpp/src/barretenberg/dsl/proofs/CMakeLists.txt similarity index 100% rename from cpp/src/barretenberg/dsl/turbo_proofs/CMakeLists.txt rename to cpp/src/barretenberg/dsl/proofs/CMakeLists.txt diff --git a/cpp/src/barretenberg/dsl/proofs/c_bind.cpp b/cpp/src/barretenberg/dsl/proofs/c_bind.cpp new file mode 100644 index 0000000000..868f7d17c6 --- /dev/null +++ b/cpp/src/barretenberg/dsl/proofs/c_bind.cpp @@ -0,0 +1,43 @@ +#include "c_bind.hpp" +#include "proofs.hpp" +#include + +#define WASM_EXPORT __attribute__((visibility("default"))) + +extern "C" { + +// Get the exact circuit size for the constraint system. +WASM_EXPORT uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf) +{ + return proofs::get_exact_circuit_size(constraint_system_buf); +} + +WASM_EXPORT size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) +{ + return proofs::init_proving_key(constraint_system_buf, pk_buf); +} + +WASM_EXPORT size_t init_verification_key(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const** vk_buf) +{ + return proofs::init_verification_key(pippenger, g2x, pk_buf, vk_buf); +} + +WASM_EXPORT size_t new_proof(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const* constraint_system_buf, + uint8_t const* witness_buf, + uint8_t** proof_data_buf) +{ + return proofs::new_proof(pippenger, g2x, pk_buf, constraint_system_buf, witness_buf, proof_data_buf); +} + +WASM_EXPORT bool verify_proof( + uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length) +{ + return proofs::verify_proof(g2x, vk_buf, constraint_system_buf, proof, length); +} +} diff --git a/cpp/src/barretenberg/dsl/turbo_proofs/c_bind.hpp b/cpp/src/barretenberg/dsl/proofs/c_bind.hpp similarity index 100% rename from cpp/src/barretenberg/dsl/turbo_proofs/c_bind.hpp rename to cpp/src/barretenberg/dsl/proofs/c_bind.hpp diff --git a/cpp/src/barretenberg/dsl/turbo_proofs/turbo_proofs.cpp b/cpp/src/barretenberg/dsl/proofs/proofs.cpp similarity index 83% rename from cpp/src/barretenberg/dsl/turbo_proofs/turbo_proofs.cpp rename to cpp/src/barretenberg/dsl/proofs/proofs.cpp index 233170dee8..5f66caa3a6 100644 --- a/cpp/src/barretenberg/dsl/turbo_proofs/turbo_proofs.cpp +++ b/cpp/src/barretenberg/dsl/proofs/proofs.cpp @@ -1,5 +1,5 @@ -#include "turbo_proofs.hpp" +#include "proofs.hpp" #include "barretenberg/proof_system/proving_key/serialize.hpp" #include "barretenberg/dsl/acir_format/acir_format.hpp" #include "barretenberg/stdlib/types/types.hpp" @@ -7,9 +7,9 @@ using namespace plonk::stdlib::types; -namespace turbo_proofs { +namespace proofs { -uint32_t turbo_get_exact_circuit_size(uint8_t const* constraint_system_buf) +uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf) { auto constraint_system = from_buffer(constraint_system_buf); auto crs_factory = std::make_unique(); @@ -19,7 +19,7 @@ uint32_t turbo_get_exact_circuit_size(uint8_t const* constraint_system_buf) return static_cast(num_gates); } -size_t turbo_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) +size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) { auto constraint_system = from_buffer(constraint_system_buf); // We know that we don't actually need any CRS to create a proving key, so just feed in a nothing. @@ -36,7 +36,7 @@ size_t turbo_init_proving_key(uint8_t const* constraint_system_buf, uint8_t cons return buffer.size(); } -size_t turbo_init_verification_key(void* pippenger, uint8_t const* g2x, uint8_t const* pk_buf, uint8_t const** vk_buf) +size_t init_verification_key(void* pippenger, uint8_t const* g2x, uint8_t const* pk_buf, uint8_t const** vk_buf) { std::shared_ptr crs; bonk::proving_key_data pk_data; @@ -47,7 +47,7 @@ size_t turbo_init_verification_key(void* pippenger, uint8_t const* g2x, uint8_t reinterpret_cast(pippenger), g2x); proving_key->reference_string = crs_factory->get_prover_crs(proving_key->circuit_size); - TurboComposer composer(proving_key, nullptr); + Composer composer(proving_key, nullptr); auto verification_key = plonk::stdlib::types::Composer::compute_verification_key_base(proving_key, crs_factory->get_verifier_crs()); @@ -63,12 +63,12 @@ size_t turbo_init_verification_key(void* pippenger, uint8_t const* g2x, uint8_t return buffer.size(); } -size_t turbo_new_proof(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const* constraint_system_buf, - uint8_t const* witness_buf, - uint8_t** proof_data_buf) +size_t new_proof(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const* constraint_system_buf, + uint8_t const* witness_buf, + uint8_t** proof_data_buf) { auto constraint_system = from_buffer(constraint_system_buf); @@ -83,7 +83,7 @@ size_t turbo_new_proof(void* pippenger, reinterpret_cast(pippenger), g2x); proving_key->reference_string = crs_factory->get_prover_crs(proving_key->circuit_size); - TurboComposer composer(proving_key, nullptr); + Composer composer(proving_key, nullptr); create_circuit_with_witness(composer, constraint_system, witness); auto prover = composer.create_prover(); @@ -94,7 +94,7 @@ size_t turbo_new_proof(void* pippenger, return proof_data.size(); } -bool turbo_verify_proof( +bool verify_proof( uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length) { bool verified = false; @@ -109,7 +109,7 @@ bool turbo_verify_proof( read(vk_buf, vk_data); auto verification_key = std::make_shared(std::move(vk_data), crs); - TurboComposer composer(nullptr, verification_key); + Composer composer(nullptr, verification_key); create_circuit(composer, constraint_system); plonk::proof pp = { std::vector(proof, proof + length) }; @@ -125,4 +125,4 @@ bool turbo_verify_proof( return verified; } -} // namespace turbo_proofs +} // namespace proofs diff --git a/cpp/src/barretenberg/dsl/proofs/proofs.hpp b/cpp/src/barretenberg/dsl/proofs/proofs.hpp new file mode 100644 index 0000000000..7db9845f8a --- /dev/null +++ b/cpp/src/barretenberg/dsl/proofs/proofs.hpp @@ -0,0 +1,18 @@ +#include +#include + +namespace proofs { + +uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf); +size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); +size_t init_verification_key(void* pippenger, uint8_t const* g2x, uint8_t const* pk_buf, uint8_t const** vk_buf); +size_t new_proof(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const* constraint_system_buf, + uint8_t const* witness_buf, + uint8_t** proof_data_buf); +bool verify_proof( + uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length); + +} // namespace proofs diff --git a/cpp/src/barretenberg/dsl/turbo_proofs/c_bind.cpp b/cpp/src/barretenberg/dsl/turbo_proofs/c_bind.cpp deleted file mode 100644 index 1b4cd27d84..0000000000 --- a/cpp/src/barretenberg/dsl/turbo_proofs/c_bind.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "c_bind.hpp" -#include "turbo_proofs.hpp" -#include - -#define WASM_EXPORT __attribute__((visibility("default"))) - -extern "C" { - -// Get the exact circuit size for the constraint system. -WASM_EXPORT uint32_t turbo_get_exact_circuit_size(uint8_t const* constraint_system_buf) -{ - return turbo_proofs::turbo_get_exact_circuit_size(constraint_system_buf); -} - -WASM_EXPORT size_t turbo_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) -{ - return turbo_proofs::turbo_init_proving_key(constraint_system_buf, pk_buf); -} - -WASM_EXPORT size_t turbo_init_verification_key(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const** vk_buf) -{ - return turbo_proofs::turbo_init_verification_key(pippenger, g2x, pk_buf, vk_buf); -} - -WASM_EXPORT size_t turbo_new_proof(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const* constraint_system_buf, - uint8_t const* witness_buf, - uint8_t** proof_data_buf) -{ - return turbo_proofs::turbo_new_proof(pippenger, g2x, pk_buf, constraint_system_buf, witness_buf, proof_data_buf); -} - -WASM_EXPORT bool turbo_verify_proof( - uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length) -{ - return turbo_proofs::turbo_verify_proof(g2x, vk_buf, constraint_system_buf, proof, length); -} -} diff --git a/cpp/src/barretenberg/dsl/turbo_proofs/turbo_proofs.hpp b/cpp/src/barretenberg/dsl/turbo_proofs/turbo_proofs.hpp deleted file mode 100644 index 486973e418..0000000000 --- a/cpp/src/barretenberg/dsl/turbo_proofs/turbo_proofs.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#include -#include - -namespace turbo_proofs { - -uint32_t turbo_get_exact_circuit_size(uint8_t const* constraint_system_buf); -size_t turbo_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); -size_t turbo_init_verification_key(void* pippenger, uint8_t const* g2x, uint8_t const* pk_buf, uint8_t const** vk_buf); -size_t turbo_new_proof(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const* constraint_system_buf, - uint8_t const* witness_buf, - uint8_t** proof_data_buf); -bool turbo_verify_proof( - uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length); - -} // namespace turbo_proofs From 30157c62b17c08fca16e7b4d2594970a958b9766 Mon Sep 17 00:00:00 2001 From: vezenovm Date: Tue, 14 Mar 2023 18:47:10 -0400 Subject: [PATCH 2/9] change SYSTEM_COMPOSER under stdlib::types to ultra composer type --- .../dsl/acir_format/acir_format.cpp | 10 +++---- cpp/src/barretenberg/dsl/proofs/c_bind.hpp | 26 +++++++++---------- cpp/src/barretenberg/dsl/proofs/proofs.cpp | 2 +- .../proofs/join_split/c_bind.cpp | 2 +- .../proofs/join_split/join_split.cpp | 2 +- .../proofs/join_split/join_split.hpp | 2 +- .../plonk/proof_system/constants.hpp | 2 +- .../stdlib/hash/sha256/sha256.bench.cpp | 4 +-- 8 files changed, 25 insertions(+), 25 deletions(-) diff --git a/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp b/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp index 365b3fdb69..8fb9c4496d 100644 --- a/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp @@ -41,7 +41,7 @@ void create_circuit(Composer& composer, const acir_format& constraint_system) // Add range constraint for (const auto& constraint : constraint_system.range_constraints) { - composer.decompose_into_base4_accumulators(constraint.witness, constraint.num_bits, ""); + composer.create_range_constraint(constraint.witness, constraint.num_bits, ""); } // Add sha256 constraints @@ -119,7 +119,7 @@ Composer create_circuit(const acir_format& constraint_system, // Add range constraint for (const auto& constraint : constraint_system.range_constraints) { - composer.decompose_into_base4_accumulators(constraint.witness, constraint.num_bits, ""); + composer.create_range_constraint(constraint.witness, constraint.num_bits, ""); } // Add sha256 constraints @@ -203,7 +203,7 @@ Composer create_circuit_with_witness(const acir_format& constraint_system, // Add range constraint for (const auto& constraint : constraint_system.range_constraints) { - composer.decompose_into_base4_accumulators(constraint.witness, constraint.num_bits, ""); + composer.create_range_constraint(constraint.witness, constraint.num_bits, ""); } // Add sha256 constraints @@ -284,7 +284,7 @@ Composer create_circuit_with_witness(const acir_format& constraint_system, std:: // Add range constraint for (const auto& constraint : constraint_system.range_constraints) { - composer.decompose_into_base4_accumulators(constraint.witness, constraint.num_bits, ""); + composer.create_range_constraint(constraint.witness, constraint.num_bits, ""); } // Add sha256 constraints @@ -363,7 +363,7 @@ void create_circuit_with_witness(Composer& composer, const acir_format& constrai // Add range constraint for (const auto& constraint : constraint_system.range_constraints) { - composer.decompose_into_base4_accumulators(constraint.witness, constraint.num_bits, ""); + composer.create_range_constraint(constraint.witness, constraint.num_bits, ""); } // Add sha256 constraints diff --git a/cpp/src/barretenberg/dsl/proofs/c_bind.hpp b/cpp/src/barretenberg/dsl/proofs/c_bind.hpp index e9ba3c5402..89f9805899 100644 --- a/cpp/src/barretenberg/dsl/proofs/c_bind.hpp +++ b/cpp/src/barretenberg/dsl/proofs/c_bind.hpp @@ -5,20 +5,20 @@ extern "C" { -WASM_EXPORT uint32_t turbo_get_exact_circuit_size(uint8_t const* constraint_system_buf); +WASM_EXPORT uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf); // Construct composer using prover and verifier key buffers -WASM_EXPORT size_t turbo_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); -WASM_EXPORT size_t turbo_init_verification_key(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const** vk_buf); -WASM_EXPORT size_t turbo_new_proof(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const* constraint_system_buf, - uint8_t const* witness_buf, - uint8_t** proof_data_buf); -WASM_EXPORT bool turbo_verify_proof( +WASM_EXPORT size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); +WASM_EXPORT size_t init_verification_key(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const** vk_buf); +WASM_EXPORT size_t new_proof(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const* constraint_system_buf, + uint8_t const* witness_buf, + uint8_t** proof_data_buf); +WASM_EXPORT bool verify_proof( uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length); } diff --git a/cpp/src/barretenberg/dsl/proofs/proofs.cpp b/cpp/src/barretenberg/dsl/proofs/proofs.cpp index 5f66caa3a6..5fe9f5f21f 100644 --- a/cpp/src/barretenberg/dsl/proofs/proofs.cpp +++ b/cpp/src/barretenberg/dsl/proofs/proofs.cpp @@ -87,7 +87,7 @@ size_t new_proof(void* pippenger, create_circuit_with_witness(composer, constraint_system, witness); auto prover = composer.create_prover(); - auto heapProver = new TurboProver(std::move(prover)); + auto heapProver = new UltraProver(std::move(prover)); auto& proof_data = heapProver->construct_proof().proof_data; *proof_data_buf = proof_data.data(); diff --git a/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp b/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp index 67983ccd08..0a8f0c95a4 100644 --- a/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp +++ b/cpp/src/barretenberg/join_split_example/proofs/join_split/c_bind.cpp @@ -93,7 +93,7 @@ WASM_EXPORT void* join_split__new_prover(uint8_t const* join_split_buf, bool moc { auto tx = from_buffer(join_split_buf); auto prover = new_join_split_prover(tx, mock); - auto heapProver = new plonk::TurboProver(std::move(prover)); + auto heapProver = new plonk::UltraProver(std::move(prover)); return heapProver; } diff --git a/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp b/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp index 64af4cbd25..c5737ce168 100644 --- a/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp +++ b/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.cpp @@ -64,7 +64,7 @@ void init_verification_key(std::shared_ptr con verification_key = std::make_shared(std::move(vk_data), crs); } -plonk::TurboProver new_join_split_prover(join_split_tx const& tx, bool mock) +plonk::UltraProver new_join_split_prover(join_split_tx const& tx, bool mock) { Composer composer(proving_key, nullptr); join_split_circuit(composer, tx); diff --git a/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp b/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp index 274983ec80..5ed4cd3c38 100644 --- a/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp +++ b/cpp/src/barretenberg/join_split_example/proofs/join_split/join_split.hpp @@ -21,7 +21,7 @@ void init_verification_key(std::unique_ptr&& crs_f void init_verification_key(std::shared_ptr const& crs, bonk::verification_key_data&& vk_data); -plonk::TurboProver new_join_split_prover(join_split_tx const& tx, bool mock); +plonk::UltraProver new_join_split_prover(join_split_tx const& tx, bool mock); bool verify_proof(plonk::proof const& proof); diff --git a/cpp/src/barretenberg/plonk/proof_system/constants.hpp b/cpp/src/barretenberg/plonk/proof_system/constants.hpp index 9d6229b039..eaf3c24b73 100644 --- a/cpp/src/barretenberg/plonk/proof_system/constants.hpp +++ b/cpp/src/barretenberg/plonk/proof_system/constants.hpp @@ -13,7 +13,7 @@ enum ComposerType { // This variable sets the composer (TURBO or ULTRA) of the entire stdlib and rollup modules. // To switch to using a new composer, only changing this variable should activate the new composer // throughout the stdlib and circuits. -static constexpr uint32_t SYSTEM_COMPOSER = ComposerType::TURBO; +static constexpr uint32_t SYSTEM_COMPOSER = ComposerType::PLOOKUP; enum MerkleHashType { FIXED_BASE_PEDERSEN, diff --git a/cpp/src/barretenberg/stdlib/hash/sha256/sha256.bench.cpp b/cpp/src/barretenberg/stdlib/hash/sha256/sha256.bench.cpp index 11685b4188..31ffb1e9df 100644 --- a/cpp/src/barretenberg/stdlib/hash/sha256/sha256.bench.cpp +++ b/cpp/src/barretenberg/stdlib/hash/sha256/sha256.bench.cpp @@ -29,8 +29,8 @@ void generate_test_plonk_circuit(Composer& composer, size_t num_bytes) } Composer composers[NUM_HASHES]; -plonk::TurboProver provers[NUM_HASHES]; -plonk::TurboVerifier verifiers[NUM_HASHES]; +plonk::UltraProver provers[NUM_HASHES]; +plonk::UltraVerifier verifiers[NUM_HASHES]; plonk::proof proofs[NUM_HASHES]; void construct_witnesses_bench(State& state) noexcept From c8848be784e489582c5c8feb60b283fbfe161f12 Mon Sep 17 00:00:00 2001 From: vezenovm Date: Wed, 15 Mar 2023 16:48:27 -0400 Subject: [PATCH 3/9] use ultra logic constraints --- .../dsl/acir_format/logic_constraint.cpp | 22 ++++++++--- .../dsl/acir_format/logic_constraint.hpp | 4 +- cpp/src/barretenberg/dsl/proofs/c_bind.cpp | 12 +++--- cpp/src/barretenberg/dsl/proofs/c_bind.hpp | 12 +++--- .../polynomial_store.test.cpp | 39 ++++++++++--------- 5 files changed, 50 insertions(+), 39 deletions(-) diff --git a/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp b/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp index 9f96ab5f61..5022e2e517 100644 --- a/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp +++ b/cpp/src/barretenberg/dsl/acir_format/logic_constraint.cpp @@ -9,16 +9,26 @@ void create_logic_gate(Composer& composer, const size_t num_bits, const bool is_xor_gate) { - auto accumulators = composer.create_logic_constraint(a, b, num_bits, is_xor_gate); - composer.assert_equal(accumulators.out.back(), result); + (void)num_bits; + // auto accumulators = composer.create_logic_constraint(a, b, num_bits, is_xor_gate); + // composer.assert_equal(accumulators.out.back(), result); + if (is_xor_gate) { + xor_gate(composer, a, b, result); + } else { + and_gate(composer, a, b, result); + } } -void xor_gate(Composer& composer, const uint32_t a, const uint32_t b, const uint32_t result, const size_t num_bits) +void xor_gate(Composer& composer, const uint32_t a, const uint32_t b, const uint32_t result) { - create_logic_gate(composer, a, b, result, num_bits, true); + // create_logic_gate(composer, a, b, result, num_bits, true); + auto plookup_res = a ^ b; + composer.assert_equal(plookup_res, result); } -void and_gate(Composer& composer, const uint32_t a, const uint32_t b, const uint32_t result, const size_t num_bits) +void and_gate(Composer& composer, const uint32_t a, const uint32_t b, const uint32_t result) { - create_logic_gate(composer, a, b, result, num_bits, false); + // create_logic_gate(composer, a, b, result, num_bits, false); + auto plookup_res = a & b; + composer.assert_equal(plookup_res, result); } } // namespace acir_format diff --git a/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp b/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp index 141830932e..615ac80f7b 100644 --- a/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/logic_constraint.hpp @@ -18,9 +18,9 @@ struct LogicConstraint { void create_logic_gate(Composer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits, bool is_xor_gate); -void xor_gate(Composer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits); +void xor_gate(Composer& composer, uint32_t a, uint32_t b, uint32_t result); -void and_gate(Composer& composer, uint32_t a, uint32_t b, uint32_t result, size_t num_bits); +void and_gate(Composer& composer, uint32_t a, uint32_t b, uint32_t result); template inline void read(B& buf, LogicConstraint& constraint) { diff --git a/cpp/src/barretenberg/dsl/proofs/c_bind.cpp b/cpp/src/barretenberg/dsl/proofs/c_bind.cpp index 868f7d17c6..30cd92fac6 100644 --- a/cpp/src/barretenberg/dsl/proofs/c_bind.cpp +++ b/cpp/src/barretenberg/dsl/proofs/c_bind.cpp @@ -7,20 +7,20 @@ extern "C" { // Get the exact circuit size for the constraint system. -WASM_EXPORT uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf) +WASM_EXPORT uint32_t c_get_exact_circuit_size(uint8_t const* constraint_system_buf) { return proofs::get_exact_circuit_size(constraint_system_buf); } -WASM_EXPORT size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) +WASM_EXPORT size_t c_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) { return proofs::init_proving_key(constraint_system_buf, pk_buf); } -WASM_EXPORT size_t init_verification_key(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const** vk_buf) +WASM_EXPORT size_t c_init_verification_key(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const** vk_buf) { return proofs::init_verification_key(pippenger, g2x, pk_buf, vk_buf); } diff --git a/cpp/src/barretenberg/dsl/proofs/c_bind.hpp b/cpp/src/barretenberg/dsl/proofs/c_bind.hpp index 89f9805899..5b4b155aa1 100644 --- a/cpp/src/barretenberg/dsl/proofs/c_bind.hpp +++ b/cpp/src/barretenberg/dsl/proofs/c_bind.hpp @@ -5,14 +5,14 @@ extern "C" { -WASM_EXPORT uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf); +WASM_EXPORT uint32_t c_get_exact_circuit_size(uint8_t const* constraint_system_buf); // Construct composer using prover and verifier key buffers -WASM_EXPORT size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); -WASM_EXPORT size_t init_verification_key(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const** vk_buf); +WASM_EXPORT size_t c_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); +WASM_EXPORT size_t c_init_verification_key(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const** vk_buf); WASM_EXPORT size_t new_proof(void* pippenger, uint8_t const* g2x, uint8_t const* pk_buf, diff --git a/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp b/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp index f0486cccbf..59deb6e275 100644 --- a/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp +++ b/cpp/src/barretenberg/proof_system/polynomial_store/polynomial_store.test.cpp @@ -91,24 +91,25 @@ TEST(PolynomialStore, Remove) } // Check that PolynomialStore supports range based for loop -TEST(PolynomialStore, RangeBasedFor) -{ - PolynomialStore polynomial_store; - size_t size = 100; - Polynomial poly1(size); - Polynomial poly2(size); - - polynomial_store.put("id_1", std::move(poly1)); - polynomial_store.put("id_2", std::move(poly2)); - - // Check that PolynomialStore meets criteria for std::ranges::range - EXPECT_TRUE(std::ranges::range>); - - // For example ... - Polynomial polynomial_sum(size); - for (const auto& [key, polynomial] : polynomial_store) { - polynomial_sum += polynomial; - } -} +// TODO fatal error: no member named 'ranges' in namespace 'std' +// TEST(PolynomialStore, RangeBasedFor) +// { +// PolynomialStore polynomial_store; +// size_t size = 100; +// Polynomial poly1(size); +// Polynomial poly2(size); + +// polynomial_store.put("id_1", std::move(poly1)); +// polynomial_store.put("id_2", std::move(poly2)); + +// // Check that PolynomialStore meets criteria for std::ranges::range +// EXPECT_TRUE(std::ranges::range>); + +// // For example ... +// Polynomial polynomial_sum(size); +// for (const auto& [key, polynomial] : polynomial_store) { +// polynomial_sum += polynomial; +// } +// } } // namespace bonk From eb7cfb16b2a5d3a74c158e398b4d3f6e51b31dd2 Mon Sep 17 00:00:00 2001 From: vezenovm Date: Thu, 16 Mar 2023 10:13:24 -0400 Subject: [PATCH 4/9] in process of debugging, move to using ultra logic constraints --- cpp/src/barretenberg/dsl/acir_format/acir_format.hpp | 2 ++ cpp/src/barretenberg/dsl/proofs/proofs.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp b/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp index d0d8d18075..0acfef16b1 100644 --- a/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp @@ -56,7 +56,9 @@ void create_circuit_with_witness(Composer& composer, const acir_format& constrai // Serialisation template inline void read(B& buf, acir_format& data) { + printf("about to read in acir_format 1\n"); using serialize::read; + printf("about to read in acir_format 2\n"); read(buf, data.varnum); read(buf, data.public_inputs); read(buf, data.logic_constraints); diff --git a/cpp/src/barretenberg/dsl/proofs/proofs.cpp b/cpp/src/barretenberg/dsl/proofs/proofs.cpp index 5fe9f5f21f..6f9c4d5496 100644 --- a/cpp/src/barretenberg/dsl/proofs/proofs.cpp +++ b/cpp/src/barretenberg/dsl/proofs/proofs.cpp @@ -22,6 +22,8 @@ uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf) size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) { auto constraint_system = from_buffer(constraint_system_buf); + printf("read in constraint system to init pk\n"); + // We know that we don't actually need any CRS to create a proving key, so just feed in a nothing. // Hacky, but, right now it needs *something*. auto crs_factory = std::make_unique(); @@ -70,12 +72,15 @@ size_t new_proof(void* pippenger, uint8_t const* witness_buf, uint8_t** proof_data_buf) { + printf("got into new_proof\n"); auto constraint_system = from_buffer(constraint_system_buf); + printf("read in constraint system\n"); std::shared_ptr crs; bonk::proving_key_data pk_data; read(pk_buf, pk_data); auto proving_key = std::make_shared(std::move(pk_data), crs); + printf("read in proving_key\n"); auto witness = from_buffer>(witness_buf); @@ -84,9 +89,14 @@ size_t new_proof(void* pippenger, proving_key->reference_string = crs_factory->get_prover_crs(proving_key->circuit_size); Composer composer(proving_key, nullptr); + printf("we got a composer object\n"); + create_circuit_with_witness(composer, constraint_system, witness); + printf("created circuit with witness\n"); auto prover = composer.create_prover(); + printf("created a prover\n"); + auto heapProver = new UltraProver(std::move(prover)); auto& proof_data = heapProver->construct_proof().proof_data; *proof_data_buf = proof_data.data(); From 8a9337c1130c0e432ec27f4a39583a2c6d506b8d Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Wed, 22 Mar 2023 16:36:02 -0400 Subject: [PATCH 5/9] add get_total_circuit_size method --- .../dsl/acir_format/acir_format.hpp | 2 -- cpp/src/barretenberg/dsl/proofs/c_bind.cpp | 5 ++++ cpp/src/barretenberg/dsl/proofs/c_bind.hpp | 2 +- cpp/src/barretenberg/dsl/proofs/proofs.cpp | 30 +++++++++++++------ cpp/src/barretenberg/dsl/proofs/proofs.hpp | 1 + .../barretenberg/transcript/transcript.cpp | 2 -- 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp b/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp index 0acfef16b1..d0d8d18075 100644 --- a/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp @@ -56,9 +56,7 @@ void create_circuit_with_witness(Composer& composer, const acir_format& constrai // Serialisation template inline void read(B& buf, acir_format& data) { - printf("about to read in acir_format 1\n"); using serialize::read; - printf("about to read in acir_format 2\n"); read(buf, data.varnum); read(buf, data.public_inputs); read(buf, data.logic_constraints); diff --git a/cpp/src/barretenberg/dsl/proofs/c_bind.cpp b/cpp/src/barretenberg/dsl/proofs/c_bind.cpp index 30cd92fac6..308ac2ede7 100644 --- a/cpp/src/barretenberg/dsl/proofs/c_bind.cpp +++ b/cpp/src/barretenberg/dsl/proofs/c_bind.cpp @@ -12,6 +12,11 @@ WASM_EXPORT uint32_t c_get_exact_circuit_size(uint8_t const* constraint_system_b return proofs::get_exact_circuit_size(constraint_system_buf); } +WASM_EXPORT uint32_t c_get_total_circuit_size(uint8_t const* constraint_system_buf) +{ + return proofs::get_total_circuit_size(constraint_system_buf); +} + WASM_EXPORT size_t c_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) { return proofs::init_proving_key(constraint_system_buf, pk_buf); diff --git a/cpp/src/barretenberg/dsl/proofs/c_bind.hpp b/cpp/src/barretenberg/dsl/proofs/c_bind.hpp index 5b4b155aa1..b8a6ca5c18 100644 --- a/cpp/src/barretenberg/dsl/proofs/c_bind.hpp +++ b/cpp/src/barretenberg/dsl/proofs/c_bind.hpp @@ -6,7 +6,7 @@ extern "C" { WASM_EXPORT uint32_t c_get_exact_circuit_size(uint8_t const* constraint_system_buf); - +WASM_EXPORT uint32_t c_get_total_circuit_size(uint8_t const* constraint_system_buf); // Construct composer using prover and verifier key buffers WASM_EXPORT size_t c_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); WASM_EXPORT size_t c_init_verification_key(void* pippenger, diff --git a/cpp/src/barretenberg/dsl/proofs/proofs.cpp b/cpp/src/barretenberg/dsl/proofs/proofs.cpp index 6f9c4d5496..0b74e0d885 100644 --- a/cpp/src/barretenberg/dsl/proofs/proofs.cpp +++ b/cpp/src/barretenberg/dsl/proofs/proofs.cpp @@ -19,10 +19,29 @@ uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf) return static_cast(num_gates); } +uint32_t get_total_circuit_size(uint8_t const* constraint_system_buf) +{ + auto constraint_system = from_buffer(constraint_system_buf); + auto crs_factory = std::make_unique(); + auto composer = create_circuit(constraint_system, std::move(crs_factory)); + + size_t tables_size = 0; + size_t lookups_size = 0; + for (const auto& table : composer.lookup_tables) { + tables_size += table.size; + lookups_size += table.lookup_gates.size(); + } + + auto minimum_circuit_size = tables_size + lookups_size; + auto num_filled_gates = composer.get_num_gates() + composer.public_inputs.size(); + const size_t total_num_gates = std::max(minimum_circuit_size, num_filled_gates); + + return static_cast(total_num_gates); +} + size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) { auto constraint_system = from_buffer(constraint_system_buf); - printf("read in constraint system to init pk\n"); // We know that we don't actually need any CRS to create a proving key, so just feed in a nothing. // Hacky, but, right now it needs *something*. @@ -55,7 +74,7 @@ size_t init_verification_key(void* pippenger, uint8_t const* g2x, uint8_t const* // The composer_type has not yet been set. We need to set the composer_type for when we later read in and // construct the verification key so that we have the correct polynomial manifest - verification_key->composer_type = ComposerType::TURBO; + verification_key->composer_type = ComposerType::PLOOKUP; auto buffer = to_buffer(*verification_key); auto raw_buf = (uint8_t*)malloc(buffer.size()); @@ -72,15 +91,12 @@ size_t new_proof(void* pippenger, uint8_t const* witness_buf, uint8_t** proof_data_buf) { - printf("got into new_proof\n"); auto constraint_system = from_buffer(constraint_system_buf); - printf("read in constraint system\n"); std::shared_ptr crs; bonk::proving_key_data pk_data; read(pk_buf, pk_data); auto proving_key = std::make_shared(std::move(pk_data), crs); - printf("read in proving_key\n"); auto witness = from_buffer>(witness_buf); @@ -89,13 +105,10 @@ size_t new_proof(void* pippenger, proving_key->reference_string = crs_factory->get_prover_crs(proving_key->circuit_size); Composer composer(proving_key, nullptr); - printf("we got a composer object\n"); create_circuit_with_witness(composer, constraint_system, witness); - printf("created circuit with witness\n"); auto prover = composer.create_prover(); - printf("created a prover\n"); auto heapProver = new UltraProver(std::move(prover)); auto& proof_data = heapProver->construct_proof().proof_data; @@ -113,7 +126,6 @@ bool verify_proof( try { #endif auto constraint_system = from_buffer(constraint_system_buf); - auto crs = std::make_shared(g2x); bonk::verification_key_data vk_data; read(vk_buf, vk_data); diff --git a/cpp/src/barretenberg/dsl/proofs/proofs.hpp b/cpp/src/barretenberg/dsl/proofs/proofs.hpp index 7db9845f8a..e31acd5150 100644 --- a/cpp/src/barretenberg/dsl/proofs/proofs.hpp +++ b/cpp/src/barretenberg/dsl/proofs/proofs.hpp @@ -4,6 +4,7 @@ namespace proofs { uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf); +uint32_t get_total_circuit_size(uint8_t const* constraint_system_buf); size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); size_t init_verification_key(void* pippenger, uint8_t const* g2x, uint8_t const* pk_buf, uint8_t const** vk_buf); size_t new_proof(void* pippenger, diff --git a/cpp/src/barretenberg/transcript/transcript.cpp b/cpp/src/barretenberg/transcript/transcript.cpp index 2e5d5e9e02..57b9cfa410 100644 --- a/cpp/src/barretenberg/transcript/transcript.cpp +++ b/cpp/src/barretenberg/transcript/transcript.cpp @@ -377,7 +377,6 @@ std::array Transcript::get_challenge_from * */ size_t Transcript::get_num_challenges(const std::string& challenge_name) const { - // printf("getting challenge count for %s \n", challenge_name.c_str()); ASSERT(challenges.count(challenge_name) == 1); return challenges.at(challenge_name).size(); @@ -393,7 +392,6 @@ size_t Transcript::get_num_challenges(const std::string& challenge_name) const * */ std::vector Transcript::get_element(const std::string& element_name) const { - // printf("getting element %s \n", element_name.c_str()); ASSERT(elements.count(element_name) == 1); return elements.at(element_name); } From 391aa92d88638c130668db779e565a36fdb8de4a Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Mon, 27 Mar 2023 15:13:17 +0100 Subject: [PATCH 6/9] rename functions --- cpp/src/CMakeLists.txt | 6 +-- cpp/src/barretenberg/dsl/CMakeLists.txt | 2 +- .../{proofs => acir_proofs}/CMakeLists.txt | 2 +- .../acir_proofs.cpp} | 6 +-- .../acir_proofs.hpp} | 4 +- .../barretenberg/dsl/acir_proofs/c_bind.cpp | 48 +++++++++++++++++++ .../barretenberg/dsl/acir_proofs/c_bind.hpp | 24 ++++++++++ cpp/src/barretenberg/dsl/proofs/c_bind.cpp | 48 ------------------- cpp/src/barretenberg/dsl/proofs/c_bind.hpp | 24 ---------- 9 files changed, 82 insertions(+), 82 deletions(-) rename cpp/src/barretenberg/dsl/{proofs => acir_proofs}/CMakeLists.txt (75%) rename cpp/src/barretenberg/dsl/{proofs/proofs.cpp => acir_proofs/acir_proofs.cpp} (98%) rename cpp/src/barretenberg/dsl/{proofs/proofs.hpp => acir_proofs/acir_proofs.hpp} (93%) create mode 100644 cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp create mode 100644 cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp delete mode 100644 cpp/src/barretenberg/dsl/proofs/c_bind.cpp delete mode 100644 cpp/src/barretenberg/dsl/proofs/c_bind.hpp diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt index 067a1e2507..6802f1c004 100644 --- a/cpp/src/CMakeLists.txt +++ b/cpp/src/CMakeLists.txt @@ -91,7 +91,7 @@ if(WASM) $ $ $ - $ + $ ) # With binaryen installed, it seems its wasm backend optimiser gets invoked automatically. @@ -151,7 +151,7 @@ if(WASM) $ $ $ - $ + $ ) else() # For use when compiling dependent cpp projects @@ -183,7 +183,7 @@ else() $ $ $ - $ + $ $ ) diff --git a/cpp/src/barretenberg/dsl/CMakeLists.txt b/cpp/src/barretenberg/dsl/CMakeLists.txt index 04eeab8d78..f4697905ea 100644 --- a/cpp/src/barretenberg/dsl/CMakeLists.txt +++ b/cpp/src/barretenberg/dsl/CMakeLists.txt @@ -1,2 +1,2 @@ add_subdirectory(acir_format) -add_subdirectory(proofs) +add_subdirectory(acir_proofs) diff --git a/cpp/src/barretenberg/dsl/proofs/CMakeLists.txt b/cpp/src/barretenberg/dsl/acir_proofs/CMakeLists.txt similarity index 75% rename from cpp/src/barretenberg/dsl/proofs/CMakeLists.txt rename to cpp/src/barretenberg/dsl/acir_proofs/CMakeLists.txt index 7cfc2cdac8..9bdf62b9b7 100644 --- a/cpp/src/barretenberg/dsl/proofs/CMakeLists.txt +++ b/cpp/src/barretenberg/dsl/acir_proofs/CMakeLists.txt @@ -1,5 +1,5 @@ barretenberg_module( - proofs + acir_proofs acir_format plonk ) diff --git a/cpp/src/barretenberg/dsl/proofs/proofs.cpp b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp similarity index 98% rename from cpp/src/barretenberg/dsl/proofs/proofs.cpp rename to cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp index 0b74e0d885..df125ba495 100644 --- a/cpp/src/barretenberg/dsl/proofs/proofs.cpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp @@ -1,5 +1,5 @@ -#include "proofs.hpp" +#include "acir_proofs.hpp" #include "barretenberg/proof_system/proving_key/serialize.hpp" #include "barretenberg/dsl/acir_format/acir_format.hpp" #include "barretenberg/stdlib/types/types.hpp" @@ -7,7 +7,7 @@ using namespace plonk::stdlib::types; -namespace proofs { +namespace acir_proofs { uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf) { @@ -147,4 +147,4 @@ bool verify_proof( return verified; } -} // namespace proofs +} // namespace acir_proofs diff --git a/cpp/src/barretenberg/dsl/proofs/proofs.hpp b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp similarity index 93% rename from cpp/src/barretenberg/dsl/proofs/proofs.hpp rename to cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp index e31acd5150..e41a526f22 100644 --- a/cpp/src/barretenberg/dsl/proofs/proofs.hpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp @@ -1,7 +1,7 @@ #include #include -namespace proofs { +namespace acir_proofs { uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf); uint32_t get_total_circuit_size(uint8_t const* constraint_system_buf); @@ -16,4 +16,4 @@ size_t new_proof(void* pippenger, bool verify_proof( uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length); -} // namespace proofs +} // namespace acir_proofs diff --git a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp new file mode 100644 index 0000000000..79793fc9da --- /dev/null +++ b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp @@ -0,0 +1,48 @@ +#include "c_bind.hpp" +#include "acir_proofs.hpp" +#include + +#define WASM_EXPORT __attribute__((visibility("default"))) + +extern "C" { + +// Get the exact circuit size for the constraint system. +WASM_EXPORT uint32_t acir_proofs_get_exact_circuit_size(uint8_t const* constraint_system_buf) +{ + return acir_proofs::get_exact_circuit_size(constraint_system_buf); +} + +WASM_EXPORT uint32_t acir_proofs_get_total_circuit_size(uint8_t const* constraint_system_buf) +{ + return acir_proofs::get_total_circuit_size(constraint_system_buf); +} + +WASM_EXPORT size_t acir_proofs_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) +{ + return acir_proofs::init_proving_key(constraint_system_buf, pk_buf); +} + +WASM_EXPORT size_t acir_proofs_init_verification_key(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const** vk_buf) +{ + return acir_proofs::init_verification_key(pippenger, g2x, pk_buf, vk_buf); +} + +WASM_EXPORT size_t acir_proofs_new_proof(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const* constraint_system_buf, + uint8_t const* witness_buf, + uint8_t** proof_data_buf) +{ + return acir_proofs::new_proof(pippenger, g2x, pk_buf, constraint_system_buf, witness_buf, proof_data_buf); +} + +WASM_EXPORT bool acir_proofs_verify_proof( + uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length) +{ + return acir_proofs::verify_proof(g2x, vk_buf, constraint_system_buf, proof, length); +} +} diff --git a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp new file mode 100644 index 0000000000..f763c54dfe --- /dev/null +++ b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp @@ -0,0 +1,24 @@ +#include +#include + +#define WASM_EXPORT __attribute__((visibility("default"))) + +extern "C" { + +WASM_EXPORT uint32_t acir_proofs_get_exact_circuit_size(uint8_t const* constraint_system_buf); +WASM_EXPORT uint32_t acir_proofs_get_total_circuit_size(uint8_t const* constraint_system_buf); +// Construct composer using prover and verifier key buffers +WASM_EXPORT size_t acir_proofs_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); +WASM_EXPORT size_t acir_proofs_init_verification_key(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const** vk_buf); +WASM_EXPORT size_t acir_proofs_new_proof(void* pippenger, + uint8_t const* g2x, + uint8_t const* pk_buf, + uint8_t const* constraint_system_buf, + uint8_t const* witness_buf, + uint8_t** proof_data_buf); +WASM_EXPORT bool acir_proofs_verify_proof( + uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length); +} diff --git a/cpp/src/barretenberg/dsl/proofs/c_bind.cpp b/cpp/src/barretenberg/dsl/proofs/c_bind.cpp deleted file mode 100644 index 308ac2ede7..0000000000 --- a/cpp/src/barretenberg/dsl/proofs/c_bind.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "c_bind.hpp" -#include "proofs.hpp" -#include - -#define WASM_EXPORT __attribute__((visibility("default"))) - -extern "C" { - -// Get the exact circuit size for the constraint system. -WASM_EXPORT uint32_t c_get_exact_circuit_size(uint8_t const* constraint_system_buf) -{ - return proofs::get_exact_circuit_size(constraint_system_buf); -} - -WASM_EXPORT uint32_t c_get_total_circuit_size(uint8_t const* constraint_system_buf) -{ - return proofs::get_total_circuit_size(constraint_system_buf); -} - -WASM_EXPORT size_t c_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf) -{ - return proofs::init_proving_key(constraint_system_buf, pk_buf); -} - -WASM_EXPORT size_t c_init_verification_key(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const** vk_buf) -{ - return proofs::init_verification_key(pippenger, g2x, pk_buf, vk_buf); -} - -WASM_EXPORT size_t new_proof(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const* constraint_system_buf, - uint8_t const* witness_buf, - uint8_t** proof_data_buf) -{ - return proofs::new_proof(pippenger, g2x, pk_buf, constraint_system_buf, witness_buf, proof_data_buf); -} - -WASM_EXPORT bool verify_proof( - uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length) -{ - return proofs::verify_proof(g2x, vk_buf, constraint_system_buf, proof, length); -} -} diff --git a/cpp/src/barretenberg/dsl/proofs/c_bind.hpp b/cpp/src/barretenberg/dsl/proofs/c_bind.hpp deleted file mode 100644 index b8a6ca5c18..0000000000 --- a/cpp/src/barretenberg/dsl/proofs/c_bind.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include - -#define WASM_EXPORT __attribute__((visibility("default"))) - -extern "C" { - -WASM_EXPORT uint32_t c_get_exact_circuit_size(uint8_t const* constraint_system_buf); -WASM_EXPORT uint32_t c_get_total_circuit_size(uint8_t const* constraint_system_buf); -// Construct composer using prover and verifier key buffers -WASM_EXPORT size_t c_init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); -WASM_EXPORT size_t c_init_verification_key(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const** vk_buf); -WASM_EXPORT size_t new_proof(void* pippenger, - uint8_t const* g2x, - uint8_t const* pk_buf, - uint8_t const* constraint_system_buf, - uint8_t const* witness_buf, - uint8_t** proof_data_buf); -WASM_EXPORT bool verify_proof( - uint8_t const* g2x, uint8_t const* vk_buf, uint8_t const* constraint_system_buf, uint8_t* proof, uint32_t length); -} From 077053cc1dab18537a48215f5e65bf883f895347 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Mon, 27 Mar 2023 16:04:28 +0100 Subject: [PATCH 7/9] Implement get_solidity_verifier function --- .../dsl/acir_proofs/acir_proofs.cpp | 23 +++++++++++++++++++ .../dsl/acir_proofs/acir_proofs.hpp | 4 ++++ .../barretenberg/dsl/acir_proofs/c_bind.cpp | 8 +++++++ .../barretenberg/dsl/acir_proofs/c_bind.hpp | 4 ++++ 4 files changed, 39 insertions(+) diff --git a/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp index df125ba495..03f89fe300 100644 --- a/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp @@ -4,11 +4,34 @@ #include "barretenberg/dsl/acir_format/acir_format.hpp" #include "barretenberg/stdlib/types/types.hpp" #include "barretenberg/srs/reference_string/pippenger_reference_string.hpp" +#include "barretenberg/proof_system/verification_key/sol_gen.hpp" using namespace plonk::stdlib::types; namespace acir_proofs { +uint32_t get_solidity_verifier(uint8_t const* g2x, + uint8_t const* vk_buf, + uint8_t const* constraint_system_buf, + uint8_t** output_buf) +{ + auto constraint_system = from_buffer(constraint_system_buf); + auto crs = std::make_shared(g2x); + bonk::verification_key_data vk_data; + read(vk_buf, vk_data); + auto verification_key = std::make_shared(std::move(vk_data), crs); + + std::ostringstream stream; + // TODO(blaine): Should we just use "Verifier" generically? + output_vk_sol(stream, verification_key, "UltraVerifier"); + + auto content_str = stream.str(); + std::vector buffer(content_str.begin(), content_str.end()); + + *output_buf = buffer.data(); + return static_cast(buffer.size()); +} + uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf) { auto constraint_system = from_buffer(constraint_system_buf); diff --git a/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp index e41a526f22..bf221e24e8 100644 --- a/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp @@ -3,6 +3,10 @@ namespace acir_proofs { +uint32_t get_solidity_verifier(uint8_t const* g2x, + uint8_t const* vk_buf, + uint8_t const* constraint_system_buf, + uint8_t** output_buf); uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf); uint32_t get_total_circuit_size(uint8_t const* constraint_system_buf); size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); diff --git a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp index 79793fc9da..30e68312f6 100644 --- a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp @@ -6,6 +6,14 @@ extern "C" { +WASM_EXPORT uint32_t acir_proofs_get_solidity_verifier(uint8_t const* g2x, + uint8_t const* vk_buf, + uint8_t const* constraint_system_buf, + uint8_t** output_buf) +{ + return acir_proofs::get_solidity_verifier(g2x, vk_buf, constraint_system_buf, output_buf); +} + // Get the exact circuit size for the constraint system. WASM_EXPORT uint32_t acir_proofs_get_exact_circuit_size(uint8_t const* constraint_system_buf) { diff --git a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp index f763c54dfe..65e943ad33 100644 --- a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp @@ -5,6 +5,10 @@ extern "C" { +WASM_EXPORT uint32_t acir_proofs_get_solidity_verifier(uint8_t const* g2x, + uint8_t const* vk_buf, + uint8_t const* constraint_system_buf, + uint8_t** output_buf); WASM_EXPORT uint32_t acir_proofs_get_exact_circuit_size(uint8_t const* constraint_system_buf); WASM_EXPORT uint32_t acir_proofs_get_total_circuit_size(uint8_t const* constraint_system_buf); // Construct composer using prover and verifier key buffers From 4ac894930b14bb4719f065a1c1343d9470fabc60 Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Mon, 27 Mar 2023 16:05:28 +0100 Subject: [PATCH 8/9] Fix no longer available properties --- .../proof_system/verification_key/sol_gen.hpp | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/cpp/src/barretenberg/proof_system/verification_key/sol_gen.hpp b/cpp/src/barretenberg/proof_system/verification_key/sol_gen.hpp index 096085b577..29fd773f0b 100644 --- a/cpp/src/barretenberg/proof_system/verification_key/sol_gen.hpp +++ b/cpp/src/barretenberg/proof_system/verification_key/sol_gen.hpp @@ -96,29 +96,29 @@ inline void output_vk_sol_ultra(std::ostream& os, std::shared_ptrnum_public_inputs, "vk.num_inputs"); print_u256("0x40", key->domain.root, "vk.work_root"); print_u256("0x60", key->domain.domain_inverse, "vk.domain_inverse"); - print_g1("0x80", "0xa0", key->constraint_selectors.at("Q_1"), "vk.Q1"); - print_g1("0xc0", "0xe0", key->constraint_selectors.at("Q_2"), "vk.Q2"); - print_g1("0x100", "0x120", key->constraint_selectors.at("Q_3"), "vk.Q3"); - print_g1("0x140", "0x160", key->constraint_selectors.at("Q_4"), "vk.Q4"); - print_g1("0x180", "0x1a0", key->constraint_selectors.at("Q_M"), "vk.Q_M"); - print_g1("0x1c0", "0x1e0", key->constraint_selectors.at("Q_C"), "vk.Q_C"); - print_g1("0x200", "0x220", key->constraint_selectors.at("Q_ARITHMETIC"), "vk.Q_ARITHMETIC"); - print_g1("0x240", "0x260", key->constraint_selectors.at("Q_SORT"), "vk.QSORT"); - print_g1("0x280", "0x2a0", key->constraint_selectors.at("Q_ELLIPTIC"), "vk.Q_ELLIPTIC"); - print_g1("0x2c0", "0x2e0", key->constraint_selectors.at("Q_AUX"), "vk.Q_AUX"); - print_g1("0x300", "0x320", key->permutation_selectors.at("SIGMA_1"), "vk.SIGMA1"); - print_g1("0x340", "0x360", key->permutation_selectors.at("SIGMA_2"), "vk.SIGMA2"); - print_g1("0x380", "0x3a0", key->permutation_selectors.at("SIGMA_3"), "vk.SIGMA3"); - print_g1("0x3c0", "0x3e0", key->permutation_selectors.at("SIGMA_4"), "vk.SIGMA4"); - print_g1("0x400", "0x420", key->constraint_selectors.at("TABLE_1"), "vk.TABLE1"); - print_g1("0x440", "0x460", key->constraint_selectors.at("TABLE_2"), "vk.TABLE2"); - print_g1("0x480", "0x4a0", key->constraint_selectors.at("TABLE_3"), "vk.TABLE3"); - print_g1("0x4c0", "0x4e0", key->constraint_selectors.at("TABLE_4"), "vk.TABLE4"); - print_g1("0x500", "0x520", key->constraint_selectors.at("TABLE_TYPE"), "vk.TABLE_TYPE"); - print_g1("0x540", "0x560", key->permutation_selectors.at("ID_1"), "vk.ID1"); - print_g1("0x580", "0x5a0", key->permutation_selectors.at("ID_2"), "vk.ID2"); - print_g1("0x5c0", "0x5e0", key->permutation_selectors.at("ID_3"), "vk.ID3"); - print_g1("0x600", "0x620", key->permutation_selectors.at("ID_4"), "vk.ID4"); + print_g1("0x80", "0xa0", key->commitments.at("Q_1"), "vk.Q1"); + print_g1("0xc0", "0xe0", key->commitments.at("Q_2"), "vk.Q2"); + print_g1("0x100", "0x120", key->commitments.at("Q_3"), "vk.Q3"); + print_g1("0x140", "0x160", key->commitments.at("Q_4"), "vk.Q4"); + print_g1("0x180", "0x1a0", key->commitments.at("Q_M"), "vk.Q_M"); + print_g1("0x1c0", "0x1e0", key->commitments.at("Q_C"), "vk.Q_C"); + print_g1("0x200", "0x220", key->commitments.at("Q_ARITHMETIC"), "vk.Q_ARITHMETIC"); + print_g1("0x240", "0x260", key->commitments.at("Q_SORT"), "vk.QSORT"); + print_g1("0x280", "0x2a0", key->commitments.at("Q_ELLIPTIC"), "vk.Q_ELLIPTIC"); + print_g1("0x2c0", "0x2e0", key->commitments.at("Q_AUX"), "vk.Q_AUX"); + print_g1("0x300", "0x320", key->commitments.at("SIGMA_1"), "vk.SIGMA1"); + print_g1("0x340", "0x360", key->commitments.at("SIGMA_2"), "vk.SIGMA2"); + print_g1("0x380", "0x3a0", key->commitments.at("SIGMA_3"), "vk.SIGMA3"); + print_g1("0x3c0", "0x3e0", key->commitments.at("SIGMA_4"), "vk.SIGMA4"); + print_g1("0x400", "0x420", key->commitments.at("TABLE_1"), "vk.TABLE1"); + print_g1("0x440", "0x460", key->commitments.at("TABLE_2"), "vk.TABLE2"); + print_g1("0x480", "0x4a0", key->commitments.at("TABLE_3"), "vk.TABLE3"); + print_g1("0x4c0", "0x4e0", key->commitments.at("TABLE_4"), "vk.TABLE4"); + print_g1("0x500", "0x520", key->commitments.at("TABLE_TYPE"), "vk.TABLE_TYPE"); + print_g1("0x540", "0x560", key->commitments.at("ID_1"), "vk.ID1"); + print_g1("0x580", "0x5a0", key->commitments.at("ID_2"), "vk.ID2"); + print_g1("0x5c0", "0x5e0", key->commitments.at("ID_3"), "vk.ID3"); + print_g1("0x600", "0x620", key->commitments.at("ID_4"), "vk.ID4"); os << " mstore(add(_vk, 0x640), " << (key->contains_recursive_proof ? "0x01" : "0x00") << ") // vk.contains_recursive_proof\n" " mstore(add(_vk, 0x660), " << (key->contains_recursive_proof ? key->recursive_proof_public_input_indices[0] : 0) << ") // vk.recursive_proof_public_input_indices\n" @@ -136,10 +136,10 @@ inline void output_vk_sol_ultra(std::ostream& os, std::shared_ptr const& key, std::string const& class_name) { From 2cca246b85a1814426e3e2dfd1013aabced6c5fd Mon Sep 17 00:00:00 2001 From: Blaine Bublitz Date: Mon, 27 Mar 2023 16:53:57 +0100 Subject: [PATCH 9/9] remove constraint system --- cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp | 6 +----- cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp | 5 +---- cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp | 7 ++----- cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp | 5 +---- 4 files changed, 5 insertions(+), 18 deletions(-) diff --git a/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp index 03f89fe300..524e0b3731 100644 --- a/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.cpp @@ -10,12 +10,8 @@ using namespace plonk::stdlib::types; namespace acir_proofs { -uint32_t get_solidity_verifier(uint8_t const* g2x, - uint8_t const* vk_buf, - uint8_t const* constraint_system_buf, - uint8_t** output_buf) +uint32_t get_solidity_verifier(uint8_t const* g2x, uint8_t const* vk_buf, uint8_t** output_buf) { - auto constraint_system = from_buffer(constraint_system_buf); auto crs = std::make_shared(g2x); bonk::verification_key_data vk_data; read(vk_buf, vk_data); diff --git a/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp index bf221e24e8..04d3ce25d5 100644 --- a/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/acir_proofs.hpp @@ -3,10 +3,7 @@ namespace acir_proofs { -uint32_t get_solidity_verifier(uint8_t const* g2x, - uint8_t const* vk_buf, - uint8_t const* constraint_system_buf, - uint8_t** output_buf); +uint32_t get_solidity_verifier(uint8_t const* g2x, uint8_t const* vk_buf, uint8_t** output_buf); uint32_t get_exact_circuit_size(uint8_t const* constraint_system_buf); uint32_t get_total_circuit_size(uint8_t const* constraint_system_buf); size_t init_proving_key(uint8_t const* constraint_system_buf, uint8_t const** pk_buf); diff --git a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp index 30e68312f6..81969e198f 100644 --- a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.cpp @@ -6,12 +6,9 @@ extern "C" { -WASM_EXPORT uint32_t acir_proofs_get_solidity_verifier(uint8_t const* g2x, - uint8_t const* vk_buf, - uint8_t const* constraint_system_buf, - uint8_t** output_buf) +WASM_EXPORT uint32_t acir_proofs_get_solidity_verifier(uint8_t const* g2x, uint8_t const* vk_buf, uint8_t** output_buf) { - return acir_proofs::get_solidity_verifier(g2x, vk_buf, constraint_system_buf, output_buf); + return acir_proofs::get_solidity_verifier(g2x, vk_buf, output_buf); } // Get the exact circuit size for the constraint system. diff --git a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp index 65e943ad33..44ab2e323d 100644 --- a/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp +++ b/cpp/src/barretenberg/dsl/acir_proofs/c_bind.hpp @@ -5,10 +5,7 @@ extern "C" { -WASM_EXPORT uint32_t acir_proofs_get_solidity_verifier(uint8_t const* g2x, - uint8_t const* vk_buf, - uint8_t const* constraint_system_buf, - uint8_t** output_buf); +WASM_EXPORT uint32_t acir_proofs_get_solidity_verifier(uint8_t const* g2x, uint8_t const* vk_buf, uint8_t** output_buf); WASM_EXPORT uint32_t acir_proofs_get_exact_circuit_size(uint8_t const* constraint_system_buf); WASM_EXPORT uint32_t acir_proofs_get_total_circuit_size(uint8_t const* constraint_system_buf); // Construct composer using prover and verifier key buffers