chore(master): Release 0.50.0
:robot: I have created a release beep boop
aztec-package: 0.50.0
0.50.0 (2024-08-21)
Features
- Add a prover-node to the proving e2e tests (#7952) (ec5a5fb)
- Add max pending txs to bot (#8046) (7f5517e)
- Deterministic deployments for L1 (#8031) (abc6b19)
- Introduce validator client (#7854) (e3be8e6)
Bug Fixes
Miscellaneous
barretenberg.js: 0.50.0
0.50.0 (2024-08-21)
Miscellaneous
- barretenberg.js: Synchronize aztec-packages versions
aztec-packages: 0.50.0
0.50.0 (2024-08-21)
⚠ BREAKING CHANGES
- replace public key fetching API (#7996)
Features
- (LSP) suggest names that match any part of the current prefix (https://github.com/noir-lang/noir/pull/5752) (0379462)
- Add
Expr::as_any_integerandExpr::as_member_access(https://github.com/noir-lang/noir/pull/5742) (0379462) - Add
Expr::as_array,Expr::as_repeated_element_arrayand same for slice (https://github.com/noir-lang/noir/pull/5750) (0379462) - Add
Expr::as_binary_op(https://github.com/noir-lang/noir/pull/5734) (0379462) - Add
Expr::as_bool(https://github.com/noir-lang/noir/pull/5729) (0379462) - Add
Expr::as_unary(https://github.com/noir-lang/noir/pull/5731) (0379462) - Add
Exprmethods:as_tuple,as_parenthesized,as_index,as_if(https://github.com/noir-lang/noir/pull/5726) (0379462) - Add
TraitImpl::trait_generic_argsandTraitImpl::methods(https://github.com/noir-lang/noir/pull/5722) (0379462) - Add
unsafeblocks for calling unconstrained code from constrained functions (https://github.com/noir-lang/noir/pull/4429) (0379462) - Add a prover-node to the proving e2e tests (#7952) (ec5a5fb)
- Add max pending txs to bot (#8046) (7f5517e)
- Add reusable procedures to brillig generation (#7981) (99d1131)
- Completing MockNote (#8059) (05efe23), closes #7636
- Constant addresses as addresses (#8056) (1da5caf)
- Deterministic deployments for L1 (#8031) (abc6b19)
- docs: Cookbook integration (#8083) (19bd8a9)
- Enabling public and private bridging w/ cli (#8011) (f0f9c73)
- Fault-tolerant parsing of
fnandimpl(https://github.com/noir-lang/noir/pull/5753) (0379462) - Flush sequencer (#8050) (8821e5f)
- Introduce validator client (#7854) (e3be8e6)
- LSP auto-import completion (https://github.com/noir-lang/noir/pull/5741) (0379462)
- LSP autocomplete constructor fields (https://github.com/noir-lang/noir/pull/5732) (0379462)
- LSP signature help (https://github.com/noir-lang/noir/pull/5725) (0379462)
- Max pending jobs in prover node (#8045) (c857604)
- Move out_hash inside tx_effect_hash (#7489) (ff0effe)
- optimization: Follow past
array_sets when optimizingarray_gets (https://github.com/noir-lang/noir/pull/5772) (0379462) - Passes copy_cycles by const reference to avoid copying (#8051) (495d363)
- perf: Mem2reg function state for value loads to optimize across blocks (https://github.com/noir-lang/noir/pull/5757) (0379462)
- PG recursive verifier constructors based on stdlib inputs (#8052) (4c568b0)
- Removing redundant key fetching (#8043) (2bbcc7b)
- Replace public key fetching API (#7996) (73d6aa9)
- Small optimization in toradix (#8040) (0dc7a50)
- Some fixes and cleanup in PG recursive verifier (#8053) (5f2a9bd)
- Suggest trait methods in LSP completion (https://github.com/noir-lang/noir/pull/5735) (0379462)
- Suggest tuple fields in LSP completion (https://github.com/noir-lang/noir/pull/5730) (0379462)
- Unify all acir recursion constraints based on RecursionConstraint and proof_type (#7993) (7cb39bc)
- User
super::in LSP autocompletion if possible (https://github.com/noir-lang/noir/pull/5751) (0379462) - Various token note improvements (#8062) (8f9dfd9)
- Zk sumcheck (#7517) (0e9a530)
Bug Fixes
- Add missing trait impls for integer types to stdlib (https://github.com/noir-lang/noir/pull/5738) (0379462)
- Allow comptime code to use break without also being
unconstrained(https://github.com/noir-lang/noir/pull/5744) (0379462) - avm: Real bytes finalization (#8041) (047461a)
- Correctly constrain get header at (#7893) (2ebba0d)
- Deploy L1 rollup contract using salt if provided (#8074) (1e8eddf)
- frontend: Continue type check if we are missing an unsafe block (https://github.com/noir-lang/noir/pull/5720) (0379462)
- Let LSP autocompletion work in more contexts (https://github.com/noir-lang/noir/pull/5719) (0379462)
- Set prover node max pending jobs in tests (#8055) (403c26f)
- Txe port and aztec start options (#8071) (23778c5)
- Unconstrained fn mismatch is now a warning (https://github.com/noir-lang/noir/pull/5764) (0379462)
Miscellaneous
- Add Brillig loop bytecode size regression and update noir-gates-diff report (https://github.com/noir-lang/noir/pull/5747) (0379462)
- Apply some new lints across workspace (https://github.com/noir-lang/noir/pull/5736) (0379462)
- avm: Kernel trace and finalization (#8049) (d7edd24)
- bb: IPA parallelization cleanup (#8088) (9227fa9)
- bb: Simplify parallel_for_if_effective (#8079) (5bff26b)
- bb: Small cleanup in protogalaxy prover (#8072) (4cb5c83)
- ci: Only show last 50 master cpp benches (#8075) (96f35bc)
- Clarify Field use (https://github.com/noir-lang/noir/pull/5740) (0379462)
- CLI command to set latest block as proven (#7987) (80eaf1d)
- Configuration for bot on various networks (#8063) (453a096)
- Count brillig opcodes in nargo info (https://github.com/noir-lang/noir/pull/5189) (0379462)
- docs: Expanding solidity verifier chain list (https://github.com/noir-lang/noir/pull/5587) (0379462)
- Dont trail whitespace in vscode (#5661) (7595d91)
- Merge devnet to master (#8044) (f84950f)
- Merge Provernet back to master (#8070) (82f3dc7)
- Merging
TokenWithRefundswithToken(#8042) (8b795eb) - Modified devnet config (#8087) (854ab45)
- Nuking old registry contract (#8057) (3bd08a8), closes #7955
- Pedersen hash related cleanup in aztec.nr (#8009) (3c4ac65)
- Portal manager cli (#8047) (618e251)
- Proper portal setup for fees + test (#7944) (9fec67e)
- Public kernel (#8061) (617a69c)
- Refactor ACIR function IDs from raw integers to struct (https://github.com/noir-lang/noir/pull/5748) (0379462)
- Replace relative paths to noir-protocol-circuits (ca77c17)
- Replace relative paths to noir-protocol-circuits (fe73c93)
- Replace relative paths to noir-protocol-circuits (576bc2f)
- Replace relative paths to noir-protocol-circuits (0d05d6b)
- Simplify sequencer and l1 communication (#7989) (cee4eba)
- Split LSP completion.rs into several files (https://github.com/noir-lang/noir/pull/5723) (0379462)
- Split up stdlib/recursion (#8054) (ec03e40)
- sync-noir: Fix modify/delete conflicts automatically (#8090) (a09627c)
barretenberg: 0.50.0
0.50.0 (2024-08-21)
Features
- Add a prover-node to the proving e2e tests (#7952) (ec5a5fb)
- Passes copy_cycles by const reference to avoid copying (#8051) (495d363)
- PG recursive verifier constructors based on stdlib inputs (#8052) (4c568b0)
- Some fixes and cleanup in PG recursive verifier (#8053) (5f2a9bd)
- Unify all acir recursion constraints based on RecursionConstraint and proof_type (#7993) (7cb39bc)
- Zk sumcheck (#7517) (0e9a530)
Bug Fixes
Miscellaneous
This PR was generated with Release Please. See documentation.
Benchmark results
Metrics with a significant change:
- proof_construction_time_sha256_30_ms (16): 1,747 (+24%)
- avm_simulation_time_ms (Token:mint_public): 44.8 (-39%)
- avm_simulation_time_ms (Token:assert_minter_and_mint): 65.5 (+48%)
- avm_simulation_time_ms (FPC:pay_refund): 54.9 (-34%)
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,762 | 1,568 | 720 (+1%) | 734 (-4%) | 774 |
| proof_construction_time_sha256_30_ms | 11,588 (-1%) | 3,117 (-1%) | :warning: 1,747 (+24%) | 1,568 (+10%) | 1,540 (+5%) |
| proof_construction_time_sha256_100_ms | 44,267 (-1%) | 11,900 (-2%) | 5,456 (-4%) | 5,633 | 5,926 (+1%) |
| proof_construction_time_poseidon_hash_ms | 79.0 | 34.0 | 34.0 | 57.0 (-2%) | 88.0 |
| proof_construction_time_poseidon_hash_30_ms | 1,533 | 425 | 203 | 235 (+5%) | 266 (-4%) |
| proof_construction_time_poseidon_hash_100_ms | 5,659 | 1,519 | 674 | 750 (+2%) | 742 (-1%) |
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,696 | 92,464 | 177,608 |
| l1_rollup_execution_gas | 1,373,724 | 2,107,388 | 3,892,588 |
| l2_block_processing_time_in_ms | 252 (-1%) | 445 (-2%) | 800 |
| l2_block_building_time_in_ms | 8,977 (+1%) | 17,550 (+1%) | 34,843 |
| l2_block_rollup_simulation_time_in_ms | 8,977 (+1%) | 17,550 (+1%) | 34,843 |
| l2_block_public_tx_process_time_in_ms | 7,572 (+1%) | 16,021 (+1%) | 33,303 |
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,940 (-2%) | 3,795 (-1%) |
| node_database_size_in_bytes | 12,664,912 | 16,719,952 |
| 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 | 88.3 | 397 | 21,755 | 44,860 | N/A |
| private-kernel-inner | 166 (-1%) | 706 | 72,566 | 45,007 | N/A |
| private-kernel-reset-tiny | 458 | 865 (-1%) | 65,675 | 44,846 | N/A |
| private-kernel-tail | 196 (+1%) | 156 (-2%) | 50,686 | 52,257 | N/A |
| base-parity | 5.64 | N/A | 160 | 96.0 | N/A |
| root-parity | 35.4 (-2%) | N/A | 73,948 | 96.0 | N/A |
| base-rollup | 2,754 | N/A | 189,136 | 664 | N/A |
| root-rollup | 40.5 (-1%) | N/A | 58,173 | 716 | N/A |
| public-kernel-setup | 84.8 (-2%) | N/A | 105,085 | 71,222 | N/A |
| public-kernel-app-logic | 95.5 | N/A | 104,911 | 71,222 | N/A |
| public-kernel-tail | 556 (+1%) | N/A | 410,534 | 16,414 | N/A |
| private-kernel-reset-small | 462 (+1%) | N/A | 66,341 | 45,629 | N/A |
| private-kernel-tail-to-public | 1,379 | 647 (-1%) | 460,796 | 1,825 | N/A |
| public-kernel-teardown | 83.6 | N/A | 105,349 | 71,222 | N/A |
| merge-rollup | 20.6 (+2%) | N/A | 38,174 | 664 | N/A |
| undefined | N/A | N/A | N/A | N/A | 78,213 (-1%) |
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 | 343 |
| ContractInstanceDeployer:deploy | 1,408 | 11,731 | 18.4 |
| MultiCallEntrypoint:entrypoint | 1,920 | 11,731 | 407 |
| FeeJuice:deploy | 1,376 | 11,731 | 394 |
| SchnorrAccount:constructor | 1,312 | 11,731 | 75.3 |
| SchnorrAccount:entrypoint | 2,304 | 11,731 | 413 |
| Token:privately_mint_private_note | 1,280 | 11,731 | 103 (-2%) |
| FPC:fee_entrypoint_public | 1,344 | 11,731 | 29.2 |
| Token:transfer | 1,312 | 11,731 | 231 (-1%) |
| Benchmarking:create_note | 1,344 | 11,731 | 86.6 (-1%) |
| SchnorrAccount:verify_private_authwit | 1,280 | 11,731 | 27.6 |
| Token:unshield | 1,376 | 11,731 | 529 (+1%) |
| FPC:fee_entrypoint_private | 1,376 | 11,731 | 704 |
AVM Simulation
Time to simulate various public functions in the AVM.
| Function | time_ms | bytecode_size_in_bytes |
|---|---|---|
| FeeJuice:_increase_public_balance | 55.2 (-12%) | 7,739 |
| FeeJuice:set_portal | 12.3 (+3%) | 2,354 |
| Token:constructor | 79.4 (-1%) | 26,051 |
| FPC:constructor | 52.3 (-7%) | 18,001 |
| FeeJuice:mint_public | 39.7 (-2%) | 5,877 |
| Token:mint_public | :warning: 44.8 (-39%) | 10,917 |
| Token:assert_minter_and_mint | :warning: 65.5 (+48%) | 7,512 |
| AuthRegistry:set_authorized | 37.1 (-20%) | 4,391 |
| FPC:prepare_fee | 227 (-8%) | 7,043 |
| Token:transfer_public | 23.7 (+24%) | 39,426 |
| FPC:pay_refund | :warning: 54.9 (-34%) | 10,234 |
| Benchmarking:increment_balance | 935 (+1%) | 6,563 |
| Token:_increase_public_balance | 40.1 (-1%) | 8,433 |
| FPC:pay_refund_with_shielded_rebate | 63.1 (-1%) | 10,783 |
Public DB Access
Time to access various public DBs.
| Function | time_ms |
|---|---|
| get-nullifier-index | 0.155 (-1%) |
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.22 (-2%) | 4.00 (+1%) | 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 (-3%) | 0.114 (+1%) | 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 (+1%) | 17.8 | 31.2 (+3%) | 58.7 (-2%) | 114 |
| 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.112 (+1%) | 0.103 | 0.102 (+3%) | 0.102 (-1%) | 0.102 (+1%) |
| batch_insert_into_indexed_tree_20_depth_ms | N/A | N/A | 14.6 (+1%) | 25.7 | 44.4 (+4%) | 82.4 (-2%) | 163 (+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.112 (+1%) | 0.104 | 0.107 (+4%) | 0.103 (-2%) | 0.104 (+4%) |
| batch_insert_into_indexed_tree_40_depth_ms | N/A | N/A | 16.5 | 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.106 | 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 | | | - | |
:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/aztec-packages-v0.50.0 :sunflower:
:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/aztec-package-v0.50.0 :sunflower:
:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/barretenberg.js-v0.50.0 :sunflower:
:robot: Release is at https://github.com/AztecProtocol/aztec-packages/releases/tag/barretenberg-v0.50.0 :sunflower: