From fdddc3602c927b8bb88b313129b8359891c79faa Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Tue, 30 May 2023 19:24:09 +0000 Subject: [PATCH 1/8] single external barretenberg header for usage as C++ library --- cpp/src/barretenberg/barretenberg.hpp | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 cpp/src/barretenberg/barretenberg.hpp diff --git a/cpp/src/barretenberg/barretenberg.hpp b/cpp/src/barretenberg/barretenberg.hpp new file mode 100644 index 0000000000..febf243c71 --- /dev/null +++ b/cpp/src/barretenberg/barretenberg.hpp @@ -0,0 +1,68 @@ +#pragma once + +// External Barretenberg C++ API +#include "common/container.hpp" +#include "common/map.hpp" +#include "common/serialize.hpp" +#include "common/streams.hpp" +#include "common/throw_or_abort.hpp" +#include "crypto/blake2s/blake2s.hpp" +#include "crypto/blake3s/blake3s.hpp" +#include "crypto/ecdsa/ecdsa.hpp" +#include "crypto/generators/generator_data.hpp" +#include "crypto/keccak/keccak.hpp" +#include "crypto/pedersen_commitment/pedersen.hpp" +#include "crypto/pedersen_hash/pedersen.hpp" +#include "crypto/schnorr/schnorr.hpp" +#include "crypto/sha256/sha256.hpp" +#include "ecc/curves/bn254/fq.hpp" +#include "ecc/curves/bn254/fr.hpp" +#include "ecc/curves/bn254/g1.hpp" +#include "ecc/curves/grumpkin/grumpkin.hpp" +#include "numeric/random/engine.hpp" +#include "numeric/uint256/uint256.hpp" +#include "plonk/composer/turbo_composer.hpp" +#include "plonk/proof_system/types/proof.hpp" +#include "plonk/proof_system/verification_key/verification_key.hpp" +#include "proof_system/types/composer_type.hpp" +#include "serialize/cbind.hpp" +#include "serialize/cbind_fwd.hpp" +#include "serialize/msgpack.hpp" +#include "serialize/test_helper.hpp" +#include "srs/reference_string/env_reference_string.hpp" +#include "srs/reference_string/mem_reference_string.hpp" +#include "stdlib/commitment/pedersen/pedersen.hpp" +#include "stdlib/commitment/pedersen/pedersen_plookup.hpp" +#include "stdlib/encryption/ecdsa/ecdsa.hpp" +#include "stdlib/encryption/schnorr/schnorr.hpp" +#include "stdlib/hash/blake2s/blake2s.hpp" +#include "stdlib/hash/blake3s/blake3s.hpp" +#include "stdlib/hash/pedersen/pedersen.hpp" +#include "stdlib/merkle_tree/hash.hpp" +#include "stdlib/merkle_tree/membership.hpp" +#include "stdlib/merkle_tree/memory_store.hpp" +#include "stdlib/merkle_tree/memory_tree.hpp" +#include "stdlib/merkle_tree/merkle_tree.hpp" +#include "stdlib/merkle_tree/nullifier_tree/nullifier_leaf.hpp" +#include "stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.hpp" +#include "stdlib/merkle_tree/nullifier_tree/nullifier_tree.hpp" +#include "stdlib/primitives/address/address.hpp" +#include "stdlib/primitives/bigfield/bigfield.hpp" +#include "stdlib/primitives/biggroup/biggroup.hpp" +#include "stdlib/primitives/bit_array/bit_array.hpp" +#include "stdlib/primitives/bool/bool.hpp" +#include "stdlib/primitives/byte_array/byte_array.hpp" +#include "stdlib/primitives/curves/bn254.hpp" +#include "stdlib/primitives/field/array.hpp" +#include "stdlib/primitives/field/field.hpp" +#include "stdlib/primitives/group/group.hpp" +#include "stdlib/primitives/packed_byte_array/packed_byte_array.hpp" +#include "stdlib/primitives/point/point.hpp" +#include "stdlib/primitives/uint/uint.hpp" +#include "stdlib/primitives/witness/witness.hpp" +#include "stdlib/recursion/aggregation_state/aggregation_state.hpp" +#include "stdlib/recursion/aggregation_state/native_aggregation_state.hpp" +#include "stdlib/recursion/verification_key/verification_key.hpp" +#include "stdlib/recursion/verifier/program_settings.hpp" +#include "stdlib/recursion/verifier/verifier.hpp" +#include "transcript/manifest.hpp" \ No newline at end of file From 0d370cdee8026ffe334f504fa489b7dcc04e7928 Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Wed, 31 May 2023 15:34:41 +0000 Subject: [PATCH 2/8] fix wasm_export issue --- cpp/src/barretenberg/serialize/cbind_fwd.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/src/barretenberg/serialize/cbind_fwd.hpp b/cpp/src/barretenberg/serialize/cbind_fwd.hpp index ef5eee9204..dd5894f04c 100644 --- a/cpp/src/barretenberg/serialize/cbind_fwd.hpp +++ b/cpp/src/barretenberg/serialize/cbind_fwd.hpp @@ -3,7 +3,9 @@ #include // CBIND forward declarations for msgback default bind format (encode as tuple of args and return value as msgpack // string) +#ifndef WASM_EXPORT #define WASM_EXPORT extern "C" __attribute__((visibility("default"))) +#endif #define CBIND_DECL(cname) \ WASM_EXPORT void cname( \ From 8622113fb844b72210d22d8713f2aafd8a11af97 Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Wed, 31 May 2023 17:39:16 +0000 Subject: [PATCH 3/8] missing header include --- cpp/src/barretenberg/common/container.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/src/barretenberg/common/container.hpp b/cpp/src/barretenberg/common/container.hpp index 1c87bb1224..f82a40075f 100644 --- a/cpp/src/barretenberg/common/container.hpp +++ b/cpp/src/barretenberg/common/container.hpp @@ -2,6 +2,7 @@ #include #include #include +#include template C slice(C const& container, size_t start) { From 302da162a797b7a89accbff5ebc5cb7fa6ed4638 Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Wed, 31 May 2023 17:39:58 +0000 Subject: [PATCH 4/8] bump aztec commit --- cpp/.aztec-packages-commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/.aztec-packages-commit b/cpp/.aztec-packages-commit index 1f7391f92b..c07c561cd6 100644 --- a/cpp/.aztec-packages-commit +++ b/cpp/.aztec-packages-commit @@ -1 +1 @@ -master +db/single-bberg-header-and-cleanup From 12ea6eaf9f59f1a9371fa51aed17a04d11d7f282 Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Wed, 31 May 2023 17:51:46 +0000 Subject: [PATCH 5/8] missing includes --- cpp/src/barretenberg/common/map.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/src/barretenberg/common/map.hpp b/cpp/src/barretenberg/common/map.hpp index 79205f2bda..1118131e6f 100644 --- a/cpp/src/barretenberg/common/map.hpp +++ b/cpp/src/barretenberg/common/map.hpp @@ -1,5 +1,6 @@ #pragma once #include +#include #include /* From a99667c30939214b0536dfbe1e27685aa3e95f87 Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Wed, 31 May 2023 18:13:13 +0000 Subject: [PATCH 6/8] missing includes --- cpp/src/barretenberg/barretenberg.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cpp/src/barretenberg/barretenberg.hpp b/cpp/src/barretenberg/barretenberg.hpp index febf243c71..6eccbd2790 100644 --- a/cpp/src/barretenberg/barretenberg.hpp +++ b/cpp/src/barretenberg/barretenberg.hpp @@ -21,7 +21,8 @@ #include "ecc/curves/grumpkin/grumpkin.hpp" #include "numeric/random/engine.hpp" #include "numeric/uint256/uint256.hpp" -#include "plonk/composer/turbo_composer.hpp" +#include "plonk/composer/turbo_plonk_composer.hpp" +#include "plonk/composer/ultra_plonk_composer.hpp" #include "plonk/proof_system/types/proof.hpp" #include "plonk/proof_system/verification_key/verification_key.hpp" #include "proof_system/types/composer_type.hpp" From ac53879fcffbce9a8524bd27c44ee1f86836e5d2 Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Wed, 31 May 2023 18:30:18 +0000 Subject: [PATCH 7/8] revert unwanted cbind_fwd change --- cpp/src/barretenberg/barretenberg.hpp | 1 + cpp/src/barretenberg/serialize/cbind_fwd.hpp | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/cpp/src/barretenberg/barretenberg.hpp b/cpp/src/barretenberg/barretenberg.hpp index 6eccbd2790..28fbd21aa8 100644 --- a/cpp/src/barretenberg/barretenberg.hpp +++ b/cpp/src/barretenberg/barretenberg.hpp @@ -44,6 +44,7 @@ #include "stdlib/merkle_tree/memory_store.hpp" #include "stdlib/merkle_tree/memory_tree.hpp" #include "stdlib/merkle_tree/merkle_tree.hpp" +// TODO(dbanks12): Consider moving nullifier tree logic out of barretenberg into aztec repo #include "stdlib/merkle_tree/nullifier_tree/nullifier_leaf.hpp" #include "stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.hpp" #include "stdlib/merkle_tree/nullifier_tree/nullifier_tree.hpp" diff --git a/cpp/src/barretenberg/serialize/cbind_fwd.hpp b/cpp/src/barretenberg/serialize/cbind_fwd.hpp index dd5894f04c..ef5eee9204 100644 --- a/cpp/src/barretenberg/serialize/cbind_fwd.hpp +++ b/cpp/src/barretenberg/serialize/cbind_fwd.hpp @@ -3,9 +3,7 @@ #include // CBIND forward declarations for msgback default bind format (encode as tuple of args and return value as msgpack // string) -#ifndef WASM_EXPORT #define WASM_EXPORT extern "C" __attribute__((visibility("default"))) -#endif #define CBIND_DECL(cname) \ WASM_EXPORT void cname( \ From 672d077218703ba8073612fdce5986d3ec280cfc Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Wed, 31 May 2023 20:15:08 +0000 Subject: [PATCH 8/8] comments in api header with issues, hardcode aztec commit so it doesnt break when aztec PR is merged to master --- cpp/.aztec-packages-commit | 2 +- cpp/src/CMakeLists.txt | 1 + cpp/src/barretenberg/barretenberg.hpp | 8 ++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cpp/.aztec-packages-commit b/cpp/.aztec-packages-commit index c07c561cd6..9c6074054f 100644 --- a/cpp/.aztec-packages-commit +++ b/cpp/.aztec-packages-commit @@ -1 +1 @@ -db/single-bberg-header-and-cleanup +a952e233e2a436e37f295d06d1ce344aafba90d0 diff --git a/cpp/src/CMakeLists.txt b/cpp/src/CMakeLists.txt index 7f12367c67..0623373a7f 100644 --- a/cpp/src/CMakeLists.txt +++ b/cpp/src/CMakeLists.txt @@ -247,6 +247,7 @@ else() if(INSTALL_BARRETENBERG) # The `install` function takes targets to install in different destinations on the system. install( + # TODO(dbanks12): should only need to install API headers TARGETS barretenberg barretenberg_headers # We also give it an optional export name in case something wants to target the install. EXPORT barretenbergTargets diff --git a/cpp/src/barretenberg/barretenberg.hpp b/cpp/src/barretenberg/barretenberg.hpp index 28fbd21aa8..951ef5897f 100644 --- a/cpp/src/barretenberg/barretenberg.hpp +++ b/cpp/src/barretenberg/barretenberg.hpp @@ -26,6 +26,9 @@ #include "plonk/proof_system/types/proof.hpp" #include "plonk/proof_system/verification_key/verification_key.hpp" #include "proof_system/types/composer_type.hpp" +// TODO(https://github.com/AztecProtocol/barretenberg/issues/491): +// consider helper header(s) for serialization and other non-stdlib includes +// - possibly: common, serialize, srs, transcript #include "serialize/cbind.hpp" #include "serialize/cbind_fwd.hpp" #include "serialize/msgpack.hpp" @@ -44,7 +47,8 @@ #include "stdlib/merkle_tree/memory_store.hpp" #include "stdlib/merkle_tree/memory_tree.hpp" #include "stdlib/merkle_tree/merkle_tree.hpp" -// TODO(dbanks12): Consider moving nullifier tree logic out of barretenberg into aztec repo +// TODO(https://github.com/AztecProtocol/aztec-packages/issues/728): +// Consider moving nullifier tree logic out of barretenberg into aztec repo #include "stdlib/merkle_tree/nullifier_tree/nullifier_leaf.hpp" #include "stdlib/merkle_tree/nullifier_tree/nullifier_memory_tree.hpp" #include "stdlib/merkle_tree/nullifier_tree/nullifier_tree.hpp" @@ -67,4 +71,4 @@ #include "stdlib/recursion/verification_key/verification_key.hpp" #include "stdlib/recursion/verifier/program_settings.hpp" #include "stdlib/recursion/verifier/verifier.hpp" -#include "transcript/manifest.hpp" \ No newline at end of file +#include "transcript/manifest.hpp"