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: IPA documentation #4924

Merged
merged 16 commits into from
Mar 7, 2024
Merged

feat: IPA documentation #4924

merged 16 commits into from
Mar 7, 2024

Conversation

Rumata888
Copy link
Contributor

@Rumata888 Rumata888 commented Mar 4, 2024

The main goal of this PR is to add documentation to the IPA that can be viewed in doxygen. However, it also coincides with a slight refactor of the class:

  1. Using a mutex for multithreading instead of a vector of values
  2. Fixing the ipa benchmark

It also updates the doxygen file and adds a command "build_docs" to cmake for convenience

@AztecBot
Copy link
Collaborator

AztecBot commented Mar 5, 2024

Benchmark results

Metrics with a significant change:

  • note_history_successful_decrypting_time_in_ms (10): 4,079 (+77%)
  • note_history_trial_decrypting_time_in_ms (5): 265 (+343%)
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.

Values are compared against data from master at commit f74e6a1f and shown if the difference exceeds 1%.

L2 block published to L1

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

Metric 8 txs 32 txs 64 txs
l1_rollup_calldata_size_in_bytes 5,700 18,884 36,452
l1_rollup_calldata_gas 66,036 239,036 469,028
l1_rollup_execution_gas 193,984 500,342 908,286
l2_block_processing_time_in_ms 1,183 4,469 (+1%) 8,734 (-1%)
note_successful_decrypting_time_in_ms 203 (+2%) 537 976 (-1%)
note_trial_decrypting_time_in_ms 9.00 (+12%) 62.3 (+9%) 112 (-9%)
l2_block_building_time_in_ms 16,627 (+3%) 63,729 (-1%) 127,309
l2_block_rollup_simulation_time_in_ms 12,625 (+3%) 48,584 96,938 (-1%)
l2_block_public_tx_process_time_in_ms 3,973 (+4%) 15,075 (-4%) 30,246

L2 chain processing

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

Metric 5 blocks 10 blocks
node_history_sync_time_in_ms 14,335 (+4%) 28,717 (+9%)
note_history_successful_decrypting_time_in_ms 1,219 (+1%) ⚠️ 4,079 (+77%)
note_history_trial_decrypting_time_in_ms ⚠️ 265 (+343%) 145 (+42%)
node_database_size_in_bytes 18,767,952 35,545,168
pxe_database_size_in_bytes 29,923 59,478

Circuits stats

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

Circuit circuit_simulation_time_in_ms circuit_input_size_in_bytes circuit_output_size_in_bytes
private-kernel-init 265 (+8%) 44,736 28,001
private-kernel-ordering 205 (+9%) 52,625 14,627
base-rollup 1,438 (+13%) 177,932 933
root-rollup 70.9 (+3%) 4,192 825
private-kernel-inner 340 (+9%) 73,715 28,001
public-kernel-app-logic 203 (+6%) 32,254 25,379
merge-rollup 5.80 (+4%) 2,712 933

Tree insertion stats

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

Metric 1 leaves 2 leaves 8 leaves 16 leaves 32 leaves 64 leaves 128 leaves 512 leaves 1024 leaves 2048 leaves 4096 leaves
batch_insert_into_append_only_tree_16_depth_ms 10.4 (+8%) 10.9 (+7%) 12.4 (-11%) 16.7 (+6%) 22.4 (+2%) 35.0 (-1%) N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_count 16.9 17.5 23.0 31.6 47.0 79.0 N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_ms 0.603 (+8%) 0.605 (+6%) 0.525 (-11%) 0.514 (+6%) 0.467 (+2%) 0.437 (-1%) N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_32_depth_ms N/A N/A N/A N/A N/A 49.0 (+10%) 72.3 (+2%) 230 475 (+11%) 864 1,686 (-2%)
batch_insert_into_append_only_tree_32_depth_hash_count N/A N/A N/A N/A N/A 96.0 159 543 1,055 2,079 4,127
batch_insert_into_append_only_tree_32_depth_hash_ms N/A N/A N/A N/A N/A 0.503 (+10%) 0.446 (+2%) 0.419 0.445 (+11%) 0.411 0.405 (-2%)
batch_insert_into_indexed_tree_20_depth_ms N/A N/A N/A N/A N/A 58.2 (+11%) 107 (+2%) 335 (-1%) 715 (+13%) 1,303 2,572 (-1%)
batch_insert_into_indexed_tree_20_depth_hash_count N/A N/A N/A N/A N/A 104 207 691 1,363 2,707 5,395
batch_insert_into_indexed_tree_20_depth_hash_ms N/A N/A N/A N/A N/A 0.519 (+11%) 0.482 (+2%) 0.456 0.493 (+13%) 0.453 0.447 (-1%)
batch_insert_into_indexed_tree_40_depth_ms N/A N/A N/A N/A 63.7 (+6%) N/A N/A N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_count N/A N/A N/A N/A 109 N/A N/A N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_ms N/A N/A N/A N/A 0.558 (+6%) N/A N/A N/A N/A N/A N/A

Miscellaneous

Transaction sizes based on how many contracts are deployed in the tx.

Metric 0 deployed contracts
tx_size_in_bytes 19,179

Transaction processing duration by data writes.

Metric 0 new note hashes 1 new note hashes
tx_pxe_processing_time_ms 2,630 (+2%) 1,451 (+8%)
Metric 0 public data writes 1 public data writes
tx_sequencer_processing_time_ms 0.0297 496 (+6%)

# Add doxygen build command
find_package(Doxygen)
if (DOXYGEN_FOUND)
add_custom_target(build_docs
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This adds a command, so that it's easier to rebuild docs

Copy link
Contributor

Choose a reason for hiding this comment

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

could you clarify more on how to use it?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

image

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added information to the readme

/**
* @brief IPA (inner-product argument) commitment scheme class. Conforms to the specification
* https://hackmd.io/q-A8y6aITWyWJrvsGGMWNA?view.
* @brief IPA (inner product argument) commitment scheme class.
Copy link
Contributor Author

@Rumata888 Rumata888 Mar 5, 2024

Choose a reason for hiding this comment

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

image

@@ -33,31 +83,67 @@ template <typename Curve> class IPA {
* @param polynomial The witness polynomial whose opening proof needs to be computed
* @param transcript Prover transcript
* https://github.com/AztecProtocol/aztec-packages/pull/3434
*
*@details For a vector \f$\vec{v}=(v_0,v_1,...,v_{2n-1})\f$ of length \f$2n\f$ we'll denote
Copy link
Contributor Author

Choose a reason for hiding this comment

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

image

*
* @return true/false depending on if the proof verifies
*
* @details The procedure runs as follows:
Copy link
Contributor Author

Choose a reason for hiding this comment

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

image

@Rumata888 Rumata888 marked this pull request as ready for review March 5, 2024 22:46
@Rumata888 Rumata888 force-pushed the is/documenting_ipa_take_2 branch from 288ba3d to c947f64 Compare March 5, 2024 22:46
@Rumata888 Rumata888 self-assigned this Mar 5, 2024
@Rumata888 Rumata888 added A-documentation Area: relates to documentation crypto cryptography labels Mar 5, 2024
// Run scalar product in parallel
run_loop_in_parallel_if_effective_with_index(
// Run scalar products in parallel
run_loop_in_parallel_if_effective(
Copy link
Contributor Author

Choose a reason for hiding this comment

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

We are not accessing a vector any more, so we don't need the thread index

* b_zero = g(evaluation) = ∏_{i ∈ [k]} (1 + u_{k-i}^{-1}. (evaluation)^{2^{i-1}})
*/
// Step 6.
// Compute b_zero where b_zero can be computed using the polynomial:
Copy link
Contributor Author

Choose a reason for hiding this comment

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

"/**
*
*/" Comments go into docs :(

Copy link
Contributor

Choose a reason for hiding this comment

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

hm, that's unfortunate

Copy link
Contributor

@lucasxia01 lucasxia01 left a comment

Choose a reason for hiding this comment

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

Thanks for the documentation and the comments! Left some requests for small changes and clarifications.

@@ -1,19 +1,2738 @@
# Minimal Doxyfile. See https://www.doxygen.nl/manual/config.html
# Doxyfile 1.9.6
Copy link
Contributor

Choose a reason for hiding this comment

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

where was this copied from?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

From Cody's branch :). I made some adjustments to parallelize the build somewhat, but it only took off 5 seconds

# Add doxygen build command
find_package(Doxygen)
if (DOXYGEN_FOUND)
add_custom_target(build_docs
Copy link
Contributor

Choose a reason for hiding this comment

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

could you clarify more on how to use it?

*1. Originally we have two vectors \f$\vec{a}\f$ and \f$\vec{b}\f$, which the product of which we want to prove, but
*the prover can't just send vector \f$\vec{a}\f$ to the verifier, it can only provide a commitment
\f$\langle\vec{a},\vec{G}\rangle\f$
*2. The verifier computes the \f$C'=C+f(\beta)\cdot U\f$ to "bind" together the
Copy link
Contributor

Choose a reason for hiding this comment

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

C should be defined

Copy link
Contributor

Choose a reason for hiding this comment

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

and U too

Copy link
Contributor

Choose a reason for hiding this comment

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

you're also mixing the notation using f vs the notation using a and b which is confusing

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated
image

*/
static void compute_opening_proof(const std::shared_ptr<CK>& ck,
const OpeningPair<Curve>& opening_pair,
const Polynomial& polynomial,
const std::shared_ptr<NativeTranscript>& transcript)
{
ASSERT(opening_pair.challenge != 0 && "The challenge point should not be zero");
auto poly_degree = static_cast<size_t>(polynomial.size());
Copy link
Contributor

Choose a reason for hiding this comment

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

how about poly_length instead of poly_degree_plus_1? just a suggestion.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Left the same in the manifest, but changed the name of the variable

&inner_prod_L,
&inner_prod_R
#ifndef NO_MULTITHREADING
,
Copy link
Contributor

Choose a reason for hiding this comment

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

can't this comma be put on the previous line?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No, build starts failing

partial_inner_prod_R[workload_index] = current_inner_prod_R;
// Update the accumulated results thread-safely
{
#ifndef NO_MULTITHREADING
Copy link
Contributor

Choose a reason for hiding this comment

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

what's the performance impact from switching to this?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Before
image
After
image

* b_zero = g(evaluation) = ∏_{i ∈ [k]} (1 + u_{k-i}^{-1}. (evaluation)^{2^{i-1}})
*/
// Step 6.
// Compute b_zero where b_zero can be computed using the polynomial:
Copy link
Contributor

Choose a reason for hiding this comment

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

hm, that's unfortunate

// L_i = < a_vec_lo, G_vec_hi > + inner_prod_L * aux_generator
L_elements[i] = bb::scalar_multiplication::pippenger_without_endomorphism_basis_points<Curve>(
Copy link
Contributor

Choose a reason for hiding this comment

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

why did we store these before?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

No idea

std::mutex inner_product_accumulation_mutex;
#endif
// Step 6.
// Perform IPA reduction rounds
for (size_t i = 0; i < log_poly_degree; i++) {
Copy link
Contributor

Choose a reason for hiding this comment

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

could flip this backwards to align with documentation

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Forgot to do that. One of the reasons I got rid of the vectors

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Actually, the index in the manifest is correct. I'm just iterating like this for simplicity, so I'd prefer not to change it

Copy link
Contributor

@lucasxia01 lucasxia01 left a comment

Choose a reason for hiding this comment

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

Looks good! Left minor remark regarding step numbering.

std::string index = std::to_string(i);
transcript->send_to_verifier("IPA:L_" + index, Commitment(L_elements[i]));
transcript->send_to_verifier("IPA:R_" + index, Commitment(R_elements[i]));
// Step 6.3
Copy link
Contributor

Choose a reason for hiding this comment

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

can these change to 6a, b, c, d, e like the documentation?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes

@Rumata888 Rumata888 enabled auto-merge (squash) March 7, 2024 17:05
@Rumata888 Rumata888 merged commit 48bd22e into master Mar 7, 2024
79 of 80 checks passed
@Rumata888 Rumata888 deleted the is/documenting_ipa_take_2 branch March 7, 2024 17:06
PhilWindle pushed a commit that referenced this pull request Mar 8, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.26.6](aztec-package-v0.26.5...aztec-package-v0.26.6)
(2024-03-08)


### Miscellaneous

* **aztec-package:** Synchronize aztec-packages versions
</details>

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

##
[0.26.6](barretenberg.js-v0.26.5...barretenberg.js-v0.26.6)
(2024-03-08)


### Miscellaneous

* **barretenberg.js:** Synchronize aztec-packages versions
</details>

<details><summary>aztec-cli: 0.26.6</summary>

##
[0.26.6](aztec-cli-v0.26.5...aztec-cli-v0.26.6)
(2024-03-08)


### Features

* Show bytecode size per function in CLI inspect-contract
([#5059](#5059))
([cb9fdc6](cb9fdc6))
</details>

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

##
[0.26.6](aztec-packages-v0.26.5...aztec-packages-v0.26.6)
(2024-03-08)


### Features

* Basic public reverts
([#4870](#4870))
([5cccc78](5cccc78))
* Deploying new inbox
([#5036](#5036))
([fed729d](fed729d))
* Detect unknown note type ids in compute_note_hash
([#5086](#5086))
([6206bec](6206bec))
* Easy deployment of protocol contracts in e2e
([#4983](#4983))
([480161f](480161f))
* IPA documentation
([#4924](#4924))
([48bd22e](48bd22e))
* Nullifier read requests in public kernel
([#4910](#4910))
([0e44247](0e44247))
* Show bytecode size per function in CLI inspect-contract
([#5059](#5059))
([cb9fdc6](cb9fdc6))
* Updating an SMT solver class
([#4981](#4981))
([4b94d58](4b94d58))


### Bug Fixes

* Canonical contract address
([#5030](#5030))
([b2af880](b2af880))
* Flaky deployment test
([#5035](#5035))
([039eafc](039eafc))
* Pull the correct platform image for noir
([#5097](#5097))
([3342371](3342371))
* Sleep function memory leak
([#5023](#5023))
([a72cfea](a72cfea)),
closes
[#4817](#4817)
* Storage v2
([#5027](#5027))
([fe3190e](fe3190e))
* Update protogalaxy cmake dependencies
([#5066](#5066))
([507c374](507c374))


### Miscellaneous

* Address warnings in noir test suite
([#4966](#4966))
([7ef4ef5](7ef4ef5))
* Bootstrap noir natively if nargo is invalid
([#5034](#5034))
([df089de](df089de))
* Build avm transpiler if we are on mac
([#5039](#5039))
([c2966b9](c2966b9))
* **ci:** Re-enable certain bb solidity ACIR tests
([#5065](#5065))
([58e1ff4](58e1ff4))
* Cleanup of prover and verifier instances
([#4959](#4959))
([f2fdefd](f2fdefd))
* Delete bootstrap scripts from `noir/noir-repo`
([#5044](#5044))
([add91ca](add91ca))
* Disable `hello_world_example` noir test in aztec-packages CI
([#5061](#5061))
([1be9243](1be9243))
* Join-split example Part 1
([#4965](#4965))
([b9de0f5](b9de0f5))
* Moving RootRollupInputs impl
([#5087](#5087))
([f3d9f9b](f3d9f9b))
* Remove eccvm functionality to update the op queue and ensure ultra ops
are populated through function
([#5084](#5084))
([77954ab](77954ab))


### Documentation

* Parity circuit naming fixes
([#5076](#5076))
([c255255](c255255))
</details>

<details><summary>barretenberg: 0.26.6</summary>

##
[0.26.6](barretenberg-v0.26.5...barretenberg-v0.26.6)
(2024-03-08)


### Features

* IPA documentation
([#4924](#4924))
([48bd22e](48bd22e))
* Updating an SMT solver class
([#4981](#4981))
([4b94d58](4b94d58))


### Bug Fixes

* Storage v2
([#5027](#5027))
([fe3190e](fe3190e))
* Update protogalaxy cmake dependencies
([#5066](#5066))
([507c374](507c374))


### Miscellaneous

* **ci:** Re-enable certain bb solidity ACIR tests
([#5065](#5065))
([58e1ff4](58e1ff4))
* Cleanup of prover and verifier instances
([#4959](#4959))
([f2fdefd](f2fdefd))
* Join-split example Part 1
([#4965](#4965))
([b9de0f5](b9de0f5))
* Remove eccvm functionality to update the op queue and ensure ultra ops
are populated through function
([#5084](#5084))
([77954ab](77954ab))
</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 Mar 9, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.26.6](AztecProtocol/aztec-packages@aztec-package-v0.26.5...aztec-package-v0.26.6)
(2024-03-08)


### Miscellaneous

* **aztec-package:** Synchronize aztec-packages versions
</details>

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

##
[0.26.6](AztecProtocol/aztec-packages@barretenberg.js-v0.26.5...barretenberg.js-v0.26.6)
(2024-03-08)


### Miscellaneous

* **barretenberg.js:** Synchronize aztec-packages versions
</details>

<details><summary>aztec-cli: 0.26.6</summary>

##
[0.26.6](AztecProtocol/aztec-packages@aztec-cli-v0.26.5...aztec-cli-v0.26.6)
(2024-03-08)


### Features

* Show bytecode size per function in CLI inspect-contract
([#5059](AztecProtocol/aztec-packages#5059))
([cb9fdc6](AztecProtocol/aztec-packages@cb9fdc6))
</details>

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

##
[0.26.6](AztecProtocol/aztec-packages@aztec-packages-v0.26.5...aztec-packages-v0.26.6)
(2024-03-08)


### Features

* Basic public reverts
([#4870](AztecProtocol/aztec-packages#4870))
([5cccc78](AztecProtocol/aztec-packages@5cccc78))
* Deploying new inbox
([#5036](AztecProtocol/aztec-packages#5036))
([fed729d](AztecProtocol/aztec-packages@fed729d))
* Detect unknown note type ids in compute_note_hash
([#5086](AztecProtocol/aztec-packages#5086))
([6206bec](AztecProtocol/aztec-packages@6206bec))
* Easy deployment of protocol contracts in e2e
([#4983](AztecProtocol/aztec-packages#4983))
([480161f](AztecProtocol/aztec-packages@480161f))
* IPA documentation
([#4924](AztecProtocol/aztec-packages#4924))
([48bd22e](AztecProtocol/aztec-packages@48bd22e))
* Nullifier read requests in public kernel
([#4910](AztecProtocol/aztec-packages#4910))
([0e44247](AztecProtocol/aztec-packages@0e44247))
* Show bytecode size per function in CLI inspect-contract
([#5059](AztecProtocol/aztec-packages#5059))
([cb9fdc6](AztecProtocol/aztec-packages@cb9fdc6))
* Updating an SMT solver class
([#4981](AztecProtocol/aztec-packages#4981))
([4b94d58](AztecProtocol/aztec-packages@4b94d58))


### Bug Fixes

* Canonical contract address
([#5030](AztecProtocol/aztec-packages#5030))
([b2af880](AztecProtocol/aztec-packages@b2af880))
* Flaky deployment test
([#5035](AztecProtocol/aztec-packages#5035))
([039eafc](AztecProtocol/aztec-packages@039eafc))
* Pull the correct platform image for noir
([#5097](AztecProtocol/aztec-packages#5097))
([3342371](AztecProtocol/aztec-packages@3342371))
* Sleep function memory leak
([#5023](AztecProtocol/aztec-packages#5023))
([a72cfea](AztecProtocol/aztec-packages@a72cfea)),
closes
[#4817](AztecProtocol/aztec-packages#4817)
* Storage v2
([#5027](AztecProtocol/aztec-packages#5027))
([fe3190e](AztecProtocol/aztec-packages@fe3190e))
* Update protogalaxy cmake dependencies
([#5066](AztecProtocol/aztec-packages#5066))
([507c374](AztecProtocol/aztec-packages@507c374))


### Miscellaneous

* Address warnings in noir test suite
([#4966](AztecProtocol/aztec-packages#4966))
([7ef4ef5](AztecProtocol/aztec-packages@7ef4ef5))
* Bootstrap noir natively if nargo is invalid
([#5034](AztecProtocol/aztec-packages#5034))
([df089de](AztecProtocol/aztec-packages@df089de))
* Build avm transpiler if we are on mac
([#5039](AztecProtocol/aztec-packages#5039))
([c2966b9](AztecProtocol/aztec-packages@c2966b9))
* **ci:** Re-enable certain bb solidity ACIR tests
([#5065](AztecProtocol/aztec-packages#5065))
([58e1ff4](AztecProtocol/aztec-packages@58e1ff4))
* Cleanup of prover and verifier instances
([#4959](AztecProtocol/aztec-packages#4959))
([f2fdefd](AztecProtocol/aztec-packages@f2fdefd))
* Delete bootstrap scripts from `noir/noir-repo`
([#5044](AztecProtocol/aztec-packages#5044))
([add91ca](AztecProtocol/aztec-packages@add91ca))
* Disable `hello_world_example` noir test in aztec-packages CI
([#5061](AztecProtocol/aztec-packages#5061))
([1be9243](AztecProtocol/aztec-packages@1be9243))
* Join-split example Part 1
([#4965](AztecProtocol/aztec-packages#4965))
([b9de0f5](AztecProtocol/aztec-packages@b9de0f5))
* Moving RootRollupInputs impl
([#5087](AztecProtocol/aztec-packages#5087))
([f3d9f9b](AztecProtocol/aztec-packages@f3d9f9b))
* Remove eccvm functionality to update the op queue and ensure ultra ops
are populated through function
([#5084](AztecProtocol/aztec-packages#5084))
([77954ab](AztecProtocol/aztec-packages@77954ab))


### Documentation

* Parity circuit naming fixes
([#5076](AztecProtocol/aztec-packages#5076))
([c255255](AztecProtocol/aztec-packages@c255255))
</details>

<details><summary>barretenberg: 0.26.6</summary>

##
[0.26.6](AztecProtocol/aztec-packages@barretenberg-v0.26.5...barretenberg-v0.26.6)
(2024-03-08)


### Features

* IPA documentation
([#4924](AztecProtocol/aztec-packages#4924))
([48bd22e](AztecProtocol/aztec-packages@48bd22e))
* Updating an SMT solver class
([#4981](AztecProtocol/aztec-packages#4981))
([4b94d58](AztecProtocol/aztec-packages@4b94d58))


### Bug Fixes

* Storage v2
([#5027](AztecProtocol/aztec-packages#5027))
([fe3190e](AztecProtocol/aztec-packages@fe3190e))
* Update protogalaxy cmake dependencies
([#5066](AztecProtocol/aztec-packages#5066))
([507c374](AztecProtocol/aztec-packages@507c374))


### Miscellaneous

* **ci:** Re-enable certain bb solidity ACIR tests
([#5065](AztecProtocol/aztec-packages#5065))
([58e1ff4](AztecProtocol/aztec-packages@58e1ff4))
* Cleanup of prover and verifier instances
([#4959](AztecProtocol/aztec-packages#4959))
([f2fdefd](AztecProtocol/aztec-packages@f2fdefd))
* Join-split example Part 1
([#4965](AztecProtocol/aztec-packages#4965))
([b9de0f5](AztecProtocol/aztec-packages@b9de0f5))
* Remove eccvm functionality to update the op queue and ensure ultra ops
are populated through function
([#5084](AztecProtocol/aztec-packages#5084))
([77954ab](AztecProtocol/aztec-packages@77954ab))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-documentation Area: relates to documentation crypto cryptography
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants