Skip to content
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

feat: Native Merkle Trees #7037

Merged
merged 74 commits into from
Aug 22, 2024
Merged

feat: Native Merkle Trees #7037

merged 74 commits into from
Aug 22, 2024

Conversation

PhilWindle
Copy link
Collaborator

@PhilWindle PhilWindle commented Jun 13, 2024

This PR is the first of several where we are moving to use native implementations of Merkle Trees for performance reasons. It includes:

  1. The core tree implementations for both indexed trees and append only trees.
  2. The introduction of LMDB as a dependency that we retrieve from GIT and build ourselves.
  3. The creation of a set of RAII wrapper objects around the LMDB concepts.
  4. The creation of a committed/uncommitted store on top of LMDB used by the trees for state management

@AztecBot
Copy link
Collaborator

AztecBot commented Jun 13, 2024

Benchmark results

Metrics with a significant change:

  • protocol_circuit_simulation_time_in_ms (private-kernel-tail-to-public): 669 (-55%)
  • avm_simulation_time_ms (Token:transfer_public): 26.7 (+39%)
Detailed results

All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.

This benchmark source data is available in JSON format on S3 here.

Proof generation

Each column represents the number of threads used in proof generation.

Metric 1 threads 4 threads 16 threads 32 threads 64 threads
proof_construction_time_sha256_ms 5,808 (+1%) 1,573 708 749 (-2%) 777 (+1%)
proof_construction_time_sha256_30_ms 11,506 (-1%) 3,092 1,377 1,437 (+1%) 1,465
proof_construction_time_sha256_100_ms 44,236 11,831 (-1%) 5,420 (-1%) 5,681 (+4%) 5,710 (-2%)
proof_construction_time_poseidon_hash_ms 79.0 (+1%) 34.0 34.0 58.0 (-2%) 88.0 (+1%)
proof_construction_time_poseidon_hash_30_ms 1,534 425 (+1%) 202 226 (-1%) 278 (+3%)
proof_construction_time_poseidon_hash_100_ms 5,668 1,514 674 (-1%) 710 (-5%) 744

L2 block published to L1

Each column represents the number of txs on an L2 block published to L1.

Metric 4 txs 8 txs 16 txs
l1_rollup_calldata_size_in_bytes 4,324 7,844 14,852
l1_rollup_calldata_gas 49,804 92,460 177,584
l1_rollup_execution_gas 1,373,832 2,107,384 3,892,564
l2_block_processing_time_in_ms 239 (-4%) 451 (+2%) 821 (-1%)
l2_block_building_time_in_ms 8,936 (-1%) 17,526 (+1%) 34,850 (-1%)
l2_block_rollup_simulation_time_in_ms 8,936 (-1%) 17,526 (+1%) 34,850 (-1%)
l2_block_public_tx_process_time_in_ms 7,555 (-1%) 15,990 33,317 (-1%)

L2 chain processing

Each column represents the number of blocks on the L2 chain where each block has 8 txs.

Metric 3 blocks 5 blocks
node_history_sync_time_in_ms 2,953 3,871 (+2%)
node_database_size_in_bytes 12,623,952 16,765,008
pxe_database_size_in_bytes 16,254 26,813

Circuits stats

Stats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.

Circuit simulation_time_in_ms witness_generation_time_in_ms input_size_in_bytes output_size_in_bytes proving_time_in_ms
private-kernel-init 92.2 (-1%) 422 (+12%) 21,755 44,860 N/A
private-kernel-inner 169 (-1%) 731 (+9%) 72,566 45,007 N/A
private-kernel-reset-tiny 468 (+2%) 888 (+5%) 65,675 44,846 N/A
private-kernel-tail 196 (+1%) 159 (+6%) 50,686 52,257 N/A
base-parity 5.62 (+1%) N/A 160 96.0 N/A
root-parity 35.6 (+1%) N/A 73,948 96.0 N/A
base-rollup 2,747 (-1%) N/A 189,136 664 N/A
root-rollup 40.4 (+1%) N/A 58,173 716 N/A
public-kernel-setup 84.0 (+1%) N/A 105,085 71,222 N/A
public-kernel-app-logic 95.4 N/A 104,911 71,222 N/A
public-kernel-tail 555 (+1%) N/A 410,534 16,414 N/A
private-kernel-reset-small 460 (+2%) N/A 66,341 45,629 N/A
private-kernel-tail-to-public ⚠️ 669 (-55%) 663 (+7%) 460,796 1,825 N/A
public-kernel-teardown 82.8 (+1%) N/A 105,349 71,222 N/A
merge-rollup 20.5 (+2%) N/A 38,174 664 N/A
undefined N/A N/A N/A N/A 77,804 (-5%)

Stats on running time collected for app circuits

Function input_size_in_bytes output_size_in_bytes witness_generation_time_in_ms
ContractClassRegisterer:register 1,344 11,731 344
ContractInstanceDeployer:deploy 1,408 11,731 18.4 (+1%)
MultiCallEntrypoint:entrypoint 1,920 11,731 407
FeeJuice:deploy 1,376 11,731 390 (-2%)
SchnorrAccount:constructor 1,312 11,731 74.8
SchnorrAccount:entrypoint 2,304 11,731 415 (+1%)
Token:privately_mint_private_note 1,280 11,731 101 (-6%)
FPC:fee_entrypoint_public 1,344 11,731 29.2 (+14%)
Token:transfer 1,312 11,731 242 (+6%)
Benchmarking:create_note 1,344 11,731 89.5 (+4%)
SchnorrAccount:verify_private_authwit 1,280 11,731 27.9 (+1%)
Token:unshield 1,376 11,731 535
FPC:fee_entrypoint_private 1,376 11,731 712 (+1%)

AVM Simulation

Time to simulate various public functions in the AVM.

Function time_ms bytecode_size_in_bytes
FeeJuice:_increase_public_balance 56.6 (-9%) 7,739
FeeJuice:set_portal 12.0 (-16%) 2,354
Token:constructor 81.1 (-4%) 26,051
FPC:constructor 55.1 (+1%) 18,001
FeeJuice:mint_public 39.4 (+2%) 5,877
Token:mint_public 70.8 (+3%) 10,917
Token:assert_minter_and_mint 40.7 (+1%) 7,512
AuthRegistry:set_authorized 37.5 (-21%) 4,391
FPC:prepare_fee 227 (-3%) 7,043
Token:transfer_public ⚠️ 26.7 (+39%) 39,426
FPC:pay_refund 61.8 (+4%) 10,234
Benchmarking:increment_balance 932 6,563
Token:_increase_public_balance 43.8 (+11%) 8,433
FPC:pay_refund_with_shielded_rebate 66.2 (+3%) 10,783

Public DB Access

Time to access various public DBs.

Function time_ms
get-nullifier-index 0.160 (-3%)

Tree insertion stats

The duration to insert a fixed batch of leaves into each tree type.

Metric 1 leaves 16 leaves 64 leaves 128 leaves 256 leaves 512 leaves 1024 leaves
batch_insert_into_append_only_tree_16_depth_ms 2.20 (+1%) 3.94 N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_count 16.8 31.7 N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_ms 0.115 (+2%) 0.111 N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_32_depth_ms N/A N/A 11.6 17.7 (-2%) 30.4 (-1%) 60.3 (+3%) 113 (-3%)
batch_insert_into_append_only_tree_32_depth_hash_count N/A N/A 95.9 159 287 543 1,055
batch_insert_into_append_only_tree_32_depth_hash_ms N/A N/A 0.111 0.103 (-2%) 0.0993 (-1%) 0.104 (+2%) 0.101 (-3%)
batch_insert_into_indexed_tree_20_depth_ms N/A N/A 14.5 25.9 (+1%) 42.7 (-2%) 86.3 (+5%) 160 (-3%)
batch_insert_into_indexed_tree_20_depth_hash_count N/A N/A 109 207 355 691 1,363
batch_insert_into_indexed_tree_20_depth_hash_ms N/A N/A 0.109 0.104 0.100 (-5%) 0.107 (+5%) 0.101 (-3%)
batch_insert_into_indexed_tree_40_depth_ms N/A N/A 16.6 (+1%) N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_count N/A N/A 132 N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_ms N/A N/A 0.107 (+1%) N/A N/A N/A N/A

Miscellaneous

Transaction sizes based on how many contract classes are registered in the tx.

Metric 0 registered classes 1 registered classes
tx_size_in_bytes 64,779 668,997

Transaction size based on fee payment method

| Metric | |
| - | |

@@ -9,101 +10,6 @@
#include <thread>
#include <vector>

namespace {
class ThreadPool {
public:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why change this file?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I see - any reason we went with the thread pool we weren't using? We use the mutex one

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I actually need the queueing function. Batch inserting into the tress will produce a variable number of jobs to be done.

throw std::runtime_error(ss.str());
}

std::vector<uint8_t> SerialiseKey(uint8_t key)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't use camelcase function names in C++ typically

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be fixed

#include <lmdb.h>
#include <vector>

namespace bb::crypto::merkle_tree {
Copy link
Collaborator

@ludamad ludamad Aug 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

functions.hpp is a bit generic, is this maybe a 'callbacks.hpp'?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

int SizeCmp(const MDB_val* a, const MDB_val* b);

int MemCmp(const MDB_val*, const MDB_val*);

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again we use snake_case

flags,
static_cast<mdb_mode_t>(S_IRWXU | S_IRWXG | S_IRWXO));
} catch (std::runtime_error& error) {
call_lmdb_func(mdb_env_close, _mdbEnv);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we plan to use this in WASM ever? (has no exceptions)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ugh, didn't realise that. Well, I don't think there are any plans to use this in WASM right now. If that changes I'll have to revisit.

// we found the key, now determine if it is the exact key
if (dbKey.mv_size == keySize && std::memcmp(dbKey.mv_data, keyBuffer.data(), dbKey.mv_size) == 0) {
// we have the exact key
data.resize(dbVal.mv_size);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just flagging using memcmp and memcpy instead of higher level constructs

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah good call. Have been through and removed everywhere possible.

@ludamad
Copy link
Collaborator

ludamad commented Aug 21, 2024

Wow lots of code :) Looks good mostly although I definitely power-read, just some minor comments

Copy link
Collaborator

@ludamad ludamad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, lgtm

@PhilWindle PhilWindle requested a review from fcarreiro August 22, 2024 11:18
@PhilWindle PhilWindle enabled auto-merge (squash) August 22, 2024 11:19
@PhilWindle PhilWindle merged commit 8a1032e into master Aug 22, 2024
97 checks passed
@PhilWindle PhilWindle deleted the pw/lmdb branch August 22, 2024 12:12
throw std::runtime_error(ss.str());
}

std::vector<uint8_t> serialise_key(uint8_t key)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As we discussed, watch out for endianness!

}
call_lmdb_func("mdb_dbi_open", mdb_dbi_open, transaction.underlying(), name.c_str(), flags, &_dbi);
if (cmp != nullptr) {
call_lmdb_func("mdb_set_compare", mdb_set_compare, transaction.underlying(), _dbi, cmp);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess it's ok to pass a null cmp here?


private:
MDB_dbi _dbi;
const LMDBEnvironment& _environment;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We discussed references vs other things. In this case it looked like you share environments so this is ok. In order of preference

  • unique_ptr (ownership)
  • reference / shared_ptr
  • raw pointer

whether to use shared_ptr or not, is a difficult copy. It's worth reading whatever you can find on the internet. At Google I think I never used shared_ptrs. Some TL;DR: with references you are forced to manage lifetime of the object at the caller (of this constructor), and are at risk of dangling references if you destruct the object too soon. With shared_ptrs you can do whatever you want, even destruct the original object, but you are then at risk of memory leaks (reference count never reaching 0 if things are wrong in the logic). Also shared_ptrs (in functions and constructors) pollute the interfaces. You'll see it in BB code.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, also, like we discussed, using references makes the structure non-assignable, which is sometimes a problem.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think shared pointer definitely doesn't need to pollute interfaces (you can just pass as reference still with shared ptr, don't see the issue). I have no issues with it personally and encourage its use if it simplifies moving values, though certainly a lot of cases can be unique ptr.

Definitely think references in classes are a bad pattern though

MDB_env* _mdbEnv;
uint32_t _maxReaders;
uint32_t _numReaders;
std::mutex _readersLock;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might have found that you had some method that in principle would be const, but you had to modify this mutex, and then you couldn't make it const!

There's a solution/pattern exactly for that. You make this mutable std::mutex _readersLock. And then you can still make it const.

The internet has references, a random one: isocpp/CppCoreGuidelines#655

std::vector<uint8_t> serialise_key(uint128_t key)
{
std::vector<uint8_t> buf(16);
#ifdef __i386__
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A pity that you had to do this! Leaks implementation from uint128_t I guess?

Consider extending those classes to always have data() or something. Alternatively, I hope both paths are tested or it will come back to bite you ;)

void try_abort();

protected:
const LMDBDatabase& _database;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We had a chat about making this unique_ptr

MSGPACK_FIELDS(msgType, header, value);
};

// #pragma pack(pop)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove?

PhilWindle pushed a commit that referenced this pull request Aug 22, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.50.0</summary>

##
[0.50.0](aztec-package-v0.49.2...aztec-package-v0.50.0)
(2024-08-22)


### Features

* Add a prover-node to the proving e2e tests
([#7952](#7952))
([ec5a5fb](ec5a5fb))
* Add max pending txs to bot
([#8046](#8046))
([7f5517e](7f5517e))
* Deterministic deployments for L1
([#8031](#8031))
([abc6b19](abc6b19))
* Introduce validator client
([#7854](#7854))
([e3be8e6](e3be8e6))
* JSON logging
([#8095](#8095))
([048fa12](048fa12))


### Bug Fixes

* Port option & extracting correct namespaced options
([#8097](#8097))
([e74c83e](e74c83e))
* Txe port and aztec start options
([#8071](#8071))
([23778c5](23778c5))


### Miscellaneous

* Configuration for bot on various networks
([#8063](#8063))
([453a096](453a096))
* Merge devnet fixes back to master
([#8149](#8149))
([6be2183](6be2183))
* Merge Provernet back to master
([#8070](#8070))
([82f3dc7](82f3dc7))
</details>

<details><summary>barretenberg.js: 0.50.0</summary>

##
[0.50.0](barretenberg.js-v0.49.2...barretenberg.js-v0.50.0)
(2024-08-22)


### Miscellaneous

* Merge devnet fixes back to master
([#8149](#8149))
([6be2183](6be2183))
</details>

<details><summary>aztec-packages: 0.50.0</summary>

##
[0.50.0](aztec-packages-v0.49.2...aztec-packages-v0.50.0)
(2024-08-22)


### ⚠ BREAKING CHANGES

* replace public key fetching API
([#7996](#7996))

### Features

* (LSP) suggest names that match any part of the current prefix
(noir-lang/noir#5752)
([0379462](0379462))
* Add `Expr::as_any_integer` and `Expr::as_member_access`
(noir-lang/noir#5742)
([0379462](0379462))
* Add `Expr::as_array`, `Expr::as_repeated_element_array` and same for
slice (noir-lang/noir#5750)
([0379462](0379462))
* Add `Expr::as_binary_op` (noir-lang/noir#5734)
([0379462](0379462))
* Add `Expr::as_bool` (noir-lang/noir#5729)
([0379462](0379462))
* Add `Expr::as_unary` (noir-lang/noir#5731)
([0379462](0379462))
* Add `Expr` methods: `as_tuple`, `as_parenthesized`, `as_index`,
`as_if` (noir-lang/noir#5726)
([0379462](0379462))
* Add `TraitImpl::trait_generic_args` and `TraitImpl::methods`
(noir-lang/noir#5722)
([0379462](0379462))
* Add `unsafe` blocks for calling unconstrained code from constrained
functions (noir-lang/noir#4429)
([0379462](0379462))
* Add a prover-node to the proving e2e tests
([#7952](#7952))
([ec5a5fb](ec5a5fb))
* Add max pending txs to bot
([#8046](#8046))
([7f5517e](7f5517e))
* Add reusable procedures to brillig generation
([#7981](#7981))
([99d1131](99d1131))
* Automate verify_honk_proof input generation
([#8092](#8092))
([bf38d61](bf38d61))
* **avm:** Enable zeromorph in AVM verification
([#8111](#8111))
([b1f9fb6](b1f9fb6)),
closes
[#4944](#4944)
* Build for arm
([#7994](#7994))
([0dffe1b](0dffe1b))
* Completing MockNote
([#8059](#8059))
([05efe23](05efe23)),
closes
[#7636](#7636)
* Constant addresses as addresses
([#8056](#8056))
([1da5caf](1da5caf))
* Deterministic deployments for L1
([#8031](#8031))
([abc6b19](abc6b19))
* **docs:** Cookbook integration
([#8083](#8083))
([19bd8a9](19bd8a9))
* Enabling public and private bridging w/ cli
([#8011](#8011))
([f0f9c73](f0f9c73))
* Fault-tolerant parsing of `fn` and `impl`
(noir-lang/noir#5753)
([0379462](0379462))
* Flush sequencer
([#8050](#8050))
([8821e5f](8821e5f))
* Introduce blob circuit
([#8101](#8101))
([4bb3bac](4bb3bac))
* Introduce validator client
([#7854](#7854))
([e3be8e6](e3be8e6))
* JSON logging
([#8095](#8095))
([048fa12](048fa12))
* LSP auto-import completion
(noir-lang/noir#5741)
([0379462](0379462))
* LSP autocomplete constructor fields
(noir-lang/noir#5732)
([0379462](0379462))
* LSP signature help (noir-lang/noir#5725)
([0379462](0379462))
* Max pending jobs in prover node
([#8045](#8045))
([c857604](c857604))
* Move out_hash inside tx_effect_hash
([#7489](#7489))
([ff0effe](ff0effe))
* Native Merkle Trees
([#7037](#7037))
([8a1032e](8a1032e))
* Oink recursive verifier
([#8121](#8121))
([580708a](580708a))
* **optimization:** Follow past `array_set`s when optimizing
`array_get`s (noir-lang/noir#5772)
([0379462](0379462))
* Passes copy_cycles by const reference to avoid copying
([#8051](#8051))
([495d363](495d363))
* **perf:** Mem2reg function state for value loads to optimize across
blocks (noir-lang/noir#5757)
([0379462](0379462))
* PG recursive verifier constructors based on stdlib inputs
([#8052](#8052))
([4c568b0](4c568b0))
* Poseidon2 gates for Ultra arithmetisation
([#7494](#7494))
([d86577c](d86577c))
* Prover node metrics
([#8086](#8086))
([ab018ff](ab018ff))
* Removed socat, fixed aztec-run
([#8145](#8145))
([ff94aa2](ff94aa2))
* Removing redundant key fetching
([#8043](#8043))
([2bbcc7b](2bbcc7b))
* Replace public key fetching API
([#7996](#7996))
([73d6aa9](73d6aa9))
* Small optimization in toradix
([#8040](#8040))
([0dc7a50](0dc7a50))
* Some fixes and cleanup in PG recursive verifier
([#8053](#8053))
([5f2a9bd](5f2a9bd))
* Suggest trait methods in LSP completion
(noir-lang/noir#5735)
([0379462](0379462))
* Suggest tuple fields in LSP completion
(noir-lang/noir#5730)
([0379462](0379462))
* Track world state metrics
([#8109](#8109))
([ca58d94](ca58d94))
* Typing specific pub keys
([#8099](#8099))
([638793a](638793a))
* Unify all acir recursion constraints based on RecursionConstraint and
proof_type
([#7993](#7993))
([7cb39bc](7cb39bc))
* User `super::` in LSP autocompletion if possible
(noir-lang/noir#5751)
([0379462](0379462))
* Various token note improvements
([#8062](#8062))
([8f9dfd9](8f9dfd9))
* Zk sumcheck
([#7517](#7517))
([0e9a530](0e9a530))


### Bug Fixes

* (LSP) only add cached files relevant to workspace
(noir-lang/noir#5775)
([2d70215](2d70215))
* Add DEBUG and LOG_LEVEL to valid env vars
([#8094](#8094))
([70e61f9](70e61f9))
* Add link to l1-artifacts
([#7940](#7940))
([dcfd120](dcfd120))
* Add missing trait impls for integer types to stdlib
(noir-lang/noir#5738)
([0379462](0379462))
* Allow comptime code to use break without also being `unconstrained`
(noir-lang/noir#5744)
([0379462](0379462))
* **avm:** Real bytes finalization
([#8041](#8041))
([047461a](047461a))
* **ci:** Correctly run bb tests with asserts
([#7607](#7607))
([7b73f69](7b73f69))
* Correctly constrain get header at
([#7893](#7893))
([2ebba0d](2ebba0d))
* Deploy L1 rollup contract using salt if provided
([#8074](#8074))
([1e8eddf](1e8eddf))
* Flaky e2e_prover_node test
([#8116](#8116))
([9d97bd4](9d97bd4))
* **frontend:** Continue type check if we are missing an unsafe block
(noir-lang/noir#5720)
([0379462](0379462))
* Let LSP autocompletion work in more contexts
(noir-lang/noir#5719)
([0379462](0379462))
* Port option & extracting correct namespaced options
([#8097](#8097))
([e74c83e](e74c83e))
* Set prover node max pending jobs in tests
([#8055](#8055))
([403c26f](403c26f))
* Stop WorldStrateSynchronizer in prover node
([#8126](#8126))
([f724b07](f724b07))
* Txe port and aztec start options
([#8071](#8071))
([23778c5](23778c5))
* Unconstrained fn mismatch is now a warning
(noir-lang/noir#5764)
([0379462](0379462))
* Wallet fixes for devnet, testing and misc
([#8058](#8058))
([15f3e8c](15f3e8c))


### Miscellaneous

* Add Brillig loop bytecode size regression and update noir-gates-diff
report (noir-lang/noir#5747)
([0379462](0379462))
* Apply some new lints across workspace
(noir-lang/noir#5736)
([0379462](0379462))
* **avm:** Kernel trace and finalization
([#8049](#8049))
([d7edd24](d7edd24))
* **avm:** Separate alu finalization
([#8069](#8069))
([e8a9eb4](e8a9eb4))
* **bb:** IPA parallelization cleanup
([#8088](#8088))
([9227fa9](9227fa9))
* **bb:** Simplify parallel_for_if_effective
([#8079](#8079))
([5bff26b](5bff26b))
* **bb:** Small cleanup in protogalaxy prover
([#8072](#8072))
([4cb5c83](4cb5c83))
* **ci:** Only show last 50 master cpp benches
([#8075](#8075))
([96f35bc](96f35bc))
* Clarify Field use (noir-lang/noir#5740)
([0379462](0379462))
* CLI command to set latest block as proven
([#7987](#7987))
([80eaf1d](80eaf1d))
* Configuration for bot on various networks
([#8063](#8063))
([453a096](453a096))
* Count brillig opcodes in nargo info
(noir-lang/noir#5189)
([0379462](0379462))
* Deduplication in Protogalaxy
([#8067](#8067))
([a5cc3ba](a5cc3ba))
* **docs:** Expanding solidity verifier chain list
(noir-lang/noir#5587)
([0379462](0379462))
* Dont trail whitespace in vscode
([#5661](#5661))
([7595d91](7595d91))
* Handle constant output for ec add opcode
([#8108](#8108))
([2ee79d2](2ee79d2))
* Make spans non-optional on `UnresolvedType`
(noir-lang/noir#5773)
([2d70215](2d70215))
* Merge devnet fixes back to master
([#8149](#8149))
([6be2183](6be2183))
* Merge devnet to master
([#8044](#8044))
([f84950f](f84950f))
* Merge Provernet back to master
([#8070](#8070))
([82f3dc7](82f3dc7))
* Merging `TokenWithRefunds` with `Token`
([#8042](#8042))
([8b795eb](8b795eb))
* Modified devnet config
([#8087](#8087))
([854ab45](854ab45))
* Nuking old registry contract
([#8057](#8057))
([3bd08a8](3bd08a8)),
closes
[#7955](#7955)
* Pedersen hash related cleanup in aztec.nr
([#8009](#8009))
([3c4ac65](3c4ac65))
* Portal manager cli
([#8047](#8047))
([618e251](618e251))
* Proper portal setup for fees + test
([#7944](#7944))
([9fec67e](9fec67e))
* Public kernel
([#8061](#8061))
([617a69c](617a69c))
* Refactor ACIR function IDs from raw integers to struct
(noir-lang/noir#5748)
([0379462](0379462))
* Replace relative paths to noir-protocol-circuits
([5ddf0e6](5ddf0e6))
* Replace relative paths to noir-protocol-circuits
([ca77c17](ca77c17))
* Replace relative paths to noir-protocol-circuits
([fe73c93](fe73c93))
* Replace relative paths to noir-protocol-circuits
([576bc2f](576bc2f))
* Replace relative paths to noir-protocol-circuits
([0d05d6b](0d05d6b))
* Simplify sequencer and l1 communication
([#7989](#7989))
([cee4eba](cee4eba))
* Split LSP completion.rs into several files
(noir-lang/noir#5723)
([0379462](0379462))
* Split up stdlib/recursion
([#8054](#8054))
([ec03e40](ec03e40))
* **sync-noir:** Fix modify/delete conflicts automatically
([#8090](#8090))
([a09627c](a09627c))
* Use decider verifier in ultra verifier
([#8115](#8115))
([6c5ab2b](6c5ab2b))


### Documentation

* Fix typo overview.md
([#7908](#7908))
([3749211](3749211))
* Update installation info for bb and noir
([#8119](#8119))
([a744321](a744321))
</details>

<details><summary>barretenberg: 0.50.0</summary>

##
[0.50.0](barretenberg-v0.49.2...barretenberg-v0.50.0)
(2024-08-22)


### Features

* Add a prover-node to the proving e2e tests
([#7952](#7952))
([ec5a5fb](ec5a5fb))
* Automate verify_honk_proof input generation
([#8092](#8092))
([bf38d61](bf38d61))
* **avm:** Enable zeromorph in AVM verification
([#8111](#8111))
([b1f9fb6](b1f9fb6)),
closes
[#4944](#4944)
* Native Merkle Trees
([#7037](#7037))
([8a1032e](8a1032e))
* Oink recursive verifier
([#8121](#8121))
([580708a](580708a))
* Passes copy_cycles by const reference to avoid copying
([#8051](#8051))
([495d363](495d363))
* PG recursive verifier constructors based on stdlib inputs
([#8052](#8052))
([4c568b0](4c568b0))
* Poseidon2 gates for Ultra arithmetisation
([#7494](#7494))
([d86577c](d86577c))
* Some fixes and cleanup in PG recursive verifier
([#8053](#8053))
([5f2a9bd](5f2a9bd))
* Unify all acir recursion constraints based on RecursionConstraint and
proof_type
([#7993](#7993))
([7cb39bc](7cb39bc))
* Zk sumcheck
([#7517](#7517))
([0e9a530](0e9a530))


### Bug Fixes

* **avm:** Real bytes finalization
([#8041](#8041))
([047461a](047461a))
* **ci:** Correctly run bb tests with asserts
([#7607](#7607))
([7b73f69](7b73f69))


### Miscellaneous

* **avm:** Kernel trace and finalization
([#8049](#8049))
([d7edd24](d7edd24))
* **avm:** Separate alu finalization
([#8069](#8069))
([e8a9eb4](e8a9eb4))
* **bb:** IPA parallelization cleanup
([#8088](#8088))
([9227fa9](9227fa9))
* **bb:** Simplify parallel_for_if_effective
([#8079](#8079))
([5bff26b](5bff26b))
* **bb:** Small cleanup in protogalaxy prover
([#8072](#8072))
([4cb5c83](4cb5c83))
* Deduplication in Protogalaxy
([#8067](#8067))
([a5cc3ba](a5cc3ba))
* Handle constant output for ec add opcode
([#8108](#8108))
([2ee79d2](2ee79d2))
* Merge devnet fixes back to master
([#8149](#8149))
([6be2183](6be2183))
* Split up stdlib/recursion
([#8054](#8054))
([ec03e40](ec03e40))
* Use decider verifier in ultra verifier
([#8115](#8115))
([6c5ab2b](6c5ab2b))


### Documentation

* Update installation info for bb and noir
([#8119](#8119))
([a744321](a744321))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Aug 23, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.50.0</summary>

##
[0.50.0](AztecProtocol/aztec-packages@aztec-package-v0.49.2...aztec-package-v0.50.0)
(2024-08-22)


### Features

* Add a prover-node to the proving e2e tests
([#7952](AztecProtocol/aztec-packages#7952))
([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb))
* Add max pending txs to bot
([#8046](AztecProtocol/aztec-packages#8046))
([7f5517e](AztecProtocol/aztec-packages@7f5517e))
* Deterministic deployments for L1
([#8031](AztecProtocol/aztec-packages#8031))
([abc6b19](AztecProtocol/aztec-packages@abc6b19))
* Introduce validator client
([#7854](AztecProtocol/aztec-packages#7854))
([e3be8e6](AztecProtocol/aztec-packages@e3be8e6))
* JSON logging
([#8095](AztecProtocol/aztec-packages#8095))
([048fa12](AztecProtocol/aztec-packages@048fa12))


### Bug Fixes

* Port option & extracting correct namespaced options
([#8097](AztecProtocol/aztec-packages#8097))
([e74c83e](AztecProtocol/aztec-packages@e74c83e))
* Txe port and aztec start options
([#8071](AztecProtocol/aztec-packages#8071))
([23778c5](AztecProtocol/aztec-packages@23778c5))


### Miscellaneous

* Configuration for bot on various networks
([#8063](AztecProtocol/aztec-packages#8063))
([453a096](AztecProtocol/aztec-packages@453a096))
* Merge devnet fixes back to master
([#8149](AztecProtocol/aztec-packages#8149))
([6be2183](AztecProtocol/aztec-packages@6be2183))
* Merge Provernet back to master
([#8070](AztecProtocol/aztec-packages#8070))
([82f3dc7](AztecProtocol/aztec-packages@82f3dc7))
</details>

<details><summary>barretenberg.js: 0.50.0</summary>

##
[0.50.0](AztecProtocol/aztec-packages@barretenberg.js-v0.49.2...barretenberg.js-v0.50.0)
(2024-08-22)


### Miscellaneous

* Merge devnet fixes back to master
([#8149](AztecProtocol/aztec-packages#8149))
([6be2183](AztecProtocol/aztec-packages@6be2183))
</details>

<details><summary>aztec-packages: 0.50.0</summary>

##
[0.50.0](AztecProtocol/aztec-packages@aztec-packages-v0.49.2...aztec-packages-v0.50.0)
(2024-08-22)


### ⚠ BREAKING CHANGES

* replace public key fetching API
([#7996](AztecProtocol/aztec-packages#7996))

### Features

* (LSP) suggest names that match any part of the current prefix
(noir-lang/noir#5752)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_any_integer` and `Expr::as_member_access`
(noir-lang/noir#5742)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_array`, `Expr::as_repeated_element_array` and same for
slice (noir-lang/noir#5750)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_binary_op` (noir-lang/noir#5734)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_bool` (noir-lang/noir#5729)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr::as_unary` (noir-lang/noir#5731)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `Expr` methods: `as_tuple`, `as_parenthesized`, `as_index`,
`as_if` (noir-lang/noir#5726)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `TraitImpl::trait_generic_args` and `TraitImpl::methods`
(noir-lang/noir#5722)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add `unsafe` blocks for calling unconstrained code from constrained
functions (noir-lang/noir#4429)
([0379462](AztecProtocol/aztec-packages@0379462))
* Add a prover-node to the proving e2e tests
([#7952](AztecProtocol/aztec-packages#7952))
([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb))
* Add max pending txs to bot
([#8046](AztecProtocol/aztec-packages#8046))
([7f5517e](AztecProtocol/aztec-packages@7f5517e))
* Add reusable procedures to brillig generation
([#7981](AztecProtocol/aztec-packages#7981))
([99d1131](AztecProtocol/aztec-packages@99d1131))
* Automate verify_honk_proof input generation
([#8092](AztecProtocol/aztec-packages#8092))
([bf38d61](AztecProtocol/aztec-packages@bf38d61))
* **avm:** Enable zeromorph in AVM verification
([#8111](AztecProtocol/aztec-packages#8111))
([b1f9fb6](AztecProtocol/aztec-packages@b1f9fb6)),
closes
[#4944](AztecProtocol/aztec-packages#4944)
* Build for arm
([#7994](AztecProtocol/aztec-packages#7994))
([0dffe1b](AztecProtocol/aztec-packages@0dffe1b))
* Completing MockNote
([#8059](AztecProtocol/aztec-packages#8059))
([05efe23](AztecProtocol/aztec-packages@05efe23)),
closes
[#7636](AztecProtocol/aztec-packages#7636)
* Constant addresses as addresses
([#8056](AztecProtocol/aztec-packages#8056))
([1da5caf](AztecProtocol/aztec-packages@1da5caf))
* Deterministic deployments for L1
([#8031](AztecProtocol/aztec-packages#8031))
([abc6b19](AztecProtocol/aztec-packages@abc6b19))
* **docs:** Cookbook integration
([#8083](AztecProtocol/aztec-packages#8083))
([19bd8a9](AztecProtocol/aztec-packages@19bd8a9))
* Enabling public and private bridging w/ cli
([#8011](AztecProtocol/aztec-packages#8011))
([f0f9c73](AztecProtocol/aztec-packages@f0f9c73))
* Fault-tolerant parsing of `fn` and `impl`
(noir-lang/noir#5753)
([0379462](AztecProtocol/aztec-packages@0379462))
* Flush sequencer
([#8050](AztecProtocol/aztec-packages#8050))
([8821e5f](AztecProtocol/aztec-packages@8821e5f))
* Introduce blob circuit
([#8101](AztecProtocol/aztec-packages#8101))
([4bb3bac](AztecProtocol/aztec-packages@4bb3bac))
* Introduce validator client
([#7854](AztecProtocol/aztec-packages#7854))
([e3be8e6](AztecProtocol/aztec-packages@e3be8e6))
* JSON logging
([#8095](AztecProtocol/aztec-packages#8095))
([048fa12](AztecProtocol/aztec-packages@048fa12))
* LSP auto-import completion
(noir-lang/noir#5741)
([0379462](AztecProtocol/aztec-packages@0379462))
* LSP autocomplete constructor fields
(noir-lang/noir#5732)
([0379462](AztecProtocol/aztec-packages@0379462))
* LSP signature help (noir-lang/noir#5725)
([0379462](AztecProtocol/aztec-packages@0379462))
* Max pending jobs in prover node
([#8045](AztecProtocol/aztec-packages#8045))
([c857604](AztecProtocol/aztec-packages@c857604))
* Move out_hash inside tx_effect_hash
([#7489](AztecProtocol/aztec-packages#7489))
([ff0effe](AztecProtocol/aztec-packages@ff0effe))
* Native Merkle Trees
([#7037](AztecProtocol/aztec-packages#7037))
([8a1032e](AztecProtocol/aztec-packages@8a1032e))
* Oink recursive verifier
([#8121](AztecProtocol/aztec-packages#8121))
([580708a](AztecProtocol/aztec-packages@580708a))
* **optimization:** Follow past `array_set`s when optimizing
`array_get`s (noir-lang/noir#5772)
([0379462](AztecProtocol/aztec-packages@0379462))
* Passes copy_cycles by const reference to avoid copying
([#8051](AztecProtocol/aztec-packages#8051))
([495d363](AztecProtocol/aztec-packages@495d363))
* **perf:** Mem2reg function state for value loads to optimize across
blocks (noir-lang/noir#5757)
([0379462](AztecProtocol/aztec-packages@0379462))
* PG recursive verifier constructors based on stdlib inputs
([#8052](AztecProtocol/aztec-packages#8052))
([4c568b0](AztecProtocol/aztec-packages@4c568b0))
* Poseidon2 gates for Ultra arithmetisation
([#7494](AztecProtocol/aztec-packages#7494))
([d86577c](AztecProtocol/aztec-packages@d86577c))
* Prover node metrics
([#8086](AztecProtocol/aztec-packages#8086))
([ab018ff](AztecProtocol/aztec-packages@ab018ff))
* Removed socat, fixed aztec-run
([#8145](AztecProtocol/aztec-packages#8145))
([ff94aa2](AztecProtocol/aztec-packages@ff94aa2))
* Removing redundant key fetching
([#8043](AztecProtocol/aztec-packages#8043))
([2bbcc7b](AztecProtocol/aztec-packages@2bbcc7b))
* Replace public key fetching API
([#7996](AztecProtocol/aztec-packages#7996))
([73d6aa9](AztecProtocol/aztec-packages@73d6aa9))
* Small optimization in toradix
([#8040](AztecProtocol/aztec-packages#8040))
([0dc7a50](AztecProtocol/aztec-packages@0dc7a50))
* Some fixes and cleanup in PG recursive verifier
([#8053](AztecProtocol/aztec-packages#8053))
([5f2a9bd](AztecProtocol/aztec-packages@5f2a9bd))
* Suggest trait methods in LSP completion
(noir-lang/noir#5735)
([0379462](AztecProtocol/aztec-packages@0379462))
* Suggest tuple fields in LSP completion
(noir-lang/noir#5730)
([0379462](AztecProtocol/aztec-packages@0379462))
* Track world state metrics
([#8109](AztecProtocol/aztec-packages#8109))
([ca58d94](AztecProtocol/aztec-packages@ca58d94))
* Typing specific pub keys
([#8099](AztecProtocol/aztec-packages#8099))
([638793a](AztecProtocol/aztec-packages@638793a))
* Unify all acir recursion constraints based on RecursionConstraint and
proof_type
([#7993](AztecProtocol/aztec-packages#7993))
([7cb39bc](AztecProtocol/aztec-packages@7cb39bc))
* User `super::` in LSP autocompletion if possible
(noir-lang/noir#5751)
([0379462](AztecProtocol/aztec-packages@0379462))
* Various token note improvements
([#8062](AztecProtocol/aztec-packages#8062))
([8f9dfd9](AztecProtocol/aztec-packages@8f9dfd9))
* Zk sumcheck
([#7517](AztecProtocol/aztec-packages#7517))
([0e9a530](AztecProtocol/aztec-packages@0e9a530))


### Bug Fixes

* (LSP) only add cached files relevant to workspace
(noir-lang/noir#5775)
([2d70215](AztecProtocol/aztec-packages@2d70215))
* Add DEBUG and LOG_LEVEL to valid env vars
([#8094](AztecProtocol/aztec-packages#8094))
([70e61f9](AztecProtocol/aztec-packages@70e61f9))
* Add link to l1-artifacts
([#7940](AztecProtocol/aztec-packages#7940))
([dcfd120](AztecProtocol/aztec-packages@dcfd120))
* Add missing trait impls for integer types to stdlib
(noir-lang/noir#5738)
([0379462](AztecProtocol/aztec-packages@0379462))
* Allow comptime code to use break without also being `unconstrained`
(noir-lang/noir#5744)
([0379462](AztecProtocol/aztec-packages@0379462))
* **avm:** Real bytes finalization
([#8041](AztecProtocol/aztec-packages#8041))
([047461a](AztecProtocol/aztec-packages@047461a))
* **ci:** Correctly run bb tests with asserts
([#7607](AztecProtocol/aztec-packages#7607))
([7b73f69](AztecProtocol/aztec-packages@7b73f69))
* Correctly constrain get header at
([#7893](AztecProtocol/aztec-packages#7893))
([2ebba0d](AztecProtocol/aztec-packages@2ebba0d))
* Deploy L1 rollup contract using salt if provided
([#8074](AztecProtocol/aztec-packages#8074))
([1e8eddf](AztecProtocol/aztec-packages@1e8eddf))
* Flaky e2e_prover_node test
([#8116](AztecProtocol/aztec-packages#8116))
([9d97bd4](AztecProtocol/aztec-packages@9d97bd4))
* **frontend:** Continue type check if we are missing an unsafe block
(noir-lang/noir#5720)
([0379462](AztecProtocol/aztec-packages@0379462))
* Let LSP autocompletion work in more contexts
(noir-lang/noir#5719)
([0379462](AztecProtocol/aztec-packages@0379462))
* Port option & extracting correct namespaced options
([#8097](AztecProtocol/aztec-packages#8097))
([e74c83e](AztecProtocol/aztec-packages@e74c83e))
* Set prover node max pending jobs in tests
([#8055](AztecProtocol/aztec-packages#8055))
([403c26f](AztecProtocol/aztec-packages@403c26f))
* Stop WorldStrateSynchronizer in prover node
([#8126](AztecProtocol/aztec-packages#8126))
([f724b07](AztecProtocol/aztec-packages@f724b07))
* Txe port and aztec start options
([#8071](AztecProtocol/aztec-packages#8071))
([23778c5](AztecProtocol/aztec-packages@23778c5))
* Unconstrained fn mismatch is now a warning
(noir-lang/noir#5764)
([0379462](AztecProtocol/aztec-packages@0379462))
* Wallet fixes for devnet, testing and misc
([#8058](AztecProtocol/aztec-packages#8058))
([15f3e8c](AztecProtocol/aztec-packages@15f3e8c))


### Miscellaneous

* Add Brillig loop bytecode size regression and update noir-gates-diff
report (noir-lang/noir#5747)
([0379462](AztecProtocol/aztec-packages@0379462))
* Apply some new lints across workspace
(noir-lang/noir#5736)
([0379462](AztecProtocol/aztec-packages@0379462))
* **avm:** Kernel trace and finalization
([#8049](AztecProtocol/aztec-packages#8049))
([d7edd24](AztecProtocol/aztec-packages@d7edd24))
* **avm:** Separate alu finalization
([#8069](AztecProtocol/aztec-packages#8069))
([e8a9eb4](AztecProtocol/aztec-packages@e8a9eb4))
* **bb:** IPA parallelization cleanup
([#8088](AztecProtocol/aztec-packages#8088))
([9227fa9](AztecProtocol/aztec-packages@9227fa9))
* **bb:** Simplify parallel_for_if_effective
([#8079](AztecProtocol/aztec-packages#8079))
([5bff26b](AztecProtocol/aztec-packages@5bff26b))
* **bb:** Small cleanup in protogalaxy prover
([#8072](AztecProtocol/aztec-packages#8072))
([4cb5c83](AztecProtocol/aztec-packages@4cb5c83))
* **ci:** Only show last 50 master cpp benches
([#8075](AztecProtocol/aztec-packages#8075))
([96f35bc](AztecProtocol/aztec-packages@96f35bc))
* Clarify Field use (noir-lang/noir#5740)
([0379462](AztecProtocol/aztec-packages@0379462))
* CLI command to set latest block as proven
([#7987](AztecProtocol/aztec-packages#7987))
([80eaf1d](AztecProtocol/aztec-packages@80eaf1d))
* Configuration for bot on various networks
([#8063](AztecProtocol/aztec-packages#8063))
([453a096](AztecProtocol/aztec-packages@453a096))
* Count brillig opcodes in nargo info
(noir-lang/noir#5189)
([0379462](AztecProtocol/aztec-packages@0379462))
* Deduplication in Protogalaxy
([#8067](AztecProtocol/aztec-packages#8067))
([a5cc3ba](AztecProtocol/aztec-packages@a5cc3ba))
* **docs:** Expanding solidity verifier chain list
(noir-lang/noir#5587)
([0379462](AztecProtocol/aztec-packages@0379462))
* Dont trail whitespace in vscode
([#5661](AztecProtocol/aztec-packages#5661))
([7595d91](AztecProtocol/aztec-packages@7595d91))
* Handle constant output for ec add opcode
([#8108](AztecProtocol/aztec-packages#8108))
([2ee79d2](AztecProtocol/aztec-packages@2ee79d2))
* Make spans non-optional on `UnresolvedType`
(noir-lang/noir#5773)
([2d70215](AztecProtocol/aztec-packages@2d70215))
* Merge devnet fixes back to master
([#8149](AztecProtocol/aztec-packages#8149))
([6be2183](AztecProtocol/aztec-packages@6be2183))
* Merge devnet to master
([#8044](AztecProtocol/aztec-packages#8044))
([f84950f](AztecProtocol/aztec-packages@f84950f))
* Merge Provernet back to master
([#8070](AztecProtocol/aztec-packages#8070))
([82f3dc7](AztecProtocol/aztec-packages@82f3dc7))
* Merging `TokenWithRefunds` with `Token`
([#8042](AztecProtocol/aztec-packages#8042))
([8b795eb](AztecProtocol/aztec-packages@8b795eb))
* Modified devnet config
([#8087](AztecProtocol/aztec-packages#8087))
([854ab45](AztecProtocol/aztec-packages@854ab45))
* Nuking old registry contract
([#8057](AztecProtocol/aztec-packages#8057))
([3bd08a8](AztecProtocol/aztec-packages@3bd08a8)),
closes
[#7955](AztecProtocol/aztec-packages#7955)
* Pedersen hash related cleanup in aztec.nr
([#8009](AztecProtocol/aztec-packages#8009))
([3c4ac65](AztecProtocol/aztec-packages@3c4ac65))
* Portal manager cli
([#8047](AztecProtocol/aztec-packages#8047))
([618e251](AztecProtocol/aztec-packages@618e251))
* Proper portal setup for fees + test
([#7944](AztecProtocol/aztec-packages#7944))
([9fec67e](AztecProtocol/aztec-packages@9fec67e))
* Public kernel
([#8061](AztecProtocol/aztec-packages#8061))
([617a69c](AztecProtocol/aztec-packages@617a69c))
* Refactor ACIR function IDs from raw integers to struct
(noir-lang/noir#5748)
([0379462](AztecProtocol/aztec-packages@0379462))
* Replace relative paths to noir-protocol-circuits
([5ddf0e6](AztecProtocol/aztec-packages@5ddf0e6))
* Replace relative paths to noir-protocol-circuits
([ca77c17](AztecProtocol/aztec-packages@ca77c17))
* Replace relative paths to noir-protocol-circuits
([fe73c93](AztecProtocol/aztec-packages@fe73c93))
* Replace relative paths to noir-protocol-circuits
([576bc2f](AztecProtocol/aztec-packages@576bc2f))
* Replace relative paths to noir-protocol-circuits
([0d05d6b](AztecProtocol/aztec-packages@0d05d6b))
* Simplify sequencer and l1 communication
([#7989](AztecProtocol/aztec-packages#7989))
([cee4eba](AztecProtocol/aztec-packages@cee4eba))
* Split LSP completion.rs into several files
(noir-lang/noir#5723)
([0379462](AztecProtocol/aztec-packages@0379462))
* Split up stdlib/recursion
([#8054](AztecProtocol/aztec-packages#8054))
([ec03e40](AztecProtocol/aztec-packages@ec03e40))
* **sync-noir:** Fix modify/delete conflicts automatically
([#8090](AztecProtocol/aztec-packages#8090))
([a09627c](AztecProtocol/aztec-packages@a09627c))
* Use decider verifier in ultra verifier
([#8115](AztecProtocol/aztec-packages#8115))
([6c5ab2b](AztecProtocol/aztec-packages@6c5ab2b))


### Documentation

* Fix typo overview.md
([#7908](AztecProtocol/aztec-packages#7908))
([3749211](AztecProtocol/aztec-packages@3749211))
* Update installation info for bb and noir
([#8119](AztecProtocol/aztec-packages#8119))
([a744321](AztecProtocol/aztec-packages@a744321))
</details>

<details><summary>barretenberg: 0.50.0</summary>

##
[0.50.0](AztecProtocol/aztec-packages@barretenberg-v0.49.2...barretenberg-v0.50.0)
(2024-08-22)


### Features

* Add a prover-node to the proving e2e tests
([#7952](AztecProtocol/aztec-packages#7952))
([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb))
* Automate verify_honk_proof input generation
([#8092](AztecProtocol/aztec-packages#8092))
([bf38d61](AztecProtocol/aztec-packages@bf38d61))
* **avm:** Enable zeromorph in AVM verification
([#8111](AztecProtocol/aztec-packages#8111))
([b1f9fb6](AztecProtocol/aztec-packages@b1f9fb6)),
closes
[#4944](AztecProtocol/aztec-packages#4944)
* Native Merkle Trees
([#7037](AztecProtocol/aztec-packages#7037))
([8a1032e](AztecProtocol/aztec-packages@8a1032e))
* Oink recursive verifier
([#8121](AztecProtocol/aztec-packages#8121))
([580708a](AztecProtocol/aztec-packages@580708a))
* Passes copy_cycles by const reference to avoid copying
([#8051](AztecProtocol/aztec-packages#8051))
([495d363](AztecProtocol/aztec-packages@495d363))
* PG recursive verifier constructors based on stdlib inputs
([#8052](AztecProtocol/aztec-packages#8052))
([4c568b0](AztecProtocol/aztec-packages@4c568b0))
* Poseidon2 gates for Ultra arithmetisation
([#7494](AztecProtocol/aztec-packages#7494))
([d86577c](AztecProtocol/aztec-packages@d86577c))
* Some fixes and cleanup in PG recursive verifier
([#8053](AztecProtocol/aztec-packages#8053))
([5f2a9bd](AztecProtocol/aztec-packages@5f2a9bd))
* Unify all acir recursion constraints based on RecursionConstraint and
proof_type
([#7993](AztecProtocol/aztec-packages#7993))
([7cb39bc](AztecProtocol/aztec-packages@7cb39bc))
* Zk sumcheck
([#7517](AztecProtocol/aztec-packages#7517))
([0e9a530](AztecProtocol/aztec-packages@0e9a530))


### Bug Fixes

* **avm:** Real bytes finalization
([#8041](AztecProtocol/aztec-packages#8041))
([047461a](AztecProtocol/aztec-packages@047461a))
* **ci:** Correctly run bb tests with asserts
([#7607](AztecProtocol/aztec-packages#7607))
([7b73f69](AztecProtocol/aztec-packages@7b73f69))


### Miscellaneous

* **avm:** Kernel trace and finalization
([#8049](AztecProtocol/aztec-packages#8049))
([d7edd24](AztecProtocol/aztec-packages@d7edd24))
* **avm:** Separate alu finalization
([#8069](AztecProtocol/aztec-packages#8069))
([e8a9eb4](AztecProtocol/aztec-packages@e8a9eb4))
* **bb:** IPA parallelization cleanup
([#8088](AztecProtocol/aztec-packages#8088))
([9227fa9](AztecProtocol/aztec-packages@9227fa9))
* **bb:** Simplify parallel_for_if_effective
([#8079](AztecProtocol/aztec-packages#8079))
([5bff26b](AztecProtocol/aztec-packages@5bff26b))
* **bb:** Small cleanup in protogalaxy prover
([#8072](AztecProtocol/aztec-packages#8072))
([4cb5c83](AztecProtocol/aztec-packages@4cb5c83))
* Deduplication in Protogalaxy
([#8067](AztecProtocol/aztec-packages#8067))
([a5cc3ba](AztecProtocol/aztec-packages@a5cc3ba))
* Handle constant output for ec add opcode
([#8108](AztecProtocol/aztec-packages#8108))
([2ee79d2](AztecProtocol/aztec-packages@2ee79d2))
* Merge devnet fixes back to master
([#8149](AztecProtocol/aztec-packages#8149))
([6be2183](AztecProtocol/aztec-packages@6be2183))
* Split up stdlib/recursion
([#8054](AztecProtocol/aztec-packages#8054))
([ec03e40](AztecProtocol/aztec-packages@ec03e40))
* Use decider verifier in ultra verifier
([#8115](AztecProtocol/aztec-packages#8115))
([6c5ab2b](AztecProtocol/aztec-packages@6c5ab2b))


### Documentation

* Update installation info for bb and noir
([#8119](AztecProtocol/aztec-packages#8119))
([a744321](AztecProtocol/aztec-packages@a744321))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
PhilWindle added a commit that referenced this pull request Sep 11, 2024
This PR adds a new CPP module for managing the merkle trees that make up
the world state. A new implementetion of `MerkleTreeDb` is provided to
interact with the native code.

msgpack is used to pass messages across the js<->cpp boundary. Tests
have been added to assert that the two world state implementations work
in the same way (more tests would be better).

This PR builds on top of #7037.

PS: I'm not as experienced with C++

---------

Co-authored-by: PhilWindle <philip.windle@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants