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(AuthWit): simplify create authwit syntax #5132

Merged
merged 3 commits into from
Mar 18, 2024
Merged

feat(AuthWit): simplify create authwit syntax #5132

merged 3 commits into from
Mar 18, 2024

Conversation

LHerskind
Copy link
Contributor

@LHerskind LHerskind commented Mar 11, 2024

Fixes #4821 and #5075.

Renames the functions related to AuthWit to use a similar naming scheme.

Extends the createAuthWit, setPublicAuthWit and cancelAuthWit functions such that they can now take an object

{
  caller: AztecAddress;
  action: ContractFunctionInteraction | FunctionCall;
},

Allowing for adding a new authwit more simply.

Example:

await user1Wallet.createAuthWit({
  caller: l2Bridge.address,
  action: l2Token.methods.burn(ownerAddress, withdrawAmount, nonce)
});

Copy link
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @LHerskind and the rest of your teammates on Graphite Graphite

@AztecBot
Copy link
Collaborator

AztecBot commented Mar 11, 2024

Docs Preview

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

@AztecBot
Copy link
Collaborator

AztecBot commented Mar 11, 2024

Benchmark results

No metrics with a significant change found.

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 a26d9685 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,668 18,820 36,356
l1_rollup_calldata_gas 66,424 238,648 469,976
l1_rollup_execution_gas 647,522 929,006 1,306,156
l2_block_processing_time_in_ms 1,323 (+2%) 4,843 (+2%) 9,248
note_successful_decrypting_time_in_ms 176 (-5%) 525 (-1%) 1,002 (+3%)
note_trial_decrypting_time_in_ms 80.1 (-13%) 44.4 (-9%) 134 (+26%)
l2_block_building_time_in_ms 18,105 (+1%) 68,269 135,457 (-1%)
l2_block_rollup_simulation_time_in_ms 8,041 28,531 56,123 (-1%)
l2_block_public_tx_process_time_in_ms 10,043 (+1%) 39,682 79,237 (-1%)

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,394 (+3%) 27,574 (+4%)
note_history_successful_decrypting_time_in_ms 1,229 (-5%) 2,484 (+3%)
note_history_trial_decrypting_time_in_ms 69.7 (-48%) 146 (+26%)
node_database_size_in_bytes 19,136,592 35,725,392
pxe_database_size_in_bytes 29,859 59,414

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 280 44,366 28,244
private-kernel-ordering 215 52,868 14,326
base-parity 1,843 (-3%) 128 311
base-rollup 714 (-1%) 165,787 925
root-parity 1,501 (+3%) 1,244 311
root-rollup 62.8 4,487 789
private-kernel-inner 644 (+1%) 73,771 28,244
public-kernel-app-logic 444 35,260 28,215
public-kernel-tail 173 (+1%) 40,926 28,215
merge-rollup 8.26 2,696 925

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 512 leaves 1024 leaves 2048 leaves 4096 leaves 32 leaves
batch_insert_into_append_only_tree_16_depth_ms 9.95 15.9 N/A N/A N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_count 16.8 31.6 N/A N/A N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_ms 0.581 0.493 N/A N/A N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_32_depth_ms N/A N/A 45.5 (-1%) 72.7 229 443 (-2%) 875 (-1%) 1,716 (-1%) N/A
batch_insert_into_append_only_tree_32_depth_hash_count N/A N/A 96.0 159 543 1,055 2,079 4,127 N/A
batch_insert_into_append_only_tree_32_depth_hash_ms N/A N/A 0.467 (-1%) 0.449 0.419 0.415 (-1%) 0.416 (-1%) 0.412 N/A
batch_insert_into_indexed_tree_20_depth_ms N/A N/A 53.5 (-4%) 106 (-1%) 335 658 1,302 2,596 N/A
batch_insert_into_indexed_tree_20_depth_hash_count N/A N/A 104 207 691 1,363 2,707 5,395 N/A
batch_insert_into_indexed_tree_20_depth_hash_ms N/A N/A 0.476 (-4%) 0.481 (-1%) 0.456 0.453 0.451 0.451 N/A
batch_insert_into_indexed_tree_40_depth_ms N/A N/A N/A N/A N/A N/A N/A N/A 60.8 (-1%)
batch_insert_into_indexed_tree_40_depth_hash_count N/A N/A N/A N/A N/A N/A N/A N/A 109
batch_insert_into_indexed_tree_40_depth_hash_ms N/A N/A N/A N/A N/A N/A N/A N/A 0.532 (-1%)

Miscellaneous

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

Metric 0 registered classes
tx_size_in_bytes 22,012

Transaction processing duration by data writes.

Metric 0 new note hashes 1 new note hashes
tx_pxe_processing_time_ms 3,203 1,754 (+1%)
Metric 0 public data writes 1 public data writes
tx_sequencer_processing_time_ms 11.6 (+1%) 1,239

@LHerskind LHerskind linked an issue Mar 11, 2024 that may be closed by this pull request
@LHerskind LHerskind force-pushed the lh/4821 branch 2 times, most recently from 883e082 to b589142 Compare March 14, 2024 08:30
@LHerskind LHerskind marked this pull request as ready for review March 14, 2024 08:30
* Computes an authentication witness from either a message or a caller and an action.
* If a message is provided, it will create a witness for the message directly.
* Otherwise, it will compute the message using the caller and the action.
* @param messageOrAuthWitInput - The message or the caller and action to approve
Copy link
Contributor

@benesjan benesjan Mar 14, 2024

Choose a reason for hiding this comment

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

I think the "AuthWitInput" in the param name is not that great because I see as authwit input the input of this function. Maybe something like msgOrMsgPreimage would be better?

Also the naming here is inconsistent with the rest of the codebase. There is a computeAuthWitMessageHash which returns what you call a message here. I think it would be useful to be consistent with what an authWit message is and I would rename computeAuthWitMessageHash as computeAuthWitMessage and authwit message would everywhere be the hash of caller and action.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes I think being clear that there is no difference between a Message and Message Hash, as well as there being a Message Input (named AuthWitInput here), which is just the message preimage.

So being super clear, right now we have an AuthWitMessage and an AuthWitMessageInput (which is just the preimage of the AuthWit Message), and this function computes a "live authwit" from either one of these ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is not only the preimage, it is the action which is then used to generate the pre-image. Could be the "messageHashOrIntent` with danger of opening a can of worms with the intent naming 😆

The message is essentially just a field that we are signing over, and then we are saying it is a hash but it does not strictly need to be 😬 in many cases it would likely be what you are signing over, and there it is often called a message even if it is really a hash of the message. Think ecrecover is calling it a hash, so might be best to go with that notation.

@@ -68,7 +68,7 @@ export class PrivateFeePaymentMethod implements FeePaymentMethod {
),
to: this.asset,
});
await this.wallet.createAuthWitness(messageHash);
await this.wallet.createAuthWit(messageHash);
Copy link
Contributor

Choose a reason for hiding this comment

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

Here is the incosistency. The message in createAuthWit(...) is messageHash here.


await wallets[0].cancelAuthWit({ caller: accounts[1].address, action }).send().wait();

// Check that the message hash is no longer valid. Need to try to send since nullifiers are handled by sequencer.
Copy link
Contributor

@benesjan benesjan Mar 14, 2024

Choose a reason for hiding this comment

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

Suggested change
// Check that the message hash is no longer valid. Need to try to send since nullifiers are handled by sequencer.
// Check that the authwit is no longer valid. Need to try to send since nullifiers are handled by sequencer.

I am being annoying here but think the use of authwit is clearer here in the comment given that you call cancelAuthWit above. Outsider would not be sure what is message hash here.

Copy link
Contributor

Choose a reason for hiding this comment

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

Wait we are using 'message hash' here referring to the output of the authwit as well?

So we have message hash that refers to both the hash of the preimage of the authwit input, but also the output of the authwit itself ? 🤯

Copy link
Contributor Author

Choose a reason for hiding this comment

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

An authwit is some authentication witness for a specific message hash. So the thing you as an user is interested in, is whether the message is valid (with a signature OR if in public as here if the message hash directly is approved in storage).


await wallets[0].setPublicAuthWit({ caller: accounts[1].address, action }, false).send().wait();

// Check that the message hash is no longer valid. Need to try to send since nullifiers are handled by sequencer.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
// Check that the message hash is no longer valid. Need to try to send since nullifiers are handled by sequencer.
// Check that the authwit is no longer valid. Need to try to send since nullifiers are handled by sequencer.

Copy link
Contributor

@benesjan benesjan 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. It's a nice improvement. I would just be consistent with message vs message hash naming (it reminds me the note vs note preimage naming mess). But I am aware that that is not directly the scope of this PR so I am fine with that being addressed in another one.

Copy link
Contributor

@sklppy88 sklppy88 left a comment

Choose a reason for hiding this comment

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

Very cool, also +1 to @benesjan's points. But generally unrelated and a super opinionated take (open to being super wrong), I honestly don't like 'AuthWit' as a name in general. It has been shortened from 'AuthWitness,' which already is a bit convoluted, but as a new name, it does not stand on its own. i.e. with no context 'AuthWit' simply does not make any sense—unless we lean into and almost coin a new term for our concept of it, but it's just a bit weird.

Would prefer something that follows in the spirit of 'AuthPass', 'AuthApprove', or even 'AuthPermit'. I.e. you give someone a 'Permit' or 'Approval' to call a flow that would need your permission. Something that more clearly conveys that its a transferable approval of an action (in the sense that someone else uses it on your behalf to do an action that needs your approval).

I don't think any of the aforementioned potential replacements are good either, but I do think that maybe we should reconsider this naming, as I feel like this is something that was set early on and wasn't given too much though, maybe we should though, especially as we start truncating things

* Computes an authentication witness from either a message or a caller and an action.
* If a message is provided, it will create a witness for the message directly.
* Otherwise, it will compute the message using the caller and the action.
* @param messageOrAuthWitInput - The message or the caller and action to approve
Copy link
Contributor

Choose a reason for hiding this comment

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

Yes I think being clear that there is no difference between a Message and Message Hash, as well as there being a Message Input (named AuthWitInput here), which is just the message preimage.

So being super clear, right now we have an AuthWitMessage and an AuthWitMessageInput (which is just the preimage of the AuthWit Message), and this function computes a "live authwit" from either one of these ?


await wallets[0].cancelAuthWit({ caller: accounts[1].address, action }).send().wait();

// Check that the message hash is no longer valid. Need to try to send since nullifiers are handled by sequencer.
Copy link
Contributor

Choose a reason for hiding this comment

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

Wait we are using 'message hash' here referring to the output of the authwit as well?

So we have message hash that refers to both the hash of the preimage of the authwit input, but also the output of the authwit itself ? 🤯

@LHerskind LHerskind merged commit d0a5b19 into master Mar 18, 2024
96 of 100 checks passed
@LHerskind LHerskind deleted the lh/4821 branch March 18, 2024 14:40
sirasistant pushed a commit that referenced this pull request Mar 18, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.29.0](aztec-package-v0.28.1...aztec-package-v0.29.0)
(2024-03-18)


### Features

* Initial Earthly CI
([#5069](#5069))
([8e75fe5](8e75fe5))
</details>

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

##
[0.29.0](barretenberg.js-v0.28.1...barretenberg.js-v0.29.0)
(2024-03-18)


### Features

* Initial Earthly CI
([#5069](#5069))
([8e75fe5](8e75fe5))
</details>

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

##
[0.29.0](aztec-cli-v0.28.1...aztec-cli-v0.29.0)
(2024-03-18)


### Features

* Use deployer in address computation
([#5201](#5201))
([258ff4a](258ff4a))


### Miscellaneous

* Delete ContractData
([#5258](#5258))
([e516f9b](e516f9b))
* Delete ExtendedContractData struct
([#5248](#5248))
([8ae0c13](8ae0c13))
* Removing redundant receipts check
([#5271](#5271))
([5ab07fb](5ab07fb))
</details>

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

##
[0.29.0](aztec-packages-v0.28.1...aztec-packages-v0.29.0)
(2024-03-18)


### ⚠ BREAKING CHANGES

* Acir call opcode
([#4773](#4773))

### Features

* Acir call opcode
([#4773](#4773))
([0b15db2](0b15db2))
* Add as_slice builtin function, add execution test
(noir-lang/noir#4523)
([86e1a86](86e1a86))
* Add more impls on Option (noir-lang/noir#4549)
([86e1a86](86e1a86))
* Add RelWithAssert build
([#4997](#4997))
([4f337c7](4f337c7))
* Allow usage of noir `#[test]` syntax in stdlib
(noir-lang/noir#4553)
([86e1a86](86e1a86))
* **AuthWit:** Simplify create authwit syntax
([#5132](#5132))
([d0a5b19](d0a5b19))
* **avm:** Brillig CONST of size &gt; u128
([#5217](#5217))
([2e63479](2e63479))
* **avm:** Mov opcode with direct memory
([#5204](#5204))
([08f9038](08f9038)),
closes
[#5159](#5159)
* Brillig IR refactor
([#5233](#5233))
([9a73348](9a73348))
* Check initializer msg.sender matches deployer from address preimage
([#5222](#5222))
([438d16f](438d16f))
* Extended IPA tests and fuzzing
([#5140](#5140))
([0ae5ace](0ae5ace))
* Initial Earthly CI
([#5069](#5069))
([8e75fe5](8e75fe5))
* New Outbox Contract
[#4768](#4768)
([#5090](#5090))
([6421a3d](6421a3d))
* Remove curly braces with fmt
(noir-lang/noir#4529)
([86e1a86](86e1a86))
* Remove curly braces with fmt
(noir-lang/noir#4529)
([d8b8456](d8b8456))
* Remove unnecessary `mulmod`s from verifier contract
([#5269](#5269))
([20d9c0c](20d9c0c))
* Signed integer division and modulus in brillig gen
([#5279](#5279))
([82f8cf5](82f8cf5))
* Use deployer in address computation
([#5201](#5201))
([258ff4a](258ff4a))


### Bug Fixes

* **avm-transpiler:** RETURN is direct
([#5277](#5277))
([f90b2cf](f90b2cf))
* **bb:** Mac build
([#5253](#5253))
([ae021c0](ae021c0))
* CVC5 api update
([#5203](#5203))
([9cc32cb](9cc32cb))
* Evaluate operators in globals in types
(noir-lang/noir#4537)
([86e1a86](86e1a86))
* Evaluate operators in globals in types
(noir-lang/noir#4537)
([d8b8456](d8b8456))
* Make `nargo` the default binary for cargo run
(noir-lang/noir#4554)
([86e1a86](86e1a86))
* Make `nargo` the default binary for cargo run
(noir-lang/noir#4554)
([d8b8456](d8b8456))
* Revert "fix: noir mirror merge strat"
([#5250](#5250))
([7e8e8e5](7e8e8e5))
* Validation requests
([#5236](#5236))
([25ce33b](25ce33b))


### Miscellaneous

* Add avm team to codeowners for public context
([#5288](#5288))
([e146076](e146076))
* Add more `Hash` impls to stdlib
(noir-lang/noir#4470)
([86e1a86](86e1a86))
* Add more `Hash` impls to stdlib
(noir-lang/noir#4470)
([d8b8456](d8b8456))
* Add quick explanatory comment to outbox suggested by
[@benesjan](https://github.com/benesjan)
([#5247](#5247))
([56e8451](56e8451))
* **avm-simulator:** Update e2e test
([#5283](#5283))
([e9beeca](e9beeca))
* **avm-transpiler:** Return u8 in comparison ops
([#5280](#5280))
([1a5eb69](1a5eb69))
* **avm-transpiler:** Transpiler cleanup
([#5218](#5218))
([199e918](199e918))
* Delete ContractDao
([#5256](#5256))
([544e278](544e278))
* Delete ContractData
([#5258](#5258))
([e516f9b](e516f9b))
* Delete ExtendedContractData struct
([#5248](#5248))
([8ae0c13](8ae0c13))
* Delete isInternal and isConstructor fields from FunctionData
([#5232](#5232))
([dea3f87](dea3f87))
* Delete unused contract tree ts code
([#5229](#5229))
([b48dd23](b48dd23))
* Delete unused hash functions
([#5231](#5231))
([fed70a1](fed70a1))
* Fix docker test workflows
(noir-lang/noir#4566)
([86e1a86](86e1a86))
* Fixing some broken links (noir-lang/noir#4556)
([86e1a86](86e1a86))
* Making docs build before cutting versions
(noir-lang/noir#4568)
([86e1a86](86e1a86))
* Old inbox purge
([#5206](#5206))
([a26d968](a26d968))
* Removing redundant receipts check
([#5271](#5271))
([5ab07fb](5ab07fb))
* Separate tests for execution failures from compilation failures
(noir-lang/noir#4559)
([86e1a86](86e1a86))
* Separate tests for execution failures from compilation failures
(noir-lang/noir#4559)
([d8b8456](d8b8456))
* Template Zeromorph by PCS
([#5215](#5215))
([03feab2](03feab2))
* Use inotifywait to run generate in yarn-project
([#5168](#5168))
([137c13e](137c13e))


### Documentation

* **yp:** Remove contract tree and deploy data from circuits and state
([#5260](#5260))
([acffa7b](acffa7b))
</details>

<details><summary>barretenberg: 0.29.0</summary>

##
[0.29.0](barretenberg-v0.28.1...barretenberg-v0.29.0)
(2024-03-18)


### ⚠ BREAKING CHANGES

* Acir call opcode
([#4773](#4773))

### Features

* Acir call opcode
([#4773](#4773))
([0b15db2](0b15db2))
* Add RelWithAssert build
([#4997](#4997))
([4f337c7](4f337c7))
* **avm:** Mov opcode with direct memory
([#5204](#5204))
([08f9038](08f9038)),
closes
[#5159](#5159)
* Extended IPA tests and fuzzing
([#5140](#5140))
([0ae5ace](0ae5ace))
* Initial Earthly CI
([#5069](#5069))
([8e75fe5](8e75fe5))
* Remove unnecessary `mulmod`s from verifier contract
([#5269](#5269))
([20d9c0c](20d9c0c))
* Signed integer division and modulus in brillig gen
([#5279](#5279))
([82f8cf5](82f8cf5))


### Bug Fixes

* **bb:** Mac build
([#5253](#5253))
([ae021c0](ae021c0))
* CVC5 api update
([#5203](#5203))
([9cc32cb](9cc32cb))


### Miscellaneous

* Template Zeromorph by PCS
([#5215](#5215))
([03feab2](03feab2))
</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 19, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.29.0](AztecProtocol/aztec-packages@aztec-package-v0.28.1...aztec-package-v0.29.0)
(2024-03-18)


### Features

* Initial Earthly CI
([#5069](AztecProtocol/aztec-packages#5069))
([8e75fe5](AztecProtocol/aztec-packages@8e75fe5))
</details>

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

##
[0.29.0](AztecProtocol/aztec-packages@barretenberg.js-v0.28.1...barretenberg.js-v0.29.0)
(2024-03-18)


### Features

* Initial Earthly CI
([#5069](AztecProtocol/aztec-packages#5069))
([8e75fe5](AztecProtocol/aztec-packages@8e75fe5))
</details>

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

##
[0.29.0](AztecProtocol/aztec-packages@aztec-cli-v0.28.1...aztec-cli-v0.29.0)
(2024-03-18)


### Features

* Use deployer in address computation
([#5201](AztecProtocol/aztec-packages#5201))
([258ff4a](AztecProtocol/aztec-packages@258ff4a))


### Miscellaneous

* Delete ContractData
([#5258](AztecProtocol/aztec-packages#5258))
([e516f9b](AztecProtocol/aztec-packages@e516f9b))
* Delete ExtendedContractData struct
([#5248](AztecProtocol/aztec-packages#5248))
([8ae0c13](AztecProtocol/aztec-packages@8ae0c13))
* Removing redundant receipts check
([#5271](AztecProtocol/aztec-packages#5271))
([5ab07fb](AztecProtocol/aztec-packages@5ab07fb))
</details>

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

##
[0.29.0](AztecProtocol/aztec-packages@aztec-packages-v0.28.1...aztec-packages-v0.29.0)
(2024-03-18)


### ⚠ BREAKING CHANGES

* Acir call opcode
([#4773](AztecProtocol/aztec-packages#4773))

### Features

* Acir call opcode
([#4773](AztecProtocol/aztec-packages#4773))
([0b15db2](AztecProtocol/aztec-packages@0b15db2))
* Add as_slice builtin function, add execution test
(noir-lang/noir#4523)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Add more impls on Option (noir-lang/noir#4549)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Add RelWithAssert build
([#4997](AztecProtocol/aztec-packages#4997))
([4f337c7](AztecProtocol/aztec-packages@4f337c7))
* Allow usage of noir `#[test]` syntax in stdlib
(noir-lang/noir#4553)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* **AuthWit:** Simplify create authwit syntax
([#5132](AztecProtocol/aztec-packages#5132))
([d0a5b19](AztecProtocol/aztec-packages@d0a5b19))
* **avm:** Brillig CONST of size &gt; u128
([#5217](AztecProtocol/aztec-packages#5217))
([2e63479](AztecProtocol/aztec-packages@2e63479))
* **avm:** Mov opcode with direct memory
([#5204](AztecProtocol/aztec-packages#5204))
([08f9038](AztecProtocol/aztec-packages@08f9038)),
closes
[#5159](AztecProtocol/aztec-packages#5159)
* Brillig IR refactor
([#5233](AztecProtocol/aztec-packages#5233))
([9a73348](AztecProtocol/aztec-packages@9a73348))
* Check initializer msg.sender matches deployer from address preimage
([#5222](AztecProtocol/aztec-packages#5222))
([438d16f](AztecProtocol/aztec-packages@438d16f))
* Extended IPA tests and fuzzing
([#5140](AztecProtocol/aztec-packages#5140))
([0ae5ace](AztecProtocol/aztec-packages@0ae5ace))
* Initial Earthly CI
([#5069](AztecProtocol/aztec-packages#5069))
([8e75fe5](AztecProtocol/aztec-packages@8e75fe5))
* New Outbox Contract
[#4768](AztecProtocol/aztec-packages#4768)
([#5090](AztecProtocol/aztec-packages#5090))
([6421a3d](AztecProtocol/aztec-packages@6421a3d))
* Remove curly braces with fmt
(noir-lang/noir#4529)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Remove curly braces with fmt
(noir-lang/noir#4529)
([d8b8456](AztecProtocol/aztec-packages@d8b8456))
* Remove unnecessary `mulmod`s from verifier contract
([#5269](AztecProtocol/aztec-packages#5269))
([20d9c0c](AztecProtocol/aztec-packages@20d9c0c))
* Signed integer division and modulus in brillig gen
([#5279](AztecProtocol/aztec-packages#5279))
([82f8cf5](AztecProtocol/aztec-packages@82f8cf5))
* Use deployer in address computation
([#5201](AztecProtocol/aztec-packages#5201))
([258ff4a](AztecProtocol/aztec-packages@258ff4a))


### Bug Fixes

* **avm-transpiler:** RETURN is direct
([#5277](AztecProtocol/aztec-packages#5277))
([f90b2cf](AztecProtocol/aztec-packages@f90b2cf))
* **bb:** Mac build
([#5253](AztecProtocol/aztec-packages#5253))
([ae021c0](AztecProtocol/aztec-packages@ae021c0))
* CVC5 api update
([#5203](AztecProtocol/aztec-packages#5203))
([9cc32cb](AztecProtocol/aztec-packages@9cc32cb))
* Evaluate operators in globals in types
(noir-lang/noir#4537)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Evaluate operators in globals in types
(noir-lang/noir#4537)
([d8b8456](AztecProtocol/aztec-packages@d8b8456))
* Make `nargo` the default binary for cargo run
(noir-lang/noir#4554)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Make `nargo` the default binary for cargo run
(noir-lang/noir#4554)
([d8b8456](AztecProtocol/aztec-packages@d8b8456))
* Revert "fix: noir mirror merge strat"
([#5250](AztecProtocol/aztec-packages#5250))
([7e8e8e5](AztecProtocol/aztec-packages@7e8e8e5))
* Validation requests
([#5236](AztecProtocol/aztec-packages#5236))
([25ce33b](AztecProtocol/aztec-packages@25ce33b))


### Miscellaneous

* Add avm team to codeowners for public context
([#5288](AztecProtocol/aztec-packages#5288))
([e146076](AztecProtocol/aztec-packages@e146076))
* Add more `Hash` impls to stdlib
(noir-lang/noir#4470)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Add more `Hash` impls to stdlib
(noir-lang/noir#4470)
([d8b8456](AztecProtocol/aztec-packages@d8b8456))
* Add quick explanatory comment to outbox suggested by
[@benesjan](https://github.com/benesjan)
([#5247](AztecProtocol/aztec-packages#5247))
([56e8451](AztecProtocol/aztec-packages@56e8451))
* **avm-simulator:** Update e2e test
([#5283](AztecProtocol/aztec-packages#5283))
([e9beeca](AztecProtocol/aztec-packages@e9beeca))
* **avm-transpiler:** Return u8 in comparison ops
([#5280](AztecProtocol/aztec-packages#5280))
([1a5eb69](AztecProtocol/aztec-packages@1a5eb69))
* **avm-transpiler:** Transpiler cleanup
([#5218](AztecProtocol/aztec-packages#5218))
([199e918](AztecProtocol/aztec-packages@199e918))
* Delete ContractDao
([#5256](AztecProtocol/aztec-packages#5256))
([544e278](AztecProtocol/aztec-packages@544e278))
* Delete ContractData
([#5258](AztecProtocol/aztec-packages#5258))
([e516f9b](AztecProtocol/aztec-packages@e516f9b))
* Delete ExtendedContractData struct
([#5248](AztecProtocol/aztec-packages#5248))
([8ae0c13](AztecProtocol/aztec-packages@8ae0c13))
* Delete isInternal and isConstructor fields from FunctionData
([#5232](AztecProtocol/aztec-packages#5232))
([dea3f87](AztecProtocol/aztec-packages@dea3f87))
* Delete unused contract tree ts code
([#5229](AztecProtocol/aztec-packages#5229))
([b48dd23](AztecProtocol/aztec-packages@b48dd23))
* Delete unused hash functions
([#5231](AztecProtocol/aztec-packages#5231))
([fed70a1](AztecProtocol/aztec-packages@fed70a1))
* Fix docker test workflows
(noir-lang/noir#4566)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Fixing some broken links (noir-lang/noir#4556)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Making docs build before cutting versions
(noir-lang/noir#4568)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Old inbox purge
([#5206](AztecProtocol/aztec-packages#5206))
([a26d968](AztecProtocol/aztec-packages@a26d968))
* Removing redundant receipts check
([#5271](AztecProtocol/aztec-packages#5271))
([5ab07fb](AztecProtocol/aztec-packages@5ab07fb))
* Separate tests for execution failures from compilation failures
(noir-lang/noir#4559)
([86e1a86](AztecProtocol/aztec-packages@86e1a86))
* Separate tests for execution failures from compilation failures
(noir-lang/noir#4559)
([d8b8456](AztecProtocol/aztec-packages@d8b8456))
* Template Zeromorph by PCS
([#5215](AztecProtocol/aztec-packages#5215))
([03feab2](AztecProtocol/aztec-packages@03feab2))
* Use inotifywait to run generate in yarn-project
([#5168](AztecProtocol/aztec-packages#5168))
([137c13e](AztecProtocol/aztec-packages@137c13e))


### Documentation

* **yp:** Remove contract tree and deploy data from circuits and state
([#5260](AztecProtocol/aztec-packages#5260))
([acffa7b](AztecProtocol/aztec-packages@acffa7b))
</details>

<details><summary>barretenberg: 0.29.0</summary>

##
[0.29.0](AztecProtocol/aztec-packages@barretenberg-v0.28.1...barretenberg-v0.29.0)
(2024-03-18)


### ⚠ BREAKING CHANGES

* Acir call opcode
([#4773](AztecProtocol/aztec-packages#4773))

### Features

* Acir call opcode
([#4773](AztecProtocol/aztec-packages#4773))
([0b15db2](AztecProtocol/aztec-packages@0b15db2))
* Add RelWithAssert build
([#4997](AztecProtocol/aztec-packages#4997))
([4f337c7](AztecProtocol/aztec-packages@4f337c7))
* **avm:** Mov opcode with direct memory
([#5204](AztecProtocol/aztec-packages#5204))
([08f9038](AztecProtocol/aztec-packages@08f9038)),
closes
[#5159](AztecProtocol/aztec-packages#5159)
* Extended IPA tests and fuzzing
([#5140](AztecProtocol/aztec-packages#5140))
([0ae5ace](AztecProtocol/aztec-packages@0ae5ace))
* Initial Earthly CI
([#5069](AztecProtocol/aztec-packages#5069))
([8e75fe5](AztecProtocol/aztec-packages@8e75fe5))
* Remove unnecessary `mulmod`s from verifier contract
([#5269](AztecProtocol/aztec-packages#5269))
([20d9c0c](AztecProtocol/aztec-packages@20d9c0c))
* Signed integer division and modulus in brillig gen
([#5279](AztecProtocol/aztec-packages#5279))
([82f8cf5](AztecProtocol/aztec-packages@82f8cf5))


### Bug Fixes

* **bb:** Mac build
([#5253](AztecProtocol/aztec-packages#5253))
([ae021c0](AztecProtocol/aztec-packages@ae021c0))
* CVC5 api update
([#5203](AztecProtocol/aztec-packages#5203))
([9cc32cb](AztecProtocol/aztec-packages@9cc32cb))


### Miscellaneous

* Template Zeromorph by PCS
([#5215](AztecProtocol/aztec-packages#5215))
([03feab2](AztecProtocol/aztec-packages@03feab2))
</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
4 participants