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: basic public reverts #4870

Merged
merged 3 commits into from
Mar 7, 2024

Conversation

just-mitch
Copy link
Collaborator

@just-mitch just-mitch commented Feb 29, 2024

Fix #4971 , Parent issue is #4096

This PR adds basic support for reversions of public functions.

A public function may be simulated locally before the TX is submitted. In this case, the PXE calls out to the node, requesting public simulation.

When this is done, the node will throw an error if the public function would revert.

However, if the function is called with skipPublicSimulation, the TX is submitted, and the sequencer will run the public processor, which catches SimulationErrors, and includes them in the rollup.

Generally this is accomplished by adding a reverted boolean to the PublicCircuitPublicInputs and PublicKernelCircuitPublicInputs.

It is expected that the AVM will set its reverted flag to true. In the meantime, while simulating with the acvm, if it throws, we catch, and set the flag on the output to true.

There is also a revertedReason, which is useful for debugging (e.g. when you simulate public functions locally, you want the node to return a meaningful error to you)

The meat of the logic changes are in public_kernel_app_logic.nr, abstract_phase_manager.ts, and app_logic_phase_manager.ts.

The primary test is in e2e_fees.test.ts.

In the app logic circuit, we now check to see if we have reverted, and forward the flag if so. Additionally, if we have reverted, we do not propagate forward any revertible side effects, and instead leave them all to zero.

Note further, if we get a simulation error in a nested public execution, we do throw, and allow the parent/top-level call to catch the error and return gracefully.

I also added a bunch of inspect functions, and assertions about hashes for sanity checking.

Future work

Presently if a tx reverts but is included, it is not distinguished from other transactions in the block which did not revert. This will be fixed as part of #4972

Further, to test the flow where we privately pay the fee but then have a revert, we need to first tackle #4712 so that we have "non-revertible" logs (unshield is used in fee prep in this case, which emits encrypted logs, which are presently dropped if the transaction reverts).

Additionally, as mentioned in comments below, we do not yet insist that the non-revertible parts of public execution in fact do not revert. This will be done in #5038.

All of those are tracked as part of the parent issue #4096

We will also want to optimize the public kernel circuits, but I am in favor of adding the bare minimum feature set before we start optimizing.

Copy link
Contributor

github-actions bot commented Feb 29, 2024

Changes to circuit sizes

Generated at commit: 214a1827ab31ca47898a01991d43345598a2b557, compared to commit: 7ef4ef59d1188e3d370503bd69f4750fcf7d14b7

🧾 Summary (100% most significant diffs)

Program ACIR opcodes (+/-) % Circuit size (+/-) %
public_kernel_app_logic +10,499 ❌ +24.14% +67,894 ❌ +28.27%
public_kernel_teardown +2,311 ❌ +8.85% +2,621 ❌ +1.49%
public_kernel_setup +597 ❌ +2.29% +907 ❌ +0.52%
public_kernel_app_logic_simulated +1 ❌ +0.11% +2 ❌ +0.11%
public_kernel_setup_simulated +1 ❌ +0.11% +2 ❌ +0.11%
public_kernel_teardown_simulated +1 ❌ +0.11% +2 ❌ +0.11%

Full diff report 👇
Program ACIR opcodes (+/-) % Circuit size (+/-) %
public_kernel_app_logic 53,987 (+10,499) +24.14% 308,093 (+67,894) +28.27%
public_kernel_teardown 28,417 (+2,311) +8.85% 178,446 (+2,621) +1.49%
public_kernel_setup 26,716 (+597) +2.29% 176,744 (+907) +0.52%
public_kernel_app_logic_simulated 896 (+1) +0.11% 1,795 (+2) +0.11%
public_kernel_setup_simulated 896 (+1) +0.11% 1,795 (+2) +0.11%
public_kernel_teardown_simulated 896 (+1) +0.11% 1,795 (+2) +0.11%

@AztecBot
Copy link
Collaborator

AztecBot commented Feb 29, 2024

Benchmark results

Metrics with a significant change:

  • tx_sequencer_processing_time_ms (0): 5.56 (+18400%)
  • note_history_successful_decrypting_time_in_ms (10): 2,375 (-35%)
  • note_trial_decrypting_time_in_ms (8): 11.1 (-90%)
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 7ef4ef59 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,216 239,564 470,012
l1_rollup_execution_gas 194,164 500,870 909,270
l2_block_processing_time_in_ms 1,188 (-1%) 4,357 (-3%) 8,560 (-4%)
note_successful_decrypting_time_in_ms 203 (+1%) 523 (-3%) 951 (-4%)
note_trial_decrypting_time_in_ms ⚠️ 11.1 (-90%) 42.4 (-31%) 83.5 (-35%)
l2_block_building_time_in_ms 11,170 (-1%) 43,707 (-3%) 85,550 (-4%)
l2_block_rollup_simulation_time_in_ms 7,318 28,861 (-2%) 56,573 (-3%)
l2_block_public_tx_process_time_in_ms 3,823 (-3%) 14,779 (-4%) 28,865 (-6%)

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,406 (-12%) 27,377 (-3%)
note_history_successful_decrypting_time_in_ms 1,217 (-2%) ⚠️ 2,375 (-35%)
note_history_trial_decrypting_time_in_ms 73.2 (-19%) 126 (-20%)
node_database_size_in_bytes 18,813,008 35,549,264
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 250 (-3%) 44,736 28,001
private-kernel-ordering 192 (-4%) 52,625 14,627
base-rollup 646 (-3%) 177,932 997
root-rollup 68.0 (-1%) 4,320 825
private-kernel-inner 314 (-4%) 73,715 28,001
public-kernel-app-logic 163 (-7%) 32,256 25,380
merge-rollup 8.37 (-2%) 2,840 997

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 9.62 (-2%) 10.5 (+3%) 13.9 (-21%) 15.8 (-10%) 21.7 34.4 (-3%) 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.559 (-2%) 0.585 (+4%) 0.593 (-21%) 0.488 (-10%) 0.456 0.428 (-3%) 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 45.0 (-2%) 70.3 (-16%) 230 440 (-9%) 844 (-2%) 1,656 (-4%)
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.461 (-2%) 0.434 (-16%) 0.419 (-1%) 0.411 (-9%) 0.402 (-2%) 0.397 (-3%)
batch_insert_into_indexed_tree_20_depth_ms N/A N/A N/A N/A N/A 52.9 (-1%) 104 (-15%) 341 (+1%) 648 (-8%) 1,277 (-2%) 2,513 (-4%)
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.471 (-1%) 0.469 (-15%) 0.461 (+1%) 0.446 (-9%) 0.443 (-2%) 0.436 (-4%)
batch_insert_into_indexed_tree_40_depth_ms N/A N/A N/A N/A 60.1 (-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.526 (-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,691 1,357 (-4%)
Metric 0 public data writes 1 public data writes
tx_sequencer_processing_time_ms ⚠️ 5.56 (+18400%) 458 (-6%)

@just-mitch just-mitch force-pushed the 4736-cannot-write-to-public-storage-twice branch from 63da191 to cd1d7e9 Compare February 29, 2024 22:55
Base automatically changed from 4736-cannot-write-to-public-storage-twice to master March 1, 2024 14:08
@just-mitch just-mitch force-pushed the 4096-gracefully-handle-public-app-logic-reverts branch 2 times, most recently from 12b6f33 to f7664c8 Compare March 4, 2024 02:13
@AztecBot
Copy link
Collaborator

AztecBot commented Mar 5, 2024

Docs Preview

Hey there! 👋 You can check your preview at https://65e9e4c4a034df2910c7f505--aztec-docs-dev.netlify.app

@just-mitch just-mitch force-pushed the 4096-gracefully-handle-public-app-logic-reverts branch from ca65093 to f05aa53 Compare March 5, 2024 20:03
@just-mitch just-mitch changed the title wip: unit tests passing feat: basic public reverts Mar 6, 2024
@just-mitch just-mitch linked an issue Mar 6, 2024 that may be closed by this pull request
@just-mitch just-mitch force-pushed the 4096-gracefully-handle-public-app-logic-reverts branch from 870dca0 to 135449a Compare March 6, 2024 18:21
@just-mitch just-mitch marked this pull request as ready for review March 6, 2024 18:36
@just-mitch just-mitch force-pushed the 4096-gracefully-handle-public-app-logic-reverts branch 2 times, most recently from 834c8af to 775f80c Compare March 7, 2024 12:13
@PhilWindle
Copy link
Collaborator

Looks fine to me. But I think @LeilaWang or @sirasistant should have a quick look over the protocol circuit stuff.

Copy link
Contributor

@alexghr alexghr left a comment

Choose a reason for hiding this comment

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

Looks great! Love the use of utils.inspect, it will make debug go a lot smoother. Just one question related to reverts in setup/teardown

// halt immediately if the public kernel circuit has reverted.
// return no logs, as they should not go on-chain.
return [kernelOutput, kernelProof, [], result.revertReason];
}
Copy link
Contributor

Choose a reason for hiding this comment

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

It's possible I missed, but I'm just wondering, should there be an else if (kernelOutput.reverted) throw new Error to handle reverts in the non-revertible phases?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes! I created #5038 to track this.

Copy link
Collaborator

@LeilaWang LeilaWang left a comment

Choose a reason for hiding this comment

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

A question and a small issue. LGTM overall!

export function assertRightPadded<T>(arr: T[], emptyElt: T) {
let seenEmpty = false;
for (let i = 0; i < arr.length; i++) {
if (arr[i] === emptyElt) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

If it's an object it might always be false.

@@ -26,6 +26,7 @@ impl PublicKernelTeardownCircuitPrivateInputs {
fn public_kernel_teardown(self) -> PublicKernelCircuitPublicInputs {
// construct the circuit outputs
let mut public_inputs: PublicKernelCircuitPublicInputsBuilder = unsafe::zeroed();
common::initialize_reverted_flag(self.previous_kernel, self.public_call, &mut public_inputs);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Should setup and teardown check that the public_call does not revert?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes! This is related to @alexghr's comment above. Ensuring "non-revertibility" of setup/teardown will be done next as part of #5038

tx.unencryptedLogs || new TxL2Logs([]),
),
);
const txEffects: TxEffect[] = txs.map(tx => toTxEffect(tx));
Copy link
Collaborator

Choose a reason for hiding this comment

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

Nice cleanup!

@@ -148,6 +162,21 @@ export class TxEffect {
return this.toBuffer().toString('hex');
}

[inspect.custom]() {
// print out the non-empty fields
Copy link
Collaborator

Choose a reason for hiding this comment

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

Yay!

@just-mitch just-mitch force-pushed the 4096-gracefully-handle-public-app-logic-reverts branch from fd51297 to ab21b51 Compare March 7, 2024 14:46
@just-mitch just-mitch force-pushed the 4096-gracefully-handle-public-app-logic-reverts branch from ab21b51 to dd05b6e Compare March 7, 2024 15:43
@just-mitch just-mitch requested a review from LeilaWang March 7, 2024 15:43
@just-mitch just-mitch merged commit 5cccc78 into master Mar 7, 2024
95 checks passed
@just-mitch just-mitch deleted the 4096-gracefully-handle-public-app-logic-reverts branch March 7, 2024 17:29
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
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Do not throw on public simulation error
5 participants