-
Notifications
You must be signed in to change notification settings - Fork 101
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Aztec3 Specific Work in Barretenberg #142
Conversation
725579b
to
6f91194
Compare
3e85d98
to
8193a91
Compare
da723dd
to
74c66a7
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this seems fine, particularly the bulk of the changes related to the Pedersen splitting. Some of the other work going into this seems somewhat incomplete, i.e. lots of functions that appear to be untested/unused in the stdlib. If that is indeed the case, my preference would be to either add tests (now or in an immediate follow-on), or split that work out and get it in separately once it is tested.
@@ -0,0 +1,153 @@ | |||
#pragma once |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As far as I can tell, the functions implemented in this file are not used/tested anywhere. If that's the case, I'd suggest they either be tested or removed until they're needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added tests here: #262
@@ -103,6 +103,13 @@ template <typename ComposerContext> class field_t { | |||
return *this; | |||
} | |||
|
|||
static field_t copy_as_new_witness(ComposerContext& context, field_t const& other) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New function does not appear to be tested/used anywhere.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a test: 952bbf2
template <typename ComposerContext> | ||
void bool_t<ComposerContext>::must_imply(const bool_t& other, std::string const& msg) const | ||
{ | ||
(this->implies(other)).assert_equal(true, msg); | ||
} | ||
|
||
/** | ||
* Process many implications all at once, for readablity, and as an optimisation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Untested/unused?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added tests:
barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp
Lines 394 to 470 in 0414410
TEST(stdlib_bool, must_imply_multiple) | |
{ | |
honk::StandardHonkComposer composer = honk::StandardHonkComposer(); | |
/** | |
* Define g(x) = 2x + 12 | |
* if x is divisible by both 4 and 6: | |
* => g(x) > 0 | |
* => g(x) is even | |
* => g(x) >= 12 | |
* => g(x) is a multiple of 6 | |
*/ | |
auto g = [](size_t x) { return 2 * x + 12; }; | |
for (size_t j = 0; j < 3; ++j) { // ignore when both lhs and rhs are constants | |
bool lhs_constant = (bool)(j % 2); | |
bool rhs_constant = (bool)(j > 1 ? true : false); | |
for (size_t x = 10; x < 18; x += 2) { | |
std::vector<std::pair<bool_t, std::string>> conditions; | |
bool four = (bool)(x % 4 == 0); | |
bool six = (bool)(x % 6 == 0); | |
bool_t a = lhs_constant ? bool_t(four) : (witness_t(&composer, four)); | |
bool_t b = rhs_constant ? bool_t(six) : (witness_t(&composer, six)); | |
auto g_x = g(x); | |
conditions.push_back(std::make_pair(g_x > 0, "g(x) > 0")); | |
conditions.push_back(std::make_pair(g_x % 2 == 0, "g(x) is even")); | |
conditions.push_back(std::make_pair(g_x >= 12, "g(x) >= 12")); | |
conditions.push_back(std::make_pair(g_x % 6 == 0, "g(x) is a multiple of 6")); | |
(a && b).must_imply(conditions); | |
if (composer.failed()) { | |
EXPECT_EQ(composer.err(), "multi implication fail: g(x) is a multiple of 6"); | |
} else { | |
auto prover = composer.create_prover(); | |
auto verifier = composer.create_verifier(); | |
plonk::proof proof = prover.construct_proof(); | |
bool result = verifier.verify_proof(proof); | |
EXPECT_EQ(result, true); | |
} | |
} | |
} | |
} | |
TEST(stdlib_bool, must_imply_multiple_fails) | |
{ | |
honk::StandardHonkComposer composer = honk::StandardHonkComposer(); | |
/** | |
* Given x = 15: | |
* (x > 10) | |
* => (x > 8) | |
* => (x > 5) | |
* ≠> (x > 18) | |
*/ | |
for (size_t j = 0; j < 2; ++j) { // ignore when both lhs and rhs are constants | |
bool is_constant = (bool)(j % 2); | |
size_t x = 15; | |
bool main = (bool)(x > 10); | |
bool_t main_ct = is_constant ? bool_t(main) : (witness_t(&composer, main)); | |
std::vector<std::pair<bool_t, std::string>> conditions; | |
conditions.push_back(std::make_pair(witness_t(&composer, x > 8), "x > 8")); | |
conditions.push_back(std::make_pair(witness_t(&composer, x > 5), "x > 5")); | |
conditions.push_back(std::make_pair(witness_t(&composer, x > 18), "x > 18")); | |
main_ct.must_imply(conditions); | |
EXPECT_EQ(composer.failed(), true); | |
EXPECT_EQ(composer.err(), "multi implication fail: x > 18"); | |
} | |
} |
@@ -420,18 +420,68 @@ void bool_t<ComposerContext>::assert_equal(const bool_t& rhs, std::string const& | |||
} | |||
} | |||
|
|||
// if predicate == true then return lhs, else return rhs | |||
template <typename ComposerContext> | |||
bool_t<ComposerContext> bool_t<ComposerContext>::conditional_assign(const bool_t<ComposerContext>& predicate, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Untested/unused?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Its unused but I've added a test since we might use it:
barretenberg/cpp/src/barretenberg/stdlib/primitives/bool/bool.test.cpp
Lines 472 to 500 in 0414410
TEST(stdlib_bool, conditional_assign) | |
{ | |
honk::StandardHonkComposer composer = honk::StandardHonkComposer(); | |
for (size_t j = 0; j < 4; ++j) { | |
bool lhs_constant = (bool)(j % 2); | |
bool rhs_constant = (bool)(j > 1 ? true : false); | |
const uint256_t x = (uint256_t(1) << 128) - 1; | |
const uint256_t val = engine.get_random_uint256(); | |
bool condition = (val % 2 == 0); | |
bool right = x < val; | |
bool left = x > val; | |
bool_t l_ct = lhs_constant ? bool_t(left) : (witness_t(&composer, left)); | |
bool_t r_ct = rhs_constant ? bool_t(right) : (witness_t(&composer, right)); | |
bool_t cond = (witness_t(&composer, condition)); | |
auto result = bool_t::conditional_assign(cond, l_ct, r_ct); | |
EXPECT_EQ(result.get_value(), condition ? left : right); | |
} | |
auto prover = composer.create_prover(); | |
auto verifier = composer.create_verifier(); | |
plonk::proof proof = prover.construct_proof(); | |
info("composer gates = ", composer.get_num_gates()); | |
bool result = verifier.verify_proof(proof); | |
EXPECT_EQ(result, true); | |
} |
} | ||
field_ct z = plonk::stdlib::pedersen_hash<Composer>::hash_multiple({ y, y }); | ||
auto zz = crypto::pedersen_hash::hash_multiple({ x, x }); // uses fixed-base multiplication gate | ||
if constexpr (Composer::type == ComposerType::PLOOKUP) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we have fixed standalone tests for pedersen_hash::hash_multiple
and pedersen_hash::lookup::hash_multiple
that do not depend on which Composer the system Composer is set to? I.e. are we always only testing one or the other? If so maybe we need some individual tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So we do not (and have not had in the past too) tests that check the native Pedersen hash. We always check if the native and circuit (i.e. stdlib
) Pedersen hashes match. We do have tests that check the hash ladder (in generators
module) but we don't need to test native implementation of Pedersen hash. The reason for that is there is no standard for Pedersen hash like we have for SHA and other hashes. In the other native hash implementations, we test against NIST-based test vectors. We don't have that for Pedersen hash. As long as native and stdlib implementations match, we are fine.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW we still do test lookup based Pedersen hash because its design is much simpler. To write tests for fixed-base Pedersen hash is possible but not necessary right now in my opinion.
#include "../generators/generator_data.hpp" | ||
#include "../generators/fixed_base_scalar_mul.hpp" | ||
|
||
using namespace crypto::generators; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is far from the only place this is done in our code base but just want to start to flag this: I think it's universally agreed that using directives like this are a bad idea in header files because then they apply anywhere this header is included. Would be nice to start to get rid of them but this might not be the time/place.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed. Lets keep this comment for future reference.
for (size_t i = 0; i < 2 * m; i++) { | ||
if ((i & 1) == 0) { | ||
const auto iv = (grumpkin::g1::affine_one * fr(ivs[i >> 1] + 1)).x; | ||
intermediate = affine_element(compute_expected(intermediate, 0) + compute_expected(iv, 15)).x; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can this magic number 15
be tied to some fundamental constant somewhere? More generally, looks like the tests in this file have never had any comments but it would be really nice to at least have a couple comments on the new tests being added while someone has a really complete view of them in their head.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done: d98286d
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a comment too.
element<Fq, Fr, T> e; | ||
e.self_set_infinity(); | ||
if (!e.is_point_at_infinity()) { | ||
info("yup, it's infinity"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm assuming this is just some leftover debugging code or something? Print statement does not seem to reflect the condition being checked
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed the condition, wasn't necessary.
cpp/src/aztec/join_split_example/proofs/join_split/join_split.test.cpp
Outdated
Show resolved
Hide resolved
31f3896
to
9aae3b4
Compare
@@ -46,6 +46,21 @@ template <typename Composer> struct point { | |||
}; | |||
|
|||
bool_t<Composer> operator==(const point& other) const { return (this->x == other.x) && (this->y == other.y); } | |||
|
|||
point<Composer> operator+(const point& other) const |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
af1e54b
to
5820a3c
Compare
db262f7
to
9e7d824
Compare
* Cout for verification key struct * Try fix build
* compute merkle tree
remove info. fix. remove logging. Fix. refactor array to array tests. remove old tests.
* feat(memory_tree): frontier paths * fix: sibling path rename, nullifier tree -> protected vars * clean * test: sibling path test --------- Co-authored-by: cheethas <[email protected]>
* fix array and resolve merge conflicts * Remove suyash's function (its less efficient). --------- Co-authored-by: Suyash Bagad <[email protected]>
* align native and circuit vk hashing methods * fix: pass hash_index to circuit vk function * add some of the composer_type/plookup toggling for vk compress. Add some vk/eval-domain comments * rename key_witnesses->preimage_data and composer type compression to circuit-compress of recursion vk * some native verification_key_data tests * add native and recursive vk compress test. * change test name. --------- Co-authored-by: dbanks12 <[email protected]> Co-authored-by: Suyash Bagad <[email protected]> js vk change.
* Build a3crypto.wasm Builds a smaller wasm than full barretenberg with crypto primitives to be used from aztec3-packages. * Rename to primitives and remove asyncify * Add missing modules for tests
* align native and circuit vk hashing methods * fix: pass hash_index to circuit vk function * add some of the composer_type/plookup toggling for vk compress. Add some vk/eval-domain comments * rename key_witnesses->preimage_data and composer type compression to circuit-compress of recursion vk * some native verification_key_data tests * Mc/hash vk (#306) * align native and circuit vk hashing methods * fix: pass hash_index to circuit vk function * add some of the composer_type/plookup toggling for vk compress. Add some vk/eval-domain comments * rename key_witnesses->preimage_data and composer type compression to circuit-compress of recursion vk * some native verification_key_data tests * add native and recursive vk compress test. * change test name. --------- Co-authored-by: dbanks12 <[email protected]> Co-authored-by: Suyash Bagad <[email protected]> * verification key tests * inc num_generators_per_hash_index to 128. (#309) * revert bad changes to eval domain * add vk recursion tests to CI, remove old info in vk test * Remove new CI job in config.yml --------- Co-authored-by: iAmMichaelConnor <[email protected]> Co-authored-by: Suyash Bagad <[email protected]> Co-authored-by: Suyash Bagad <[email protected]>
Rebase fixes. Change js vk hash and size with ultra.
There's a lot going on here but I'm satisfied. Thanks for all the test updates etc @suyash67! |
* Added dynamic array abstraction into standard library (AztecProtocol#112) Implements RAM/ROM stuff and dynamic arrays as well as separated all fixed_base operation in standard plonk into a separate file, so that it is no longer part of composer * fix: Store lagrange forms of selector polys w/ Ultra (AztecProtocol#255) * store lagrange forms of selector polynomials when serializing pk for Ultra * added comment to ultra_selector_properties * feat(ts): allow passing srs via env functions (AztecProtocol#260) * feat(ts): switch to node-modules linker * feat(ts): add new env for SRS objects * feat(ts): test srs bindings * fix: proper uint8_t include * feat(ts): revert unneeded changes * feat(ts): revert unneeded changes * feat(ts): unify writeMemory arg order * Update barretenberg_wasm.ts * feat(ts): fix srs comments * Update data_store.hpp --------- Co-authored-by: Adam Domurad <[email protected]> * Lde/transcript (AztecProtocol#248) * adding adrians new transcript classes * tests added for transcript and new manifest concept --------- Co-authored-by: codygunton <[email protected]> * fix(build): git add -f .yalc (AztecProtocol#265) * feat(ts): switch to node-modules linker * feat(ts): add new env for SRS objects * feat(ts): test srs bindings * fix: proper uint8_t include * feat(ts): revert unneeded changes * feat(ts): revert unneeded changes * feat(ts): unify writeMemory arg order * Update barretenberg_wasm.ts * feat(ts): fix srs comments * Fix deps * Fix comments * fix(build): git add -f .yalc * Merge --------- Co-authored-by: Adam Domurad <[email protected]> * chore: modularize bb (AztecProtocol#271) * chore: modularize ts * chore: reformat * Adding foundation to bb.js (AztecProtocol#274) * cleaning up bb.js deps * update bb structure to use workspaces * remove foundation .yarn/cache * chore: don't bundle .yalc * Update readme * chore: modularize bb (AztecProtocol#271) * chore: modularize ts * chore: reformat * merge * remove yalc * Unbundle tsbuildinfo --------- Co-authored-by: ludamad <[email protected]> Co-authored-by: ludamad <[email protected]> * Fix build of ts package (AztecProtocol#276) * Splitting turbo composer (AztecProtocol#266) * Turbo Circuit Constructor working * Turbo!! And also fixed some of the fuzzer compilation issues * Luke: Addressing my own comments and adding minor TODOs where necessary --------- Co-authored-by: ledwards2225 <[email protected]> * Cg/move to shared (AztecProtocol#294) * Move circuit constructors to shared. * Move helper lib and perm helper. * Move tmp composers and helpers for plonk. * Fix namespace and red herring comment. * Remove pointless namespace declaration. * Fix more namespaces. * Split flavor * Rename tests to avoid ambiguity. * Remove redundant macro defs. * Fix comment formatting. * StandardArithmetization is not shared with plonk. * Lde/split gemini (AztecProtocol#256) * adding adrians new transcript classes * building with some failing tests * tests passing * tests added for transcript and new manifest concept * improvements to the manifest concept * prover now operating on split gemini fuctionality * make shplonk test independent of Gemini * gemini and kzg tests updated; reduce prove removed from gemini * general cleanup * woops, fix gcc build * minor rebase fix * make gemini method return fold polys per Adrians suggestion * fix bad move * Lde/lookup grand product (AztecProtocol#286) * moving perm grand product to prover lib and fleshing out lookup grand product * cleaning up perm grand product test * lookup grand product test in place * cleaning up lookup grand prod test and adding sorted list accum method and test * rename prover tests to prover library tests * general cleanup * improve naming for gamma and beta constants * rabse fix * Cg/arithmetization (AztecProtocol#296) * Move gate data to better location. * Add basic arithmetization class. * CircuitConstructor takes Arithmetization. * Remove FooSelector enums from split composers. * feat: Working UltraPlonk for Noir (AztecProtocol#299) * Make dsl composer agnostic. * change SYSTEM_COMPOSER under stdlib::types to ultra composer type * use ultra logic constraints * in process of debugging, move to using ultra logic constraints * add get_total_circuit_size method * acir format tests showing failures with range constraints of different bit sizes * remove unnecessary comment * (fix) Temporarily add a redundant add-gate for variables that need range constraint < 8 bits. * rename functions * Implement get_solidity_verifier function * Fix no longer available properties * remove constraint system * logic gate changes using plookup * logic gate debugging * test for logic gates passing * last debug things XOR and AND returnign correct results, XOR still failing * cleanup * pedersen_plookup * plookup funcs * add to header * fixed error in pedersen hash when RHS is a circuit constant * added ACIR test for XOR gate pedersen hash test now checks y coordinate * temp disable wasm-opt * Making everything compile with any composer & add a cmake flag to switch on turbo * enable wasm-opt for asyncify but disable optimizations * remove using in header * fixed work queue bug with wasm wasm code path was not correctly storing fft outputs in proving key * added bitwise logic operations into stdlib stdlib method is utility method to provide Composer-agnostic interface due to the use of plookup tables if enabled * updated acir_format to use new stdlib logic class Updated ReadMe to include wasm example that supports gtest filtering * reenable tests * linting fixes * disable binaryen with comment * write instead of read * remove random * WIP * cleanup the debug logging * restore the randomness * only add a zero/one test instead of replacing * remove unused change * changes to make solgen work correctly in bindings * fix join_split_tests.test_deposit_construct_proof * working serialized proving key size and circuit change test for ultra (AztecProtocol#307) * USE_TURBO for join_split * Empty-Commit * Don't default one function; tweak comments. * Empty-Commit --------- Co-authored-by: Suyash Bagad <[email protected]> Co-authored-by: vezenovm <[email protected]> Co-authored-by: Maxim Vezenov <[email protected]> Co-authored-by: zac-williamson <[email protected]> Co-authored-by: kevaundray <[email protected]> Co-authored-by: codygunton <[email protected]> * Add debugging CMake preset & update code-workspace (AztecProtocol#308) * Add debugging CMake preset & update code-workspace --------- Co-authored-by: Blaine Bublitz <[email protected]> * Lde/ultra composer (AztecProtocol#302) * duplicate ultra composer with tests passing * instantiating a circuit constructor in composer but not using it yet * directory updates after rebase plus finalize circuit function added * WiP almost have composer helper proving key computation building * WiP still debugging linker error * linker issue seemingly resolved * create prover building and running with new composer * proving key polys match old composer for simple circuit * circuit with no lookups is verifying * all composer tests passing with split ultra composer * kill poly store debug code * cleanup * fix arithmetization rebase issues * WiP new test * fix bad circuit size bug * cleanup * fix(nix): Use wasi-sdk 12 to provide barretenberg-wasm in overlay (AztecProtocol#315) * fix(nix): Use wasi-sdk 12 to provide barretenberg-wasm in overlay * chore: Remove the wasm stuff from main package * chore(nix): Switch the default llvm to 11 * chore(nix): Add transcript00 to the overlay chore(nix): Cleanup for nix flake check * Use hash for each platform * avoid symlinks * try wasi-sdk that someone wrote on github * fix hash for linux * try to ignore libstdc++ * need the whole name * try to include std lib instead of ignore * cleanup and nix flake check * chore(ci): Check the nix flake in CI * run default build instead of llvm12 * Prep: move composer type, proving key and verification key. (AztecProtocol#303) * Move composer type from plonk to bonk. * Move pk & vk into plonk. * bonk ~> proof_system; nest plonk and honk in it. * proof_system independent of plonk. * fix(dsl): Use info instead of std::cout to log (AztecProtocol#323) * fix(dsl): Use info instead of std::cout to log * Empty-Commit --------- Co-authored-by: Maxim Vezenov <[email protected]> * fix(nix): Disable ASM & ADX when building in Nix (AztecProtocol#327) * fix(nix): Disable ASM & ADX when building in Nix * Empty-Commit --------- Co-authored-by: kevaundray <[email protected]> * Aztec3 Specific Work in Barretenberg (AztecProtocol#142) * Split Pedersen Hash & Commitment Gadgets (AztecProtocol#95) * [SQUASHED] Pedersen refactor into hash and commitment. Use lookup pedersen for merkle tree, fixed-base pedersen for commitments. --------- Co-authored-by: Suyash Bagad <[email protected]> Port `copy_as_new_witness`. Port `must_imply`. `operator++`. Port changes from `common`. Port `ecc/groups`. * [CPM] add missing dependencies to libbarretenberg.a (AztecProtocol#154) --------- * Increase Pedersen Generator indices and subindices. (AztecProtocol#169) * Remove a3 specific types. (AztecProtocol#252) * Address Luke's Comments on `aztec3 -> master` (AztecProtocol#263) * Add must_imply tests. * Added a test for `field_t::copy_as_new_witness` * add test for `conditional_assign` * Added `infinity` test. * Add `add_affine_test`. * Tests for Array Object in `stdlib` (AztecProtocol#262) * basic array tests. * Add `composer_type` while hashing/compressing a vkey. * Add `contains_recursive_proof` to Recursive VK (AztecProtocol#268) * feat: debug utility for serialization (AztecProtocol#290) * feat: enable asan config * `array_push` for Generic Type (AztecProtocol#291) * Add Indexed Merkle Tree (AztecProtocol#281) * remove ts (consulted with Adam and we're good to go). (AztecProtocol#292) * Add cout for verification_key struct (AztecProtocol#295) * compute tree (AztecProtocol#298) * [SQUASHED] fixing `push_array_to_array` method. (AztecProtocol#304) * feat(memory_tree|a3): add sibling path calculations (AztecProtocol#301) * feat(memory_tree): frontier paths * fix array and resolve merge conflicts (AztecProtocol#305) * Mc/hash vk (AztecProtocol#306) * Increase number of sub-generators to 128. * Build a3crypto.wasm (AztecProtocol#311) * More Tests on A3 `stdlib` methods (AztecProtocol#316) * test: more vk tests to compare circuit/native/vk_data (AztecProtocol#310) * Mc/hash vk (AztecProtocol#306) * inc num_generators_per_hash_index to 128. (AztecProtocol#309) * fix. (AztecProtocol#318) * Added test for `compute_tree_native`. (AztecProtocol#319) * Install instructions for apt on ubuntu (AztecProtocol#312) * Fix address compilation. (AztecProtocol#329) --------- Co-authored-by: David Banks <[email protected]> Co-authored-by: Michael Connor <[email protected]> Co-authored-by: dbanks12 <[email protected]> Co-authored-by: Santiago Palladino <[email protected]> Co-authored-by: ludamad <[email protected]> Co-authored-by: Maddiaa <[email protected]> Co-authored-by: Santiago Palladino <[email protected]> Co-authored-by: ludamad <[email protected]> Co-authored-by: cheethas <[email protected]> * Split shplonk in prep for work queue (AztecProtocol#321) * Consolidate permutation mapping computation into one method (AztecProtocol#330) * Lde/reinstate work queue (AztecProtocol#324) * make MSM size in work queue more flexible * new work queue hooked up everywhere excluding shplonk * improve interface and remove commitment key from prover * move old work queue to plonk namespace * fix(cmake): Remove leveldb dependency that was accidentally re-added (AztecProtocol#335) * fix(cmake): Remove leveldb dep d that was accidentally re-added * Empty-Commit --------- Co-authored-by: kevaundray <[email protected]> * change to get_num_gates() inside get_total_circuit_size() (AztecProtocol#332) * Mm/ensure all stdlib_primitives_tests are run using all four composers * UltraHonk Composer (Split) (AztecProtocol#339) * add split UltraHonk composer and checks for consistency with UltraPlonk * adding issue number to some TODOs * fix: Revert generator changes that cause memory OOB access (AztecProtocol#338) * fix: Revert generator changes that cause memory OOB access * Empty-Commit * Fix cci (temporarily). * comment out one more test. --------- Co-authored-by: kevaundray <[email protected]> Co-authored-by: Suyash Bagad <[email protected]> * doc: Document more thoroughly why fields don't 0-init (AztecProtocol#349) * Update field.hpp * Update field.hpp * Update field.hpp * 32-Byte Keccak256 challenges for UltraPlonK (AztecProtocol#350) * Add WithKeccak variants. * Update SYSTEM_COMPOSER dependents. * Ultra Honk arithmetic and grand product relations (AztecProtocol#351) * add width 4 perm grand prod construction relation * make grand prod construction use id polys, relation correctness passing * reorganize relation testing suites * primary ultra arithmetic relation with passing tests * secondary arith relation and grand prod init relation plus tests * add modified consistency check for selectors (AztecProtocol#354) * No `SYSTEM_COMPOSER` (AztecProtocol#352) * Get rid of system composer. * Remove USE_TURBO * Lde/lookup grand prod relation (AztecProtocol#359) * lookup grand product relation tests passing * ignore final entry in table polys for consistency chec, same reason as for selectors * adding eta and lookup gp delta to relation params * incorporate lookup gp init relation into tests * correcting the degree of lookup relation * fixed bug where range constraining connected witnesses threw an error (AztecProtocol#369) * fixed bug where range constraining connected witnesses threw an error * can now apply multiple overlapping ranges to the same witness (or copies of the witness) --------- Co-authored-by: codygunton <[email protected]> * Add Mutex to global initialisation of generators (AztecProtocol#371) * Mutex lock initialization call * add comment on mutex --------- Co-authored-by: kevaundray <[email protected]> * chore: Add cachix action for uploading binary cache artifacts (AztecProtocol#373) * chore: Add cachix action for uploading binary cache artifacts * Only run the nix action on master * run on my branch and remove todos * Remove running on my branch * Zw/recursion constraint reduction (AztecProtocol#377) * removed blake3s hash from ultraplonk recursive prover * UltraComposer will now not create duplicate non-native field multiplication constraints * Propagate new stuff to Honk and splitting_tmp. * Clean up and add comments. --------- Co-authored-by: codygunton <[email protected]> * add constraints to ensure that the result of the logic constraint is indeed produced from the left and right operands of the functions and improve testings. * fixed error where applying copy constraints to range-constrained indices would create an unbalanced set membership check * improve documentation and fix issue in non-ultra variants of the composer * [SQUASHED] ecdsa key recovery with test(s). (AztecProtocol#346) init commit. Recover pubkey works! Make gcc happy. Make gcc happy (again) gcc fix. don't use y = 0 as error condition. instead use (x = 0, y = 0) as failure return. * feat(nullifier_tree): make empty nullifier tree leaves hash be 0 (AztecProtocol#360) (AztecProtocol#382) * feat(nullifier_tree): make empty nullifier tree leaves be 0 * fix: add append zero behaviour and test * fix: explicit type name * clean: update class semantics --------- Co-authored-by: Maddiaa <[email protected]> Co-authored-by: cheethas <[email protected]> Co-authored-by: cheethas <[email protected]> * Solidity Ultra Verifier with tests (AztecProtocol#363) * initial setup * feat: add test setup * fix: revert unneeded cmakelist changes + typos * fix: solidity helper binaries in docker * chore: Use `-assert` variant instead of plain * chore: config.yml missing whitespace * fix: alpine base dockerfile * chore: add sol to build_manifest * Dockerfile: add string utils * fix: use different base, add bash * chore: remove stale misc * circle-ci fiddling * more circle fiddling * fiddle * Circle-ci fiddling for verifiers (AztecProtocol#365) * build_manifest update * fiddling * fiddling * skip ensure_repo * skipping more stuff * fiddling * get docker version * force change in key_gen * fiddle * docker version in cond_spot * fiddle * update path * fiddle * build in init * fiddle * fiddle * fiddle * fiddle * alpine * package naming * add apt-repository * add apt rep key * lld-15 * fiddle with docker * chore: cleanups * chore: remove log --------- Co-authored-by: cheethas <[email protected]> * fix: throw -> throw_or_abort in sol gen (AztecProtocol#388) * fix: throw -> throw_or_abort in sol gen * toggle nix build * fix: toggle nix build * chore: revert toggle --------- Co-authored-by: cheethas <[email protected]> * feat!: replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` (AztecProtocol#385) * feat: replace `MerkleMembershipConstraint` with`ComputeMerkleRootConstraint` * Update acir_format.cpp * Ultraplonk check_circuit (AztecProtocol#366) * Add check_circuit with mid-construction introspection * updating IPA to use transcript (AztecProtocol#367) * hack: introduce BARRETENBERG_CRYPTO_GENERATOR_PARAMETERS_HACK (AztecProtocol#409) * hack: introduce BARRETENBERG_CRYPTO_GENERATOR_PARAMETERS_HACK * doc: concise * Update generator_data.cpp * Update generator_data.cpp * Add Keccak constraints to acir_format (AztecProtocol#393) * exp: fix alpine versioning (AztecProtocol#415) Co-authored-by: cheethas <[email protected]> * Small change that was left out of construct_addition_chains fix (AztecProtocol#404) Fixes the intermittent construct_addition_chains bugs (the previous fix was incomplete) and cleans the test up a bit * Pending bb work for aztec3 (AztecProtocol#368) * update js vk (because we now use UP for merkle hashing) * Helpers for ECDSA in A3 (AztecProtocol#364) * Add `stdlib_keccak` in cmake. Correct an assertion in `to_byte_array` in bigfield. * Add `random_element` to affine element. * negate y conditionally. * Change pedersen hash c_bind to use `pedersen_hash::lookup`. * c_binds and other ECDSA related fixes (AztecProtocol#407) * Add v to stdlib ecdsa. * create an engine if its empty. * Add ecdsa c_bind. * print v as a uint32. * Add secp256k1 cbind. add c_bind.hpp Change hpp to h. remove hpp. * Add ecdsa in cmakelists. remove stdlib_ecdsa from build. * chore: align BARRETENBERG_CRYPTO_GENERATOR_PARAMETERS_HACK usage (AztecProtocol#411) * Update join_split test * Tweaks to comments * Add comment for the assertion in bigfield. * Expanded on ecdsa comment. --------- Co-authored-by: ludamad <[email protected]> Co-authored-by: ludamad <[email protected]> Co-authored-by: codygunton <[email protected]> * feat: CI to test aztec circuits with current commit of bberg (AztecProtocol#418) * More generators for aztec3. * update js vk (because we now use UP for merkle hashing) * Helpers for ECDSA in A3 (AztecProtocol#364) * Add `stdlib_keccak` in cmake. Correct an assertion in `to_byte_array` in bigfield. * Add `random_element` to affine element. * negate y conditionally. * Change pedersen hash c_bind to use `pedersen_hash::lookup`. * c_binds and other ECDSA related fixes (AztecProtocol#407) * Add v to stdlib ecdsa. * create an engine if its empty. * Add ecdsa c_bind. * print v as a uint32. * Add secp256k1 cbind. add c_bind.hpp Change hpp to h. remove hpp. * Add ecdsa in cmakelists. remove stdlib_ecdsa from build. * hack: (aztec3) introduce barretenberg crypto generator parameters hack (AztecProtocol#408) * hack: introduce BARRETENBERG_CRYPTO_GENERATOR_PARAMETERS_HACK * doc: concise * chore: align BARRETENBERG_CRYPTO_GENERATOR_PARAMETERS_HACK usage * CI to test aztec circuits with current commit of bberg * build manifest * chore: align BARRETENBERG_CRYPTO_GENERATOR_PARAMETERS_HACK usage (AztecProtocol#411) * try other branch of aztec packages * ci rename script * Update join_split test * bump aztec version and merge in aztec3-temporary fixes * aztec commit switched to branch * bump aztec commit and document * typo README.md * Update README.md --------- Co-authored-by: Suyash Bagad <[email protected]> Co-authored-by: Suyash Bagad <[email protected]> Co-authored-by: ludamad <[email protected]> Co-authored-by: ludamad <[email protected]> * chore: use build-system submodule (AztecProtocol#419) * attempt to remove old CI files and replace with build-system submodule * project and version files for CCI * slack orb context * slack bberg channel (AztecProtocol#422) * Cg/flavor (AztecProtocol#326) - Introducing the flavor classes (mainly honk, splash of plonk) --------- Co-authored-by: ledwards2225 <[email protected]> * Add external benchmarks (AztecProtocol#401) Adds an external_bench file with benchmarks we use for external benchmarking projects * Reduce occurence of using namespace syntax in header files (AztecProtocol#387) Co-authored-by: maramihali <[email protected]> * ensure all operand sizes are tested (AztecProtocol#432) Co-authored-by: maramihali <[email protected]> * Add ECDSA test for ACIR and fix (AztecProtocol#435) --------- Co-authored-by: zac-williamson <[email protected]> * chore(ci): Add Noir CI that runs with a github label (AztecProtocol#430) * Adds prehashed message variant of EcDSA (AztecProtocol#437) * verification takes a pre-hashed message : Note: if len(hash) > 32 bytes, then bigfield will fail * use hashed_message when generating signature * modify acir structure and function to now use prehashed variant * message -> hashed_message * Ultra Honk (AztecProtocol#412) * DSL: Add valid dummy data for ecdsa constraints when verifier is creating circuit (AztecProtocol#438) * Add way to make verifiers data valid by replacing zeroes with valid public keys and signatures Co-authored-by: Zachary James Williamson <[email protected]> * Update cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp * replace templates with concrete methods * add comment * PR review * add comments * change to use boolean flag, so dummy_ecdsa method lives in ecdsa * ad true as default --------- Co-authored-by: Zachary James Williamson <[email protected]> * chore(ci): Add explicit ref for Noir checkout (AztecProtocol#440) * feat!: add support for ROM and RAM ACVM opcodes (AztecProtocol#417) * *WIP* do not push * Generate constraints for dynamic memory * fix unit test: add missing block_constraint * add unit test for dynamic memory * missed one block constraint in ecdsa unit test * trying a rebase * remove comments * fix the build (AztecProtocol#442) * msgpack: initial support for friendly binary serialization format (AztecProtocol#374) * Regenerate pedersen lookup tables if they're empty * re-init generator tables if they're empty. * feat(nullifier_tree): make empty nullifier tree leaves hash be 0 (AztecProtocol#360) * feat(nullifier_tree): make empty nullifier tree leaves be 0 * fix: add append zero behaviour and test * fix: explicit type name * clean: update class semantics --------- Co-authored-by: cheethas <[email protected]> Co-authored-by: cheethas <[email protected]> * More generators for aztec3. * update js vk (because we now use UP for merkle hashing) * Helpers for ECDSA in A3 (AztecProtocol#364) * Add `stdlib_keccak` in cmake. Correct an assertion in `to_byte_array` in bigfield. * Add `random_element` to affine element. * negate y conditionally. * feat(nullifier_tree): make empty nullifier tree leaves hash be 0 (AztecProtocol#360) * feat(nullifier_tree): make empty nullifier tree leaves be 0 * fix: add append zero behaviour and test * fix: explicit type name * clean: update class semantics --------- Co-authored-by: cheethas <[email protected]> Co-authored-by: cheethas <[email protected]> * Change pedersen hash c_bind to use `pedersen_hash::lookup`. * feat: add msgpack-c submodule * Give up on msgpack c_master * Working hacky msgpack test * Interim work * Interim work * Getting rid of memory hacks * fix: memory leaks * Start of demoing cbinds * Align with other methods * chore: Remove need to return from msgpack method * Iterate example * fix: Hack around generator issues * feat: iterate on msgpack in bb * fix: fork msgpack for greater checks * Refactor * cleanup * Update turbo_circuit_constructor.cpp * chore: continued cleanup * chore: continued cleanup * chore: continued cleanup * Refactor * Refactor * fix: ci * feat(wasm): hacks to make work in a fno-exceptions wasm environment * feat(wasm): bump msgpack-c * feat(msgpack): first 'complex' object bound * More wasm fixes. Was breaking throw() declaration * Fix field serialization * refactoring * Update CMakeLists.txt * Remove // TODO redundant with msgpack * Refactor to use macro * Refactor to use macro * fix printing bug * fix: fieldd msgpack endianness fix * fix: remove shared ptr reference * doc * Add static checking for MSGPACK usage * Revert log.hpp change * Update struct_map_impl.hpp * Revert * remote_build fix * Keep trying to init submodules * Keep trying to init submodules * Bump * Add missing init_submodules * Msgpack test fix * Msgpack test fix * Msgpack test fix * Msgpack test fix * Update polynomial_store.test.cpp * Merge master * Update msgpack error * Better abort distinguishing * fix: join split VK hash * Serialization updates * Fix circuits build * Try to make circuits test work again * Try to make circuits test work again * Try to make circuits test work again * fix: initialization warning * fix: prefer default constructor for field, related cleanup * Grand rename * chore: remove unused funcs * Revert fields constructor change for now * chore: Revert .circleci changes * chore: Revert foundation removal * Revert .gitmodules * Update affine_element.hpp * Update element.hpp * Revert header optimizations * Revert init line * Update polynomial_store.test.cpp * Revert header optimization * Update raw_pointer.hpp * Update raw_pointer.hpp * Update func_traits.hpp documentation * Document msgpack methods in field_impl.hpp * Update msgpack.hpp * Update cbind.hpp * Update msgpack.hpp * Update msgpack.hpp * Update schema_impl.hpp * Update g1.hpp --------- Co-authored-by: Suyash Bagad <[email protected]> Co-authored-by: Maddiaa <[email protected]> Co-authored-by: cheethas <[email protected]> Co-authored-by: cheethas <[email protected]> Co-authored-by: Suyash Bagad <[email protected]> * Zw/noir recursion 2 (AztecProtocol#414) * removed redundant `reduce` operations after negating biggroup elements simplified hash input structure when hashing transcripts cached partial non native field multiplications reverted how native transcript computes hash buffers pedersen_plookup can be configured to skip the hash_single range check under limited conditions fixed the range check in pedersen_plookup::hash_single pedersen_plookup::hash_single now validates the low and high scalar slice values match the original scalar bigfield::operator- now correctly uses the UltraPlonk code path if able to added biggroup::multiple_montgomery_ladder to reduce required field multiplications added biggroup::quadruple_and_add to reduce required field multiplications biggroup_nafs now directly calls the Composer range constraint methods to avoid creating redundant arithmetic gates when using the PlookupComposer biggroup plookup ROM tables now track the maximum size of any field element recovered from the table (i.e. the maximum of the input maximum sizes) biggroup batch tables prefer to create size-6 lookup tables if doing so reduces the number of individual tables required for a given MSM recursion::transcript no longer performs redundant range constraints when adding buffer elements recursion::transcript correctly checks that, when slicing field elements , the slice values are correct over the integers (i.e. slice_sum != original + p) recursion::verification_key now optimally packs key data into minimum required number of field elements before hashing recursion::verifier proof and key data is now correctly extracted from the transcript/key instead of being generated directly as witnesses. cleaned up code + comments code tidy, added more comments cleaned up how aggregation object handles public inputs native verification_key::compress matches circuit output fixed compile errors + failing tests compiler error join_split.test.cpp passing Note: not changing any upstream .js verification keys. I don't think we need to as bberg is now decoupled from aztec connect * compiler fix * more compiler fix * attempt to fix .js and .sol tests * revert keccak transcript to original functionality * added hash_index back into verification_key::compress fixed composer bug where `decompose_into_default_range` was sometimes not range-constraining last limb removed commented-out code added more descriptive comments to PedersenPreimageBuilder * changed join-split vkey * temporarily point to branch of aztec that updates aggregation state usage until fix is in aztec master * revert .aztec-packages-commit * header brittleness fix * compiler fix * compiler fix w. aggregation object * reverting changes to `assign_object_to_proof_outputs` to preserve backwards-compatibility with a3-packages * more backwards compatibility fixes * wip --------- Co-authored-by: dbanks12 <[email protected]> Co-authored-by: David Banks <[email protected]> * Chore: bundle msgpack to fix nix-build (AztecProtocol#450) * Revert msgpack submodule * Bundle msgpack to avoid issues with submodules * variable-length keccak (AztecProtocol#441) * updated stdlib::keccak to be able to hash variable-length inputs (where input size not known at circuit-compile time, only a maximum possible input size) * compile error * compile fils * compiler fix * more fix * compiler fix * compile fix * Update cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp Co-authored-by: kevaundray <[email protected]> * Update cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp Co-authored-by: kevaundray <[email protected]> * Update cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp Co-authored-by: kevaundray <[email protected]> * Update cpp/src/barretenberg/stdlib/hash/keccak/keccak.test.cpp Co-authored-by: kevaundray <[email protected]> * Update cpp/src/barretenberg/stdlib/primitives/field/field.test.cpp Co-authored-by: kevaundray <[email protected]> * improved readability of stdlib test * replaced magic numbers in keccak with constants + comments --------- Co-authored-by: kevaundray <[email protected]> * chore: disable circuits tests in master (AztecProtocol#454) * fix: msgpack error (AztecProtocol#456) * Add missing `hash_index` while compressing vk. (AztecProtocol#457) * Add missing `hash_index` while compressing vk. * comment back vk tests with hash index > 0. * Adam/fix allow explicit field init (AztecProtocol#460) * fix: msgpack error * fix: allow explicit field init * fix: msgpack variant_impl.hpp (AztecProtocol#462) Previous version accidentally created a packer<packer<Stream>> * fix: bbmalloc linker error (AztecProtocol#459) * format msgpack serialization and excldue msgpack-c from clang-format (AztecProtocol#467) * patch: temporarily remove broken solidity ci (AztecProtocol#470) * Sumcheck improvements (AztecProtocol#455) * convert partially evaluated polynomials from vectors to Polynomials and rename * rename fold method to partially_evaluate * static constexpr barycentric arrays * change purported evaluations to claimed evaluations * specify relations in Flavor * Fixed a bug in biggroup tests (AztecProtocol#478) * DSL: Add KeccakVar opcode (AztecProtocol#476) * add initial KeccakVar code * add result field * add keccak_var_constraints to fields * Multi-constraint Relations (AztecProtocol#444) Allow for correct and efficient batching over identities in the Sumcheck relation --------- Co-authored-by: Zachary James Williamson <[email protected]> Co-authored-by: Maxim Vezenov <[email protected]> Co-authored-by: Adam Domurad <[email protected]> Co-authored-by: ledwards2225 <[email protected]> Co-authored-by: codygunton <[email protected]> Co-authored-by: spypsy <[email protected]> Co-authored-by: Santiago Palladino <[email protected]> Co-authored-by: Innokentii Sennovskii <[email protected]> Co-authored-by: ledwards2225 <[email protected]> Co-authored-by: Blaine Bublitz <[email protected]> Co-authored-by: Suyash Bagad <[email protected]> Co-authored-by: Maxim Vezenov <[email protected]> Co-authored-by: kevaundray <[email protected]> Co-authored-by: Suyash Bagad <[email protected]> Co-authored-by: David Banks <[email protected]> Co-authored-by: Michael Connor <[email protected]> Co-authored-by: dbanks12 <[email protected]> Co-authored-by: Maddiaa <[email protected]> Co-authored-by: Santiago Palladino <[email protected]> Co-authored-by: cheethas <[email protected]> Co-authored-by: maramihali <[email protected]> Co-authored-by: Max Hora <[email protected]> Co-authored-by: cheethas <[email protected]> Co-authored-by: Lasse Herskind <[email protected]> Co-authored-by: Tom French <[email protected]> Co-authored-by: guipublic <[email protected]> Co-authored-by: maramihali <[email protected]> Co-authored-by: Zachary James Williamson <[email protected]> Co-authored-by: Maddiaa <[email protected]>
* Split Pedersen Hash & Commitment Gadgets (AztecProtocol/barretenberg#95) * [SQUASHED] Pedersen refactor into hash and commitment. Use lookup pedersen for merkle tree, fixed-base pedersen for commitments. --------- Co-authored-by: Suyash Bagad <[email protected]> Port `copy_as_new_witness`. Port `must_imply`. `operator++`. Port changes from `common`. Port `ecc/groups`. * [CPM] add missing dependencies to libbarretenberg.a (AztecProtocol/barretenberg#154) --------- * Increase Pedersen Generator indices and subindices. (AztecProtocol/barretenberg#169) * Remove a3 specific types. (AztecProtocol/barretenberg#252) * Address Luke's Comments on `aztec3 -> master` (AztecProtocol/barretenberg#263) * Add must_imply tests. * Added a test for `field_t::copy_as_new_witness` * add test for `conditional_assign` * Added `infinity` test. * Add `add_affine_test`. * Tests for Array Object in `stdlib` (AztecProtocol/barretenberg#262) * basic array tests. * Add `composer_type` while hashing/compressing a vkey. * Add `contains_recursive_proof` to Recursive VK (AztecProtocol/barretenberg#268) * feat: debug utility for serialization (AztecProtocol/barretenberg#290) * feat: enable asan config * `array_push` for Generic Type (AztecProtocol/barretenberg#291) * Add Indexed Merkle Tree (AztecProtocol/barretenberg#281) * remove ts (consulted with Adam and we're good to go). (AztecProtocol/barretenberg#292) * Add cout for verification_key struct (AztecProtocol/barretenberg#295) * compute tree (AztecProtocol/barretenberg#298) * [SQUASHED] fixing `push_array_to_array` method. (AztecProtocol/barretenberg#304) * feat(memory_tree|a3): add sibling path calculations (AztecProtocol/barretenberg#301) * feat(memory_tree): frontier paths * fix array and resolve merge conflicts (AztecProtocol/barretenberg#305) * Mc/hash vk (AztecProtocol/barretenberg#306) * Increase number of sub-generators to 128. * Build a3crypto.wasm (AztecProtocol/barretenberg#311) * More Tests on A3 `stdlib` methods (AztecProtocol/barretenberg#316) * test: more vk tests to compare circuit/native/vk_data (AztecProtocol/barretenberg#310) * Mc/hash vk (AztecProtocol/barretenberg#306) * inc num_generators_per_hash_index to 128. (AztecProtocol/barretenberg#309) * fix. (AztecProtocol/barretenberg#318) * Added test for `compute_tree_native`. (AztecProtocol/barretenberg#319) * Install instructions for apt on ubuntu (AztecProtocol/barretenberg#312) * Fix address compilation. (AztecProtocol/barretenberg#329) --------- Co-authored-by: David Banks <[email protected]> Co-authored-by: Michael Connor <[email protected]> Co-authored-by: dbanks12 <[email protected]> Co-authored-by: Santiago Palladino <[email protected]> Co-authored-by: ludamad <[email protected]> Co-authored-by: Maddiaa <[email protected]> Co-authored-by: Santiago Palladino <[email protected]> Co-authored-by: ludamad <[email protected]> Co-authored-by: cheethas <[email protected]>
* Split Pedersen Hash & Commitment Gadgets (AztecProtocol/barretenberg#95) * [SQUASHED] Pedersen refactor into hash and commitment. Use lookup pedersen for merkle tree, fixed-base pedersen for commitments. --------- Co-authored-by: Suyash Bagad <[email protected]> Port `copy_as_new_witness`. Port `must_imply`. `operator++`. Port changes from `common`. Port `ecc/groups`. * [CPM] add missing dependencies to libbarretenberg.a (AztecProtocol/barretenberg#154) --------- * Increase Pedersen Generator indices and subindices. (AztecProtocol/barretenberg#169) * Remove a3 specific types. (AztecProtocol/barretenberg#252) * Address Luke's Comments on `aztec3 -> master` (AztecProtocol/barretenberg#263) * Add must_imply tests. * Added a test for `field_t::copy_as_new_witness` * add test for `conditional_assign` * Added `infinity` test. * Add `add_affine_test`. * Tests for Array Object in `stdlib` (AztecProtocol/barretenberg#262) * basic array tests. * Add `composer_type` while hashing/compressing a vkey. * Add `contains_recursive_proof` to Recursive VK (AztecProtocol/barretenberg#268) * feat: debug utility for serialization (AztecProtocol/barretenberg#290) * feat: enable asan config * `array_push` for Generic Type (AztecProtocol/barretenberg#291) * Add Indexed Merkle Tree (AztecProtocol/barretenberg#281) * remove ts (consulted with Adam and we're good to go). (AztecProtocol/barretenberg#292) * Add cout for verification_key struct (AztecProtocol/barretenberg#295) * compute tree (AztecProtocol/barretenberg#298) * [SQUASHED] fixing `push_array_to_array` method. (AztecProtocol/barretenberg#304) * feat(memory_tree|a3): add sibling path calculations (AztecProtocol/barretenberg#301) * feat(memory_tree): frontier paths * fix array and resolve merge conflicts (AztecProtocol/barretenberg#305) * Mc/hash vk (AztecProtocol/barretenberg#306) * Increase number of sub-generators to 128. * Build a3crypto.wasm (AztecProtocol/barretenberg#311) * More Tests on A3 `stdlib` methods (AztecProtocol/barretenberg#316) * test: more vk tests to compare circuit/native/vk_data (AztecProtocol/barretenberg#310) * Mc/hash vk (AztecProtocol/barretenberg#306) * inc num_generators_per_hash_index to 128. (AztecProtocol/barretenberg#309) * fix. (AztecProtocol/barretenberg#318) * Added test for `compute_tree_native`. (AztecProtocol/barretenberg#319) * Install instructions for apt on ubuntu (AztecProtocol/barretenberg#312) * Fix address compilation. (AztecProtocol/barretenberg#329) --------- Co-authored-by: David Banks <[email protected]> Co-authored-by: Michael Connor <[email protected]> Co-authored-by: dbanks12 <[email protected]> Co-authored-by: Santiago Palladino <[email protected]> Co-authored-by: ludamad <[email protected]> Co-authored-by: Maddiaa <[email protected]> Co-authored-by: Santiago Palladino <[email protected]> Co-authored-by: ludamad <[email protected]> Co-authored-by: cheethas <[email protected]>
Description
This branch contains all aztec3 specific changes that we want to incorporate in barretenberg. The aztec3-circuits repository references to the
aztec3
branch in barretenberg.Description of the changes: https://hackmd.io/R1VTaVC6QC6eBXEcATIeCA?view
Checklist:
/markdown/specs
have been updated.@brief
describing the intended functionality.