Skip to content

feat: truncate SHA hashes inside circuits#5160

Merged
MirandaWood merged 48 commits intomasterfrom
mw/truncate-sha
Mar 21, 2024
Merged

feat: truncate SHA hashes inside circuits#5160
MirandaWood merged 48 commits intomasterfrom
mw/truncate-sha

Conversation

@MirandaWood
Copy link
Contributor

@MirandaWood MirandaWood commented Mar 12, 2024

Will close #2019

This PR converts SHA hashing inside noir circuits from outputting 2 128-bit fields to outputting 1 248-bit field. To fit inside the field, we truncate one byte.


Noir Changes

The constant NUM_FIELDS_PER_SHA256 is now 1, so any hardcoded test values and function returns have been changed to use an array of one. I've kept it as an array rather than a single Fr to minimise changes across the repo and ensure if we want to revert NUM_FIELDS_PER_SHA256 in future, it won't be so painful. However, we can also just use a single Fr if that's preferable.

TX_EFFECTS_HASH_LOG_FIELDS

Methods:

  • field_from_bytes_32_trunc: Converts a 32 byte array to a 31 byte field element (useful for comparisons with new sha256_to_field), tests in types/src/utils/field.nr.
  • sha256_to_field: Uses the same method as the previous version to convert the sha result (BE) bytes array to field, but leaves out the final byte.
  • accumulate_sha256: Used almost exclusively for enc/unenc logs hashing - takes in 2 31 byte field elements, assumed to be outputs of a previous sha hash, pads to 32 bytes and hashes them with sha256_to_field as a 64 byte array. Note that as before, other circuits that use sha (like tx effects hash and messages hash) do not use this method and instead create a flat byte array, then call sha256_to_field.

L1 Contract Changes

To match the Noir method, the sha256ToField function now truncates a byte and prepends a blank byte. Not prepending the blank byte means changing many struct fields from bytes32 to bytes31. This (IIRC) is the same gas cost and creates more awkward encoding, so I kept the length with a blank byte. This also changes the slither file, as I removed some of the old encoding which flagged with new encoding... which also flags.

Only the 'leaves' used in computing the txsHash in TxsDecoder and logs hashes have been changed to 31 bytes to match the Noir SHA accumulation (since we are repeating hashes of hashes).

The TS code (see below) does pack the Header struct with 31 bytes per SHA, so we must shift the decoding in HeaderLib` by 3 bytes.

As of 21.3, there have been a lot of changes in master to the way the txs effect hash (formerly calldata hash/txs hash) is calculated. Plus, now we actually recalculate the in/outHash (i.e. the root of the sha tree of messages) in the contract, so I have reverted to using 32 bytes everywhere with a prepended blank byte.


TS Changes

All .hash() methods which are also computed in the circuit have been changed to match the Noir code. In most places this just means truncating a byte with .subarray(0, 31) on the buffer.
The ContentCommitment serialise/deserialise methods have been modified, as keeping NUM_BYTES_PER_SHA256 = 32 caused a lot of issues in the background. Changing it to 31 to match Noir does mean slightly different encoding, but many fewer changes across the repo (and hopefully less confusion).
As of 21.3, due to changes in master, it's now cleaner to keep NUM_BYTES_PER_SHA256 = 32 and be sure to truncate and pad all SHA hashes which touch the Noir circuits.
Since I've kept the hash output as an array of one in Noir, there are many tuples of one in ts (for the above reasoning) - this can be changed if preferable.

Methods:

  • toTruncField: Mirrors Noir's field_from_bytes_32_trunc to convert to a field element - used in place of old method to2Fields (tested in free_funcs.test.ts).
  • fromTruncField: Converts the above back to a 31 byte buffer (tested as above).

@MirandaWood MirandaWood self-assigned this Mar 12, 2024
@github-actions
Copy link
Contributor

github-actions bot commented Mar 12, 2024

Changes to circuit sizes

Generated at commit: 8841a4b1f2ec172931a26f13038dce6754fd35bd, compared to commit: 0f09b63dc40969e9c5ac810faad1422abb40f586

🧾 Summary (100% most significant diffs)

Program ACIR opcodes (+/-) % Circuit size (+/-) %
parity_base -728 ✅ -60.26% 0 ➖ 0.00%
rollup_merge -160 ✅ -30.89% 0 ➖ 0.00%
rollup_root -160 ✅ -14.65% 0 ➖ 0.00%
parity_root -240 ✅ -33.33% 0 ➖ 0.00%
private_kernel_tail -5 ✅ -0.00% -10 ✅ -0.00%
public_kernel_tail -7 ✅ -0.01% -12 ✅ -0.00%
rollup_base -56 ✅ -0.03% -1,112 ✅ -0.06%
private_kernel_init -115 ✅ -0.24% -389 ✅ -0.11%
private_kernel_inner -167 ✅ -0.17% -2,047 ✅ -0.39%
public_kernel_setup_simulated -5 ✅ -0.55% -10 ✅ -0.55%
public_kernel_tail_simulated -5 ✅ -0.55% -10 ✅ -0.55%
public_kernel_app_logic_simulated -5 ✅ -0.55% -10 ✅ -0.55%
public_kernel_teardown_simulated -5 ✅ -0.55% -10 ✅ -0.55%
private_kernel_inner_simulated -5 ✅ -0.55% -10 ✅ -0.55%
private_kernel_init_simulated -5 ✅ -0.55% -10 ✅ -0.55%
public_kernel_setup -90 ✅ -0.31% -1,541 ✅ -0.84%
public_kernel_teardown -132 ✅ -0.45% -1,583 ✅ -0.86%
public_kernel_app_logic -166 ✅ -0.30% -2,747 ✅ -0.87%
private_kernel_tail_simulated -5 ✅ -1.10% -10 ✅ -1.09%
rollup_base_simulated 0 ➖ 0.00% -2 ✅ -5.71%

Full diff report 👇
Program ACIR opcodes (+/-) % Circuit size (+/-) %
parity_base 480 (-728) -60.26% 79,811 (0) 0.00%
rollup_merge 358 (-160) -30.89% 45,970 (0) 0.00%
rollup_root 932 (-160) -14.65% 77,898 (0) 0.00%
parity_root 480 (-240) -33.33% 79,811 (0) 0.00%
private_kernel_tail 373,472 (-5) -0.00% 839,573 (-10) -0.00%
public_kernel_tail 124,962 (-7) -0.01% 358,953 (-12) -0.00%
rollup_base 171,459 (-56) -0.03% 1,730,700 (-1,112) -0.06%
private_kernel_init 48,592 (-115) -0.24% 348,602 (-389) -0.11%
private_kernel_inner 95,831 (-167) -0.17% 519,398 (-2,047) -0.39%
public_kernel_setup_simulated 903 (-5) -0.55% 1,809 (-10) -0.55%
public_kernel_tail_simulated 903 (-5) -0.55% 1,809 (-10) -0.55%
public_kernel_app_logic_simulated 903 (-5) -0.55% 1,809 (-10) -0.55%
public_kernel_teardown_simulated 903 (-5) -0.55% 1,809 (-10) -0.55%
private_kernel_inner_simulated 902 (-5) -0.55% 1,807 (-10) -0.55%
private_kernel_init_simulated 902 (-5) -0.55% 1,807 (-10) -0.55%
public_kernel_setup 29,330 (-90) -0.31% 182,766 (-1,541) -0.84%
public_kernel_teardown 29,397 (-132) -0.45% 182,834 (-1,583) -0.86%
public_kernel_app_logic 56,052 (-166) -0.30% 314,134 (-2,747) -0.87%
private_kernel_tail_simulated 451 (-5) -1.10% 905 (-10) -1.09%
rollup_base_simulated 1 (0) 0.00% 33 (-2) -5.71%

@MirandaWood MirandaWood marked this pull request as ready for review March 13, 2024 11:03
@AztecBot
Copy link
Collaborator

AztecBot commented Mar 13, 2024

Benchmark results

Metrics with a significant change:

  • note_history_successful_decrypting_time_in_ms (10): 3,087 (+25%)
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 0f09b63d 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 676 676 676
l1_rollup_calldata_gas 6,400 6,400 (-1%) 6,424
l1_rollup_execution_gas 585,733 (+1%) 585,733 (+1%) 585,757 (+1%)
l2_block_processing_time_in_ms 1,444 (+10%) 4,697 (-3%) 8,912 (-2%)
note_successful_decrypting_time_in_ms 173 (-11%) 548 (-2%) 1,007 (-3%)
note_trial_decrypting_time_in_ms 78.6 (-24%) 65.2 (-18%) 37.7 (-32%)
l2_block_building_time_in_ms 17,790 65,352 (-3%) 128,552 (-4%)
l2_block_rollup_simulation_time_in_ms 8,486 (+5%) 28,467 (-1%) 55,439 (-2%)
l2_block_public_tx_process_time_in_ms 9,284 (-5%) 36,829 (-5%) 73,021 (-5%)

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 13,997 (-2%) 27,454 (+2%)
note_history_successful_decrypting_time_in_ms 1,280 (+2%) ⚠️ 3,087 (+25%)
note_history_trial_decrypting_time_in_ms 110 (+13%) 173 (-10%)
node_database_size_in_bytes 18,653,264 35,082,320
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 240 (-15%) 44,302 28,181
private-kernel-ordering 213 (-2%) 52,805 14,263
base-parity 1,852 (+1%) 128 311
base-rollup 712 (-1%) 165,724 861 (-7%)
root-parity 1,624 (+1%) 1,244 311
root-rollup 50.2 (-4%) 4,359 (-3%) 725
private-kernel-inner 593 (-10%) 73,644 28,181
public-kernel-app-logic 398 (-8%) 35,164 28,151
public-kernel-tail 172 (-2%) 40,862 28,151
merge-rollup 7.13 (-17%) 2,568 (-5%) 861 (-7%)

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 10.0 (-1%) 16.1 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.584 (-1%) 0.496 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.8 (-4%) 73.1 (+1%) 232 447 (-2%) 875 (+1%) 1,725 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.470 (-4%) 0.451 (+1%) 0.422 0.418 (-2%) 0.415 (+1%) 0.413 N/A
batch_insert_into_indexed_tree_20_depth_ms N/A N/A 53.7 (-4%) 106 (-1%) 336 (-1%) 670 1,309 (-1%) 2,617 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.478 (-4%) 0.479 0.457 (-1%) 0.460 0.454 0.453 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 61.2 (-3%)
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.534 (-3%)

Miscellaneous

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

Metric 0 registered classes
tx_size_in_bytes 21,949

Transaction processing duration by data writes.

Metric 0 new note hashes 1 new note hashes
tx_pxe_processing_time_ms 3,087 (-3%) 1,648 (-7%)
Metric 0 public data writes 1 public data writes
tx_sequencer_processing_time_ms 11.1 (-17%) 1,144 (-7%)

Copy link
Contributor

@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.

Just some small things and questions. Looks good overall 😃

// Computes the messages hash from the leaves array
//
// Returns the hash split into two field elements
// TODO(Miranda): should this be merged with a generic version of accumulate_sha256? (The logic is largely the same)
Copy link
Contributor

Choose a reason for hiding this comment

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

Sounds good!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I had a go at this, but found the gas cost would increase quite a lot in replicating for calculating the inHash. Basically, l1toL2Msgs are stored in bytes32 in solidity so replicating the accumulate nr hash requires truncating each one manually over a loop, then concatenating and hashing.
Unfortunately, to avoid casting issues, I've already changed other hashes (like the txEffectHash) to be bytes31 so this creates a discrepancy. Perhaps in another PR I have two choices:

  • force all sha hashes that are touched in nr to be bytes31 (requires a lot of changes in ts/sol and possibly higher gas)
  • revert the hashes that I have cast to bytes31, and prepend/drop a byte where required in solidity (probably messier code)

I think both are valid choices, so would appreciate a pointer!

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 have decided to go for 32 bytes everywhere, however we would require two generics in accumulate_sha256 - one for the number of input fields and one for 32 * that number. Unfortunately Noir doesn't realise 32*N can be known at compile time, so I would need another generic or some constant, which wouldn't make sense.
I did notice though that this function (compute_messages_hash) now appears to be unused, so perhaps this is not a problem anymore?

reader.readArray(NUM_FIELDS_PER_SHA256, Fr) as [Fr, Fr],
reader.readArray(NUM_FIELDS_PER_SHA256, Fr) as [Fr, Fr],
reader.readArray(NUM_FIELDS_PER_SHA256, Fr) as [Fr],
reader.readArray(NUM_FIELDS_PER_SHA256, Fr) as [Fr],
Copy link
Contributor

Choose a reason for hiding this comment

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

Can probably drop the as [Fr]s?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Doable but as it will touch a lot of files, I will do this in a future PR if that's ok!

* @return The hash of the provided data as a field element
*/
function sha256ToField32(bytes memory _data) internal pure returns (bytes32) {
return bytes32(bytes.concat(new bytes(1), bytes31(sha256(_data))));
Copy link
Contributor Author

Choose a reason for hiding this comment

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

In integrating the truncated SHA into this PR, I discovered a discrepancy in byte casting between Solidity and Noir/ts.
e.g. say normal sha256 gives a result of 0x2e7ff14389eef3dc51597529149e01b49cb33829f7089438c8c145c8f352c17b.
In Solidity the cleanest way it seems to drop a byte is bytes31(thing). Turning it back into a bytes32 for checks and structs gives:
0x2e7ff14389eef3dc51597529149e01b49cb33829f7089438c8c145c8f352c100.

However, both toBuffer() in ts and to_be_bytes() in Noir would give:
0x002e7ff14389eef3dc51597529149e01b49cb33829f7089438c8c145c8f352c1

The solidity version fails in-field checks since it still fills the most significant bytes, so I went for the Noir/TS version wherever checks are needed. That's why in some places sha256ToField32 is used, and in others sha256ToField (which returns bytes31).
I also changed logs hashes to be treated as bytes31 wherever possible to avoid any issues with casting. The above fixes are a bit janky so I'm happy for any feedback on them.

@MirandaWood MirandaWood merged commit 9dc0d2a into master Mar 21, 2024
@MirandaWood MirandaWood deleted the mw/truncate-sha branch March 21, 2024 18:15
AztecBot pushed a commit to noir-lang/noir that referenced this pull request Mar 21, 2024
…es#5160)

Will close #2019

This PR converts SHA hashing inside noir circuits from outputting 2
128-bit fields to outputting 1 248-bit field. To fit inside the field,
we truncate one byte.

---
### Noir Changes

The constant `NUM_FIELDS_PER_SHA256` is now 1, so any hardcoded test
values and function returns have been changed to use an array of one.
I've kept it as an array rather than a single `Fr` to minimise changes
across the repo and ensure if we want to revert `NUM_FIELDS_PER_SHA256`
in future, it won't be so painful. However, we can also just use a
single `Fr` if that's preferable.

`TX_EFFECTS_HASH_LOG_FIELDS`

Methods:

- `field_from_bytes_32_trunc`: Converts a 32 byte array to a 31 byte
field element (useful for comparisons with new `sha256_to_field`), tests
in `types/src/utils/field.nr`.
- `sha256_to_field`: Uses the same method as the previous version to
convert the sha result (BE) bytes array to field, but leaves out the
final byte.
- `accumulate_sha256`: Used almost exclusively for enc/unenc logs
hashing - takes in 2 31 byte field elements, assumed to be outputs of a
previous sha hash, pads to 32 bytes and hashes them with
`sha256_to_field` as a 64 byte array. Note that as before, other
circuits that use sha (like tx effects hash and messages hash) do not
use this method and instead create a flat byte array, then call
`sha256_to_field`.

---
### L1 Contract Changes

To match the Noir method, the `sha256ToField` function now truncates a
byte and prepends a blank byte. Not prepending the blank byte means
changing many struct fields from `bytes32` to `bytes31`. This (IIRC) is
the same gas cost and creates more awkward encoding, so I kept the
length with a blank byte. This also changes the slither file, as I
removed some of the old encoding which flagged with new encoding...
which also flags.

~Only the 'leaves' used in computing the `txsHash` in `TxsDecoder` and
logs hashes have been changed to 31 bytes to match the Noir SHA
accumulation (since we are repeating hashes of hashes).~

~The TS code (see below) does pack the Header struct with 31 bytes per
SHA, so we must shift the decoding in HeaderLib` by 3 bytes.~

As of 21.3, there have been a lot of changes in master to the way the
txs effect hash (formerly calldata hash/txs hash) is calculated. Plus,
now we actually recalculate the in/outHash (i.e. the root of the sha
tree of messages) in the contract, so I have reverted to using 32 bytes
everywhere with a prepended blank byte.

---
### TS Changes

All `.hash()` methods which are also computed in the circuit have been
changed to match the Noir code. In most places this just means
truncating a byte with `.subarray(0, 31)` on the buffer.
~The `ContentCommitment` serialise/deserialise methods have been
modified, as keeping `NUM_BYTES_PER_SHA256 = 32` caused a lot of issues
in the background. Changing it to 31 to match Noir does mean slightly
different encoding, but many fewer changes across the repo (and
hopefully less confusion).~
As of 21.3, due to changes in master, it's now cleaner to keep
`NUM_BYTES_PER_SHA256 = 32` and be sure to truncate and pad all SHA
hashes which touch the Noir circuits.
Since I've kept the hash output as an array of one in Noir, there are
many tuples of one in ts (for the above reasoning) - this can be changed
if preferable.

Methods:

- `toTruncField`: Mirrors Noir's `field_from_bytes_32_trunc` to convert
to a field element - used in place of old method `to2Fields` (tested in
`free_funcs.test.ts`).
- `fromTruncField`: Converts the above back to a 31 byte buffer (tested
as above).

---
sklppy88 pushed a commit that referenced this pull request Mar 22, 2024
Will close #2019

This PR converts SHA hashing inside noir circuits from outputting 2
128-bit fields to outputting 1 248-bit field. To fit inside the field,
we truncate one byte.

---
### Noir Changes

The constant `NUM_FIELDS_PER_SHA256` is now 1, so any hardcoded test
values and function returns have been changed to use an array of one.
I've kept it as an array rather than a single `Fr` to minimise changes
across the repo and ensure if we want to revert `NUM_FIELDS_PER_SHA256`
in future, it won't be so painful. However, we can also just use a
single `Fr` if that's preferable.

`TX_EFFECTS_HASH_LOG_FIELDS`

Methods:

- `field_from_bytes_32_trunc`: Converts a 32 byte array to a 31 byte
field element (useful for comparisons with new `sha256_to_field`), tests
in `types/src/utils/field.nr`.
- `sha256_to_field`: Uses the same method as the previous version to
convert the sha result (BE) bytes array to field, but leaves out the
final byte.
- `accumulate_sha256`: Used almost exclusively for enc/unenc logs
hashing - takes in 2 31 byte field elements, assumed to be outputs of a
previous sha hash, pads to 32 bytes and hashes them with
`sha256_to_field` as a 64 byte array. Note that as before, other
circuits that use sha (like tx effects hash and messages hash) do not
use this method and instead create a flat byte array, then call
`sha256_to_field`.

---
### L1 Contract Changes

To match the Noir method, the `sha256ToField` function now truncates a
byte and prepends a blank byte. Not prepending the blank byte means
changing many struct fields from `bytes32` to `bytes31`. This (IIRC) is
the same gas cost and creates more awkward encoding, so I kept the
length with a blank byte. This also changes the slither file, as I
removed some of the old encoding which flagged with new encoding...
which also flags.

~Only the 'leaves' used in computing the `txsHash` in `TxsDecoder` and
logs hashes have been changed to 31 bytes to match the Noir SHA
accumulation (since we are repeating hashes of hashes).~

~The TS code (see below) does pack the Header struct with 31 bytes per
SHA, so we must shift the decoding in HeaderLib` by 3 bytes.~

As of 21.3, there have been a lot of changes in master to the way the
txs effect hash (formerly calldata hash/txs hash) is calculated. Plus,
now we actually recalculate the in/outHash (i.e. the root of the sha
tree of messages) in the contract, so I have reverted to using 32 bytes
everywhere with a prepended blank byte.

---
### TS Changes

All `.hash()` methods which are also computed in the circuit have been
changed to match the Noir code. In most places this just means
truncating a byte with `.subarray(0, 31)` on the buffer.
~The `ContentCommitment` serialise/deserialise methods have been
modified, as keeping `NUM_BYTES_PER_SHA256 = 32` caused a lot of issues
in the background. Changing it to 31 to match Noir does mean slightly
different encoding, but many fewer changes across the repo (and
hopefully less confusion).~
As of 21.3, due to changes in master, it's now cleaner to keep
`NUM_BYTES_PER_SHA256 = 32` and be sure to truncate and pad all SHA
hashes which touch the Noir circuits.
Since I've kept the hash output as an array of one in Noir, there are
many tuples of one in ts (for the above reasoning) - this can be changed
if preferable.

Methods:

- `toTruncField`: Mirrors Noir's `field_from_bytes_32_trunc` to convert
to a field element - used in place of old method `to2Fields` (tested in
`free_funcs.test.ts`).
- `fromTruncField`: Converts the above back to a 31 byte buffer (tested
as above).

---
MirandaWood added a commit that referenced this pull request Mar 22, 2024
Continuation of #5160

This PR removes all reference to NUM_FIELDS_PER_SHA256, as we are
truncating SHAs to 31 bytes inside the circuits/contracts, so they can
be represented as a single field.

It also tidies up `toTruncField(sha256(thing))` using a new TS method
`sha256ToField`. `toTruncField` now never actually truncates the number,
as it expects a truncated output from `sha256ToField` or directly from
Noir, which should solve any issues with tests where test values weren't
getting truncated correctly.

---------

Co-authored-by: sklppy88 <esau@aztecprotocol.com>
Co-authored-by: esau <152162806+sklppy88@users.noreply.github.com>
rahul-kothari pushed a commit that referenced this pull request Mar 26, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.31.0](aztec-package-v0.30.1...aztec-package-v0.31.0)
(2024-03-26)


### Features

* Add batched signerless contract calls
([#5313](#5313))
([be60eb3](be60eb3))
* Dynamic proving
([#5346](#5346))
([6a7ccca](6a7ccca))
* Less earthly runners + e2e GA runners, bb bench
([#5356](#5356))
([2136a66](2136a66))
</details>

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

##
[0.31.0](barretenberg.js-v0.30.1...barretenberg.js-v0.31.0)
(2024-03-26)


### Features

* Earthly bb tests + arm + satellites
([#5268](#5268))
([eca12b3](eca12b3))
* Less earthly runners + e2e GA runners, bb bench
([#5356](#5356))
([2136a66](2136a66))
* Simplified bb Honk interface
([#5319](#5319))
([a2d138f](a2d138f))
</details>

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

##
[0.31.0](aztec-cli-v0.30.1...aztec-cli-v0.31.0)
(2024-03-26)


### Features

* Capture broadcasted functions in node
([#5353](#5353))
([bc05db2](bc05db2))


### Bug Fixes

* **cli:** Support initializers not named constructor in cli
([#5397](#5397))
([85f14c5](85f14c5))
</details>

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

##
[0.31.0](aztec-packages-v0.30.1...aztec-packages-v0.31.0)
(2024-03-26)


### ⚠ BREAKING CHANGES

* **avm:** per function avm run
([#5421](#5421))
* rename storage inclusion proof to historical storage read
([#5379](#5379))
* plug-in new outbox and update examples to use api to fetch inclusion
proofs #4769
([#5292](#5292))
* Mark transactions as reverted on L1
([#5226](#5226))

### Features

* Add batched signerless contract calls
([#5313](#5313))
([be60eb3](be60eb3))
* Add specific error for attempting `string[x] = ".."`
(noir-lang/noir#4611)
([13a12d5](13a12d5))
* **AuthWit:** Chain_id and version in hash
([#5331](#5331))
([5235c95](5235c95))
* **Authwit:** Lookup the validity of authwits
([#5316](#5316))
([7c24870](7c24870))
* Avm lookup and/or/xor
([#5338](#5338))
([489bc2c](489bc2c))
* **avm:** Add AvmContextInputs
([#5396](#5396))
([12e2844](12e2844))
* **avm:** Per function avm run
([#5421](#5421))
([f024751](f024751))
* **avm:** Track gas usage in AVM simulator
([#5438](#5438))
([4884d83](4884d83))
* Capture broadcasted functions in node
([#5353](#5353))
([bc05db2](bc05db2))
* Dynamic proving
([#5346](#5346))
([6a7ccca](6a7ccca))
* Earthly bb tests + arm + satellites
([#5268](#5268))
([eca12b3](eca12b3))
* Fix awkward snippet indention in docs
([#5367](#5367))
([c55d3da](c55d3da))
* Fold proving key polys instead of prover polys
([#5436](#5436))
([239ebfb](239ebfb))
* Implement serdes for u64
[#4990](#4990)
([#5411](#5411))
([5a6bcef](5a6bcef))
* Introduce max_block_number
([#5251](#5251))
([6573173](6573173))
* Less earthly runners + e2e GA runners, bb bench
([#5356](#5356))
([2136a66](2136a66))
* Mark transactions as reverted on L1
([#5226](#5226))
([40ecc02](40ecc02))
* Plug-in new outbox and update examples to use api to fetch inclusion
proofs
[#4769](#4769)
([#5292](#5292))
([fec1008](fec1008))
* Read_calldata
([#5409](#5409))
([034fbf0](034fbf0))
* Remove NUM_FIELDS_PER_SHA256
([#5392](#5392))
([86a181b](86a181b))
* Rename storage inclusion proof to historical storage read
([#5379](#5379))
([b6e7216](b6e7216))
* Returning non-nullified messages only
([#5390](#5390))
([4c671be](4c671be))
* Simplified bb Honk interface
([#5319](#5319))
([a2d138f](a2d138f))
* Simplify offsets and sizing using new block structure
([#5404](#5404))
([efa0842](efa0842))
* Throw by default when awaiting a tx that reverted
([#5431](#5431))
([c9113ec](c9113ec))
* Truncate SHA hashes inside circuits
([#5160](#5160))
([9dc0d2a](9dc0d2a))
* Unified CircuitChecker interface
([#5343](#5343))
([13cef1f](13cef1f))
* ZeroMorph working with IPA and integration with ECCVM
([#5246](#5246))
([c4dce94](c4dce94))


### Bug Fixes

* Addressing flakiness of `uniswap_trade_on_l1_from_l2.test.ts`
([#5443](#5443))
([2db9cad](2db9cad))
* **avm-simulator:** Hashing opcodes indirection
([#5376](#5376))
([a4b1ebc](a4b1ebc))
* Broadcasting unconstrained function with empty sibling
([#5429](#5429))
([933145e](933145e))
* **ci:** Disable uniswap test in earthly build
([#5344](#5344))
([0d69162](0d69162))
* **cli:** Support initializers not named constructor in cli
([#5397](#5397))
([85f14c5](85f14c5))
* Copy and deploy complete contents of l1-contracts
([#5447](#5447))
([501c5e9](501c5e9))
* Don't cancel protocol-circuits-gate-diff in master
([#5441](#5441))
([6894a78](6894a78))
* E2e_static_calls.test.ts bad merge
([#5405](#5405))
([4c56536](4c56536))
* Generate noir interface for constructors
([#5352](#5352))
([8434d2f](8434d2f))
* Limit earthly to few users
([#5375](#5375))
([71e8ab4](71e8ab4))
* Login to dockerhub before 'docker compose'
([#5440](#5440))
([4f7696b](4f7696b))
* Revert cbind breakage
([#5348](#5348))
([c237193](c237193))
* **ssa:** Use accurate type during SSA AsSlice simplficiation
(noir-lang/noir#4610)
([13a12d5](13a12d5))
* Track class registered count in tx stats
([#5417](#5417))
([ff8eafc](ff8eafc))
* Watch command should not spawn more than one tsc watch
([#5391](#5391))
([25caf4d](25caf4d))


### Miscellaneous

* Always use serialize function to get hash preimage in noir circuits or
when comparing structs etc
[#3595](#3595)
([#5439](#5439))
([22e0f0d](22e0f0d))
* **aztec-nr:** Unify contexts behind interfaces
([#5294](#5294))
([36e0f59](36e0f59))
* **bb:** Removed powers of eta in lookup and auxiliary relations
([#4695](#4695))
([f4e62ae](f4e62ae))
* CamelCase in noir-projects -&gt; snake_case
([#5381](#5381))
([eea711f](eea711f))
* **ci:** Create a dedicated job for the AVM unit tests
([#5369](#5369))
([59ca2ac](59ca2ac)),
closes
[#5366](#5366)
* Clean out prover instance and remove instance from oink
([#5314](#5314))
([a83368c](a83368c))
* Cleaning up messaging types
([#5442](#5442))
([dfffe5d](dfffe5d)),
closes
[#5420](#5420)
* Compute registerer address on the fly
([#5394](#5394))
([5d669b9](5d669b9))
* Delete slither output from version control
([#5393](#5393))
([41107e3](41107e3))
* Fix migration notes
([#5452](#5452))
([8c4e576](8c4e576))
* **github:** Improve PR template "document later" checkbox description
(noir-lang/noir#4625)
([13a12d5](13a12d5))
* Make get_notes fail if returning no notes
[#4988](#4988)
([#5320](#5320))
([be86ed3](be86ed3))
* Meld flavor and and circuit builder modules
([#5406](#5406))
([f0d9d1b](f0d9d1b))
* Messaging naming fixes
([#5383](#5383))
([0226102](0226102))
* Moving public inputs back to instance
([#5315](#5315))
([9cbe368](9cbe368))
* Name change: gen perm sort to delta range constraint
([#5378](#5378))
([841855f](841855f))
* Nuking l1 to l2 messages from block body
([#5272](#5272))
([ee176d2](ee176d2)),
closes
[#5072](#5072)
* Reduce size of revert code from Field to u8
([#5309](#5309))
([1868e25](1868e25))
* Remove mocking function in `EccOpQueue` again
([#5413](#5413))
([6fb4a75](6fb4a75))
* Remove snapshots from protocol-contracts
([#5342](#5342))
([31ca344](31ca344))
* Remove unused FunctionLeafPreimage struct
([#5354](#5354))
([dc51c2b](dc51c2b))
* Rename reverted to revertCode
([#5301](#5301))
([950a96d](950a96d))
* Replace relative paths to noir-protocol-circuits
([262ae02](262ae02))
* Replace relative paths to noir-protocol-circuits
([91a60db](91a60db))
* Replace relative paths to noir-protocol-circuits
([9fc9fbd](9fc9fbd))
* Replace relative paths to noir-protocol-circuits
([9939e99](9939e99))
* Replace relative paths to noir-protocol-circuits
([0b24aae](0b24aae))
* Replace relative paths to noir-protocol-circuits
([c4d89d5](c4d89d5))
* Reverting accidental changes
([#5371](#5371))
([c1484ce](c1484ce))
* Skip foundry install if possible
([#5398](#5398))
([060fa1e](060fa1e))
* Skip slither in docker
([#5384](#5384))
([8a76068](8a76068))
* Update docs with function names to match version 0.25.0 specifications
(noir-lang/noir#4466)
([13a12d5](13a12d5))
* Update integers.md to note support for Fields using `from_integer`
(noir-lang/noir#4536)
([13a12d5](13a12d5))
* Update min compiler version of contracts
([#5305](#5305))
([dcf6bb3](dcf6bb3))
* Use random tmp directory and cleanup afterwards
([#5368](#5368))
([5c0e15d](5c0e15d))


### Documentation

* Update versions-updating.md
([#5358](#5358))
([0f09b63](0f09b63))
</details>

<details><summary>barretenberg: 0.31.0</summary>

##
[0.31.0](barretenberg-v0.30.1...barretenberg-v0.31.0)
(2024-03-26)


### Features

* Avm lookup and/or/xor
([#5338](#5338))
([489bc2c](489bc2c))
* Earthly bb tests + arm + satellites
([#5268](#5268))
([eca12b3](eca12b3))
* Fold proving key polys instead of prover polys
([#5436](#5436))
([239ebfb](239ebfb))
* Less earthly runners + e2e GA runners, bb bench
([#5356](#5356))
([2136a66](2136a66))
* Read_calldata
([#5409](#5409))
([034fbf0](034fbf0))
* Simplified bb Honk interface
([#5319](#5319))
([a2d138f](a2d138f))
* Simplify offsets and sizing using new block structure
([#5404](#5404))
([efa0842](efa0842))
* Unified CircuitChecker interface
([#5343](#5343))
([13cef1f](13cef1f))
* ZeroMorph working with IPA and integration with ECCVM
([#5246](#5246))
([c4dce94](c4dce94))


### Bug Fixes

* Revert cbind breakage
([#5348](#5348))
([c237193](c237193))


### Miscellaneous

* **bb:** Removed powers of eta in lookup and auxiliary relations
([#4695](#4695))
([f4e62ae](f4e62ae))
* **ci:** Create a dedicated job for the AVM unit tests
([#5369](#5369))
([59ca2ac](59ca2ac)),
closes
[#5366](#5366)
* Clean out prover instance and remove instance from oink
([#5314](#5314))
([a83368c](a83368c))
* Meld flavor and and circuit builder modules
([#5406](#5406))
([f0d9d1b](f0d9d1b))
* Moving public inputs back to instance
([#5315](#5315))
([9cbe368](9cbe368))
* Name change: gen perm sort to delta range constraint
([#5378](#5378))
([841855f](841855f))
* Remove mocking function in `EccOpQueue` again
([#5413](#5413))
([6fb4a75](6fb4a75))
</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 27, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.31.0](AztecProtocol/aztec-packages@aztec-package-v0.30.1...aztec-package-v0.31.0)
(2024-03-26)


### Features

* Add batched signerless contract calls
([#5313](AztecProtocol/aztec-packages#5313))
([be60eb3](AztecProtocol/aztec-packages@be60eb3))
* Dynamic proving
([#5346](AztecProtocol/aztec-packages#5346))
([6a7ccca](AztecProtocol/aztec-packages@6a7ccca))
* Less earthly runners + e2e GA runners, bb bench
([#5356](AztecProtocol/aztec-packages#5356))
([2136a66](AztecProtocol/aztec-packages@2136a66))
</details>

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

##
[0.31.0](AztecProtocol/aztec-packages@barretenberg.js-v0.30.1...barretenberg.js-v0.31.0)
(2024-03-26)


### Features

* Earthly bb tests + arm + satellites
([#5268](AztecProtocol/aztec-packages#5268))
([eca12b3](AztecProtocol/aztec-packages@eca12b3))
* Less earthly runners + e2e GA runners, bb bench
([#5356](AztecProtocol/aztec-packages#5356))
([2136a66](AztecProtocol/aztec-packages@2136a66))
* Simplified bb Honk interface
([#5319](AztecProtocol/aztec-packages#5319))
([a2d138f](AztecProtocol/aztec-packages@a2d138f))
</details>

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

##
[0.31.0](AztecProtocol/aztec-packages@aztec-cli-v0.30.1...aztec-cli-v0.31.0)
(2024-03-26)


### Features

* Capture broadcasted functions in node
([#5353](AztecProtocol/aztec-packages#5353))
([bc05db2](AztecProtocol/aztec-packages@bc05db2))


### Bug Fixes

* **cli:** Support initializers not named constructor in cli
([#5397](AztecProtocol/aztec-packages#5397))
([85f14c5](AztecProtocol/aztec-packages@85f14c5))
</details>

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

##
[0.31.0](AztecProtocol/aztec-packages@aztec-packages-v0.30.1...aztec-packages-v0.31.0)
(2024-03-26)


### ⚠ BREAKING CHANGES

* **avm:** per function avm run
([#5421](AztecProtocol/aztec-packages#5421))
* rename storage inclusion proof to historical storage read
([#5379](AztecProtocol/aztec-packages#5379))
* plug-in new outbox and update examples to use api to fetch inclusion
proofs #4769
([#5292](AztecProtocol/aztec-packages#5292))
* Mark transactions as reverted on L1
([#5226](AztecProtocol/aztec-packages#5226))

### Features

* Add batched signerless contract calls
([#5313](AztecProtocol/aztec-packages#5313))
([be60eb3](AztecProtocol/aztec-packages@be60eb3))
* Add specific error for attempting `string[x] = ".."`
(noir-lang/noir#4611)
([13a12d5](AztecProtocol/aztec-packages@13a12d5))
* **AuthWit:** Chain_id and version in hash
([#5331](AztecProtocol/aztec-packages#5331))
([5235c95](AztecProtocol/aztec-packages@5235c95))
* **Authwit:** Lookup the validity of authwits
([#5316](AztecProtocol/aztec-packages#5316))
([7c24870](AztecProtocol/aztec-packages@7c24870))
* Avm lookup and/or/xor
([#5338](AztecProtocol/aztec-packages#5338))
([489bc2c](AztecProtocol/aztec-packages@489bc2c))
* **avm:** Add AvmContextInputs
([#5396](AztecProtocol/aztec-packages#5396))
([12e2844](AztecProtocol/aztec-packages@12e2844))
* **avm:** Per function avm run
([#5421](AztecProtocol/aztec-packages#5421))
([f024751](AztecProtocol/aztec-packages@f024751))
* **avm:** Track gas usage in AVM simulator
([#5438](AztecProtocol/aztec-packages#5438))
([4884d83](AztecProtocol/aztec-packages@4884d83))
* Capture broadcasted functions in node
([#5353](AztecProtocol/aztec-packages#5353))
([bc05db2](AztecProtocol/aztec-packages@bc05db2))
* Dynamic proving
([#5346](AztecProtocol/aztec-packages#5346))
([6a7ccca](AztecProtocol/aztec-packages@6a7ccca))
* Earthly bb tests + arm + satellites
([#5268](AztecProtocol/aztec-packages#5268))
([eca12b3](AztecProtocol/aztec-packages@eca12b3))
* Fix awkward snippet indention in docs
([#5367](AztecProtocol/aztec-packages#5367))
([c55d3da](AztecProtocol/aztec-packages@c55d3da))
* Fold proving key polys instead of prover polys
([#5436](AztecProtocol/aztec-packages#5436))
([239ebfb](AztecProtocol/aztec-packages@239ebfb))
* Implement serdes for u64
[#4990](AztecProtocol/aztec-packages#4990)
([#5411](AztecProtocol/aztec-packages#5411))
([5a6bcef](AztecProtocol/aztec-packages@5a6bcef))
* Introduce max_block_number
([#5251](AztecProtocol/aztec-packages#5251))
([6573173](AztecProtocol/aztec-packages@6573173))
* Less earthly runners + e2e GA runners, bb bench
([#5356](AztecProtocol/aztec-packages#5356))
([2136a66](AztecProtocol/aztec-packages@2136a66))
* Mark transactions as reverted on L1
([#5226](AztecProtocol/aztec-packages#5226))
([40ecc02](AztecProtocol/aztec-packages@40ecc02))
* Plug-in new outbox and update examples to use api to fetch inclusion
proofs
[#4769](AztecProtocol/aztec-packages#4769)
([#5292](AztecProtocol/aztec-packages#5292))
([fec1008](AztecProtocol/aztec-packages@fec1008))
* Read_calldata
([#5409](AztecProtocol/aztec-packages#5409))
([034fbf0](AztecProtocol/aztec-packages@034fbf0))
* Remove NUM_FIELDS_PER_SHA256
([#5392](AztecProtocol/aztec-packages#5392))
([86a181b](AztecProtocol/aztec-packages@86a181b))
* Rename storage inclusion proof to historical storage read
([#5379](AztecProtocol/aztec-packages#5379))
([b6e7216](AztecProtocol/aztec-packages@b6e7216))
* Returning non-nullified messages only
([#5390](AztecProtocol/aztec-packages#5390))
([4c671be](AztecProtocol/aztec-packages@4c671be))
* Simplified bb Honk interface
([#5319](AztecProtocol/aztec-packages#5319))
([a2d138f](AztecProtocol/aztec-packages@a2d138f))
* Simplify offsets and sizing using new block structure
([#5404](AztecProtocol/aztec-packages#5404))
([efa0842](AztecProtocol/aztec-packages@efa0842))
* Throw by default when awaiting a tx that reverted
([#5431](AztecProtocol/aztec-packages#5431))
([c9113ec](AztecProtocol/aztec-packages@c9113ec))
* Truncate SHA hashes inside circuits
([#5160](AztecProtocol/aztec-packages#5160))
([9dc0d2a](AztecProtocol/aztec-packages@9dc0d2a))
* Unified CircuitChecker interface
([#5343](AztecProtocol/aztec-packages#5343))
([13cef1f](AztecProtocol/aztec-packages@13cef1f))
* ZeroMorph working with IPA and integration with ECCVM
([#5246](AztecProtocol/aztec-packages#5246))
([c4dce94](AztecProtocol/aztec-packages@c4dce94))


### Bug Fixes

* Addressing flakiness of `uniswap_trade_on_l1_from_l2.test.ts`
([#5443](AztecProtocol/aztec-packages#5443))
([2db9cad](AztecProtocol/aztec-packages@2db9cad))
* **avm-simulator:** Hashing opcodes indirection
([#5376](AztecProtocol/aztec-packages#5376))
([a4b1ebc](AztecProtocol/aztec-packages@a4b1ebc))
* Broadcasting unconstrained function with empty sibling
([#5429](AztecProtocol/aztec-packages#5429))
([933145e](AztecProtocol/aztec-packages@933145e))
* **ci:** Disable uniswap test in earthly build
([#5344](AztecProtocol/aztec-packages#5344))
([0d69162](AztecProtocol/aztec-packages@0d69162))
* **cli:** Support initializers not named constructor in cli
([#5397](AztecProtocol/aztec-packages#5397))
([85f14c5](AztecProtocol/aztec-packages@85f14c5))
* Copy and deploy complete contents of l1-contracts
([#5447](AztecProtocol/aztec-packages#5447))
([501c5e9](AztecProtocol/aztec-packages@501c5e9))
* Don't cancel protocol-circuits-gate-diff in master
([#5441](AztecProtocol/aztec-packages#5441))
([6894a78](AztecProtocol/aztec-packages@6894a78))
* E2e_static_calls.test.ts bad merge
([#5405](AztecProtocol/aztec-packages#5405))
([4c56536](AztecProtocol/aztec-packages@4c56536))
* Generate noir interface for constructors
([#5352](AztecProtocol/aztec-packages#5352))
([8434d2f](AztecProtocol/aztec-packages@8434d2f))
* Limit earthly to few users
([#5375](AztecProtocol/aztec-packages#5375))
([71e8ab4](AztecProtocol/aztec-packages@71e8ab4))
* Login to dockerhub before 'docker compose'
([#5440](AztecProtocol/aztec-packages#5440))
([4f7696b](AztecProtocol/aztec-packages@4f7696b))
* Revert cbind breakage
([#5348](AztecProtocol/aztec-packages#5348))
([c237193](AztecProtocol/aztec-packages@c237193))
* **ssa:** Use accurate type during SSA AsSlice simplficiation
(noir-lang/noir#4610)
([13a12d5](AztecProtocol/aztec-packages@13a12d5))
* Track class registered count in tx stats
([#5417](AztecProtocol/aztec-packages#5417))
([ff8eafc](AztecProtocol/aztec-packages@ff8eafc))
* Watch command should not spawn more than one tsc watch
([#5391](AztecProtocol/aztec-packages#5391))
([25caf4d](AztecProtocol/aztec-packages@25caf4d))


### Miscellaneous

* Always use serialize function to get hash preimage in noir circuits or
when comparing structs etc
[#3595](AztecProtocol/aztec-packages#3595)
([#5439](AztecProtocol/aztec-packages#5439))
([22e0f0d](AztecProtocol/aztec-packages@22e0f0d))
* **aztec-nr:** Unify contexts behind interfaces
([#5294](AztecProtocol/aztec-packages#5294))
([36e0f59](AztecProtocol/aztec-packages@36e0f59))
* **bb:** Removed powers of eta in lookup and auxiliary relations
([#4695](AztecProtocol/aztec-packages#4695))
([f4e62ae](AztecProtocol/aztec-packages@f4e62ae))
* CamelCase in noir-projects -&gt; snake_case
([#5381](AztecProtocol/aztec-packages#5381))
([eea711f](AztecProtocol/aztec-packages@eea711f))
* **ci:** Create a dedicated job for the AVM unit tests
([#5369](AztecProtocol/aztec-packages#5369))
([59ca2ac](AztecProtocol/aztec-packages@59ca2ac)),
closes
[#5366](AztecProtocol/aztec-packages#5366)
* Clean out prover instance and remove instance from oink
([#5314](AztecProtocol/aztec-packages#5314))
([a83368c](AztecProtocol/aztec-packages@a83368c))
* Cleaning up messaging types
([#5442](AztecProtocol/aztec-packages#5442))
([dfffe5d](AztecProtocol/aztec-packages@dfffe5d)),
closes
[#5420](AztecProtocol/aztec-packages#5420)
* Compute registerer address on the fly
([#5394](AztecProtocol/aztec-packages#5394))
([5d669b9](AztecProtocol/aztec-packages@5d669b9))
* Delete slither output from version control
([#5393](AztecProtocol/aztec-packages#5393))
([41107e3](AztecProtocol/aztec-packages@41107e3))
* Fix migration notes
([#5452](AztecProtocol/aztec-packages#5452))
([8c4e576](AztecProtocol/aztec-packages@8c4e576))
* **github:** Improve PR template "document later" checkbox description
(noir-lang/noir#4625)
([13a12d5](AztecProtocol/aztec-packages@13a12d5))
* Make get_notes fail if returning no notes
[#4988](AztecProtocol/aztec-packages#4988)
([#5320](AztecProtocol/aztec-packages#5320))
([be86ed3](AztecProtocol/aztec-packages@be86ed3))
* Meld flavor and and circuit builder modules
([#5406](AztecProtocol/aztec-packages#5406))
([f0d9d1b](AztecProtocol/aztec-packages@f0d9d1b))
* Messaging naming fixes
([#5383](AztecProtocol/aztec-packages#5383))
([0226102](AztecProtocol/aztec-packages@0226102))
* Moving public inputs back to instance
([#5315](AztecProtocol/aztec-packages#5315))
([9cbe368](AztecProtocol/aztec-packages@9cbe368))
* Name change: gen perm sort to delta range constraint
([#5378](AztecProtocol/aztec-packages#5378))
([841855f](AztecProtocol/aztec-packages@841855f))
* Nuking l1 to l2 messages from block body
([#5272](AztecProtocol/aztec-packages#5272))
([ee176d2](AztecProtocol/aztec-packages@ee176d2)),
closes
[#5072](AztecProtocol/aztec-packages#5072)
* Reduce size of revert code from Field to u8
([#5309](AztecProtocol/aztec-packages#5309))
([1868e25](AztecProtocol/aztec-packages@1868e25))
* Remove mocking function in `EccOpQueue` again
([#5413](AztecProtocol/aztec-packages#5413))
([6fb4a75](AztecProtocol/aztec-packages@6fb4a75))
* Remove snapshots from protocol-contracts
([#5342](AztecProtocol/aztec-packages#5342))
([31ca344](AztecProtocol/aztec-packages@31ca344))
* Remove unused FunctionLeafPreimage struct
([#5354](AztecProtocol/aztec-packages#5354))
([dc51c2b](AztecProtocol/aztec-packages@dc51c2b))
* Rename reverted to revertCode
([#5301](AztecProtocol/aztec-packages#5301))
([950a96d](AztecProtocol/aztec-packages@950a96d))
* Replace relative paths to noir-protocol-circuits
([262ae02](AztecProtocol/aztec-packages@262ae02))
* Replace relative paths to noir-protocol-circuits
([91a60db](AztecProtocol/aztec-packages@91a60db))
* Replace relative paths to noir-protocol-circuits
([9fc9fbd](AztecProtocol/aztec-packages@9fc9fbd))
* Replace relative paths to noir-protocol-circuits
([9939e99](AztecProtocol/aztec-packages@9939e99))
* Replace relative paths to noir-protocol-circuits
([0b24aae](AztecProtocol/aztec-packages@0b24aae))
* Replace relative paths to noir-protocol-circuits
([c4d89d5](AztecProtocol/aztec-packages@c4d89d5))
* Reverting accidental changes
([#5371](AztecProtocol/aztec-packages#5371))
([c1484ce](AztecProtocol/aztec-packages@c1484ce))
* Skip foundry install if possible
([#5398](AztecProtocol/aztec-packages#5398))
([060fa1e](AztecProtocol/aztec-packages@060fa1e))
* Skip slither in docker
([#5384](AztecProtocol/aztec-packages#5384))
([8a76068](AztecProtocol/aztec-packages@8a76068))
* Update docs with function names to match version 0.25.0 specifications
(noir-lang/noir#4466)
([13a12d5](AztecProtocol/aztec-packages@13a12d5))
* Update integers.md to note support for Fields using `from_integer`
(noir-lang/noir#4536)
([13a12d5](AztecProtocol/aztec-packages@13a12d5))
* Update min compiler version of contracts
([#5305](AztecProtocol/aztec-packages#5305))
([dcf6bb3](AztecProtocol/aztec-packages@dcf6bb3))
* Use random tmp directory and cleanup afterwards
([#5368](AztecProtocol/aztec-packages#5368))
([5c0e15d](AztecProtocol/aztec-packages@5c0e15d))


### Documentation

* Update versions-updating.md
([#5358](AztecProtocol/aztec-packages#5358))
([0f09b63](AztecProtocol/aztec-packages@0f09b63))
</details>

<details><summary>barretenberg: 0.31.0</summary>

##
[0.31.0](AztecProtocol/aztec-packages@barretenberg-v0.30.1...barretenberg-v0.31.0)
(2024-03-26)


### Features

* Avm lookup and/or/xor
([#5338](AztecProtocol/aztec-packages#5338))
([489bc2c](AztecProtocol/aztec-packages@489bc2c))
* Earthly bb tests + arm + satellites
([#5268](AztecProtocol/aztec-packages#5268))
([eca12b3](AztecProtocol/aztec-packages@eca12b3))
* Fold proving key polys instead of prover polys
([#5436](AztecProtocol/aztec-packages#5436))
([239ebfb](AztecProtocol/aztec-packages@239ebfb))
* Less earthly runners + e2e GA runners, bb bench
([#5356](AztecProtocol/aztec-packages#5356))
([2136a66](AztecProtocol/aztec-packages@2136a66))
* Read_calldata
([#5409](AztecProtocol/aztec-packages#5409))
([034fbf0](AztecProtocol/aztec-packages@034fbf0))
* Simplified bb Honk interface
([#5319](AztecProtocol/aztec-packages#5319))
([a2d138f](AztecProtocol/aztec-packages@a2d138f))
* Simplify offsets and sizing using new block structure
([#5404](AztecProtocol/aztec-packages#5404))
([efa0842](AztecProtocol/aztec-packages@efa0842))
* Unified CircuitChecker interface
([#5343](AztecProtocol/aztec-packages#5343))
([13cef1f](AztecProtocol/aztec-packages@13cef1f))
* ZeroMorph working with IPA and integration with ECCVM
([#5246](AztecProtocol/aztec-packages#5246))
([c4dce94](AztecProtocol/aztec-packages@c4dce94))


### Bug Fixes

* Revert cbind breakage
([#5348](AztecProtocol/aztec-packages#5348))
([c237193](AztecProtocol/aztec-packages@c237193))


### Miscellaneous

* **bb:** Removed powers of eta in lookup and auxiliary relations
([#4695](AztecProtocol/aztec-packages#4695))
([f4e62ae](AztecProtocol/aztec-packages@f4e62ae))
* **ci:** Create a dedicated job for the AVM unit tests
([#5369](AztecProtocol/aztec-packages#5369))
([59ca2ac](AztecProtocol/aztec-packages@59ca2ac)),
closes
[#5366](AztecProtocol/aztec-packages#5366)
* Clean out prover instance and remove instance from oink
([#5314](AztecProtocol/aztec-packages#5314))
([a83368c](AztecProtocol/aztec-packages@a83368c))
* Meld flavor and and circuit builder modules
([#5406](AztecProtocol/aztec-packages#5406))
([f0d9d1b](AztecProtocol/aztec-packages@f0d9d1b))
* Moving public inputs back to instance
([#5315](AztecProtocol/aztec-packages#5315))
([9cbe368](AztecProtocol/aztec-packages@9cbe368))
* Name change: gen perm sort to delta range constraint
([#5378](AztecProtocol/aztec-packages#5378))
([841855f](AztecProtocol/aztec-packages@841855f))
* Remove mocking function in `EccOpQueue` again
([#5413](AztecProtocol/aztec-packages#5413))
([6fb4a75](AztecProtocol/aztec-packages@6fb4a75))
</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.

Truncate sha-256 instead of splitting output into two Fr fields

3 participants