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: bytes to fields and back #8590

Merged
merged 17 commits into from
Oct 24, 2024
Merged

Conversation

benesjan
Copy link
Contributor

@benesjan benesjan commented Sep 17, 2024

Adds functionality to convert byte array to field array in Noir and back.

Copy link
Contributor Author

benesjan commented Sep 17, 2024

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

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

@benesjan benesjan marked this pull request as ready for review September 17, 2024 11:31
@@ -0,0 +1,120 @@
// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 bytes.
// This implies that M = ceil(N / 31).
Copy link
Contributor

Choose a reason for hiding this comment

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

The M value is free however - is the caller expected to pass the correct one? It seems they could just e.g. use a lower M value and not convert some of the bytes.

Copy link
Contributor Author

@benesjan benesjan Sep 18, 2024

Choose a reason for hiding this comment

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

Added a check for this. Can you confirm that it's a compile time check so should not add constraints?

I am asking because the test seems to correctly handle the comp time checks which is either a pleasant surprise (somewhat expected the test to just not compile) or it's not a comptime check.

BTW added asserts also to fields_to_bytes checking that the ignored bytes in the input fields are zero. So hopefully user friendly enough now.

Copy link
Contributor

Choose a reason for hiding this comment

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

Hm I don't think this is comptime - the assertion will run when the function is called. We can do static_assert for this however, and get a compilation error (which is I think what we want here). We should also be able to compute the ceil value.

The annoying part is that the caller has to do the math. So e.g. if I have a log of length 40, I need to do

let fields: [Field; 2] = bytes_to_fields(logs);

Copy link
Contributor

Choose a reason for hiding this comment

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

Is there no way to determine this automatically using numeric generic arithmetic?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@jfecher is it in the realm of possibility to have rounding in arithmetic over generics?

Copy link
Contributor

Choose a reason for hiding this comment

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

I think it will do integer division so you can use:

pub fn bytes_to_fields<let N: u32>(input: [u8; N]) -> [Field; (N+30) / 31] {
    let M: u32 = (N + 30) / 31;
    ...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@Thunkar good idea! Will try implementing that in a PR up the stack to unblock this one and the NFT from merging. Thanks

Copy link
Contributor

Choose a reason for hiding this comment

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

@benesjan yep, you can get rounding behavior with division or modulus.

We had a bug a little while ago where we were actually simplifying N / M * M to just N which is incorrect since we use integer division. E.g. 3 / 2 * 2 is 2, not 3. So also be aware if you do use division you can't cancel it out with a multiplication.

noir-projects/aztec-nr/aztec/src/utils/bytes.nr Outdated Show resolved Hide resolved
noir-projects/aztec-nr/aztec/src/utils/bytes.nr Outdated Show resolved Hide resolved
Base automatically changed from 09-13-feat_partial_notes_log_encoding to master September 18, 2024 07:25
@benesjan benesjan marked this pull request as draft September 18, 2024 07:32
@benesjan benesjan force-pushed the 09-17-feat_bytes_to_fields_and_back branch from 37f6f23 to 12b6dc9 Compare September 18, 2024 11:15
@benesjan benesjan marked this pull request as ready for review September 18, 2024 11:17
@benesjan benesjan marked this pull request as draft September 26, 2024 13:19
@benesjan benesjan force-pushed the 09-17-feat_bytes_to_fields_and_back branch from 12b6dc9 to bd1de81 Compare October 11, 2024 17:00
@benesjan benesjan marked this pull request as ready for review October 11, 2024 17:01
@@ -0,0 +1,120 @@
// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 bytes.
// This implies that M = ceil(N / 31).
Copy link
Contributor

Choose a reason for hiding this comment

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

Hm I don't think this is comptime - the assertion will run when the function is called. We can do static_assert for this however, and get a compilation error (which is I think what we want here). We should also be able to compute the ceil value.

The annoying part is that the caller has to do the math. So e.g. if I have a log of length 40, I need to do

let fields: [Field; 2] = bytes_to_fields(logs);

@@ -0,0 +1,120 @@
// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 bytes.
// This implies that M = ceil(N / 31).
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there no way to determine this automatically using numeric generic arithmetic?

@@ -0,0 +1,206 @@
// Converts the input bytes into an array of fields. A Field is ~254 bits meaning that each field can store 31 bytes.
// This implies that M = ceil(N / 31).
pub fn bytes_to_fields<let N: u32, let M: u32>(input: [u8; N]) -> [Field; M] {
Copy link
Contributor

Choose a reason for hiding this comment

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

What do you think about creating new traits as discussed in #7728 and making these fns the impl for u8 arrays?

noir-projects/aztec-nr/aztec/src/utils/bytes.nr Outdated Show resolved Hide resolved
noir-projects/aztec-nr/aztec/src/utils/bytes.nr Outdated Show resolved Hide resolved
@benesjan benesjan marked this pull request as draft October 17, 2024 08:53
@benesjan benesjan force-pushed the 09-17-feat_bytes_to_fields_and_back branch from bd1de81 to cb760fc Compare October 17, 2024 10:34
@benesjan benesjan marked this pull request as ready for review October 17, 2024 10:52
@benesjan benesjan force-pushed the 09-17-feat_bytes_to_fields_and_back branch 2 times, most recently from 700d64b to b7df9c3 Compare October 21, 2024 13:14
@benesjan benesjan force-pushed the 09-17-feat_bytes_to_fields_and_back branch from b7df9c3 to e87ada7 Compare October 21, 2024 14:29
@benesjan benesjan force-pushed the 09-17-feat_bytes_to_fields_and_back branch from e87ada7 to 84342d5 Compare October 22, 2024 19:08
@benesjan benesjan force-pushed the 09-17-feat_bytes_to_fields_and_back branch from 84342d5 to 3271b22 Compare October 22, 2024 19:09
Copy link
Contributor

Changes to public function bytecode sizes

Generated at commit: 3867fc0280d9a82b62dc9627774bb8f78800b5a7, compared to commit: d4dea162322eab233ed733aa318040e681cf5c70

🧾 Summary (100% most significant diffs)

Program Bytecode size in bytes (+/-) %
AvmTest::public_dispatch -361 ✅ -0.66%
AvmTest::bulk_testing -226 ✅ -0.94%

Full diff report 👇
Program Bytecode size in bytes (+/-) %
AvmTest::public_dispatch 54,100 (-361) -0.66%
AvmTest::bulk_testing 23,832 (-226) -0.94%

Copy link
Contributor

Changes to circuit sizes

Generated at commit: 3867fc0280d9a82b62dc9627774bb8f78800b5a7, compared to commit: d4dea162322eab233ed733aa318040e681cf5c70

🧾 Summary (100% most significant diffs)

Program ACIR opcodes (+/-) % Circuit size (+/-) %
private_kernel_reset -246 ✅ -0.27% -246 ✅ -0.05%
public_kernel_tail -65 ✅ -0.03% -4,113 ✅ -0.18%
private_kernel_tail -44 ✅ -0.90% -44 ✅ -0.33%
private_kernel_reset_4_4_4_4_4_4_4_4_1 -246 ✅ -0.70% -328 ✅ -0.42%
public_kernel_merge -863 ✅ -1.61% -5,262 ✅ -0.48%
public_kernel_inner -4,473 ✅ -1.66% -7,807 ✅ -1.51%
private_kernel_init -874 ✅ -3.50% -586 ✅ -1.82%
private_kernel_inner -1,441 ✅ -3.25% -1,193 ✅ -2.10%
private_kernel_tail_to_public -1,539 ✅ -5.12% -1,851 ✅ -4.21%

Full diff report 👇
Program ACIR opcodes (+/-) % Circuit size (+/-) %
private_kernel_reset 91,939 (-246) -0.27% 471,920 (-246) -0.05%
public_kernel_tail 258,538 (-65) -0.03% 2,270,045 (-4,113) -0.18%
private_kernel_tail 4,859 (-44) -0.90% 13,417 (-44) -0.33%
private_kernel_reset_4_4_4_4_4_4_4_4_1 34,903 (-246) -0.70% 78,586 (-328) -0.42%
public_kernel_merge 52,901 (-863) -1.61% 1,102,297 (-5,262) -0.48%
public_kernel_inner 264,286 (-4,473) -1.66% 508,771 (-7,807) -1.51%
private_kernel_init 24,129 (-874) -3.50% 31,697 (-586) -1.82%
private_kernel_inner 42,855 (-1,441) -3.25% 55,600 (-1,193) -2.10%
private_kernel_tail_to_public 28,544 (-1,539) -5.12% 42,098 (-1,851) -4.21%

Copy link
Contributor Author

benesjan commented Oct 24, 2024

Merge activity

  • Oct 24, 10:07 AM EDT: A user started a stack merge that includes this pull request via Graphite.
  • Oct 24, 10:08 AM EDT: A user merged this pull request with Graphite.

@benesjan benesjan merged commit 65b8493 into master Oct 24, 2024
57 checks passed
@benesjan benesjan deleted the 09-17-feat_bytes_to_fields_and_back branch October 24, 2024 14:08
TomAFrench added a commit that referenced this pull request Oct 24, 2024
* master: (66 commits)
  feat: Get logs by tags (#9353)
  feat: bytes to fields and back (#8590)
  feat: eccvm translator zk sumcheck (#9199)
  chore: bump node types (#9397)
  refactor: quick account manager refactor (#9357)
  chore: quick keystore refactor (#9355)
  chore: implement Fq add (#9354)
  chore: fix and re-enable prover coordination e2e test (#9344)
  feat: introduce default public keys and replace empty public keys (#9277)
  chore: remove unnecessary `is_integral_bit_size` function (#9352)
  feat(nr): serde for signed ints (#9211)
  feat(docs): nits (#8948)
  chore: unstake the bond when the proof lands (#9363)
  chore: print out gas at start and end of each enqueued call (#9377)
  fix: broken constants gen (#9387)
  chore: redo typo PR by pucedoteth (#9385)
  git subrepo push --branch=master noir-projects/aztec-nr
  git_subrepo.sh: Fix parent in .gitrepo file. [skip ci]
  chore: replace relative paths to noir-protocol-circuits
  git subrepo push --branch=master barretenberg
  ...
ludamad pushed a commit that referenced this pull request Oct 24, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.60.0](aztec-package-v0.59.0...aztec-package-v0.60.0)
(2024-10-24)


### Features

* Introduce default public keys and replace empty public keys
([#9277](#9277))
([47718ea](47718ea))
* Sequencer cast votes
([#9247](#9247))
([bd05d87](bd05d87))
</details>

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

##
[0.60.0](barretenberg.js-v0.59.0...barretenberg.js-v0.60.0)
(2024-10-24)


### Features

* Eccvm translator zk sumcheck
([#9199](#9199))
([c7d4572](c7d4572))


### Miscellaneous

* Remove noir_js_backend_barretenberg
([#9338](#9338))
([cefe3d9](cefe3d9))
</details>

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

##
[0.60.0](aztec-packages-v0.59.0...aztec-packages-v0.60.0)
(2024-10-24)


### ⚠ BREAKING CHANGES

* replace usage of vector in keccakf1600 input with array
([#9350](#9350))
* TXE single execution env
([#9183](#9183))
* remove hash opcodes from AVM
([#9209](#9209))
* remove delegate call and storage address
([#9330](#9330))

### Features

* Apella
([#9084](#9084))
([205ce69](205ce69))
* **avm:** Full poseidon2
([#9141](#9141))
([eae7587](eae7587))
* Bytes to fields and back
([#8590](#8590))
([65b8493](65b8493))
* Constrain protocol VK hashing
([#9304](#9304))
([3d17e13](3d17e13))
* **docs:** Nits
([#8948](#8948))
([008fdd1](008fdd1))
* Eccvm translator zk sumcheck
([#9199](#9199))
([c7d4572](c7d4572))
* Gerousia
([#8942](#8942))
([54b5ba2](54b5ba2))
* Get logs by tags
([#9353](#9353))
([719c33e](719c33e))
* Handle reorgs on sequencer
([#9201](#9201))
([d4dea16](d4dea16))
* **interpreter:** Comptime derive generators
(noir-lang/noir#6303)
([a166203](a166203))
* Introduce default public keys and replace empty public keys
([#9277](#9277))
([47718ea](47718ea))
* Modify private calldata to use public keys
([#9276](#9276))
([e42e219](e42e219))
* New formatter (noir-lang/noir#6300)
([a166203](a166203))
* **nr:** Serde for signed ints
([#9211](#9211))
([66f31c7](66f31c7))
* Publicly accessible bootstrap cache
([#9335](#9335))
([28392d5](28392d5))
* Remove hash opcodes from AVM
([#9209](#9209))
([e6db535](e6db535)),
closes
[#9208](#9208)
* Sequencer cast votes
([#9247](#9247))
([bd05d87](bd05d87))
* Sha256 refactoring and benchmark with longer input
(noir-lang/noir#6318)
([a166203](a166203))
* **ssa:** Various mem2reg reverts to reduce memory and compilation time
(noir-lang/noir#6307)
([a166203](a166203))
* Sync from aztec-packages (noir-lang/noir#6301)
([a166203](a166203))
* Translator on Shplemini
([#9329](#9329))
([21fa3cf](21fa3cf))
* TXE single execution env
([#9183](#9183))
([1d1d76d](1d1d76d))
* Warn about private types leaking in public functions and struct fields
(noir-lang/noir#6296)
([a166203](a166203))


### Bug Fixes

* 4epochs kind test et al
([#9358](#9358))
([e480e6b](e480e6b))
* Allow array map on empty arrays
(noir-lang/noir#6305)
([a166203](a166203))
* **avm:** Public dispatch in proving tests
([#9331](#9331))
([42e5221](42e5221))
* Barretenberg readme scare warning
([#9313](#9313))
([f759d55](f759d55))
* Broken constants gen
([#9387](#9387))
([eb7bc6b](eb7bc6b))
* Ci github clone edge case
([#9320](#9320))
([15abe6f](15abe6f))
* **ci:** Report 4 epochs true
([#9346](#9346))
([1ce0fa5](1ce0fa5))
* Display function name and body when inlining recursion limit hit
(noir-lang/noir#6291)
([a166203](a166203))
* Do not warn on unused self in traits
(noir-lang/noir#6298)
([a166203](a166203))
* Enforce correctness of decompositions performed at compile time
(noir-lang/noir#6278)
([a166203](a166203))
* Reject invalid expression with in CLI parser
(noir-lang/noir#6287)
([a166203](a166203))
* Remove reliance on invalid decompositions in selector calculation
([#9337](#9337))
([c8e4260](c8e4260))
* Support empty epochs
([#9341](#9341))
([9dda91e](9dda91e))
* Use github.actor on publish workflow dispatch
([#9324](#9324))
([5fa660d](5fa660d))


### Miscellaneous

* **avm:** Some cleaning in avm prover
([#9311](#9311))
([523aa23](523aa23))
* Bump node types
([#9397](#9397))
([763d5b1](763d5b1))
* Copying world state binary to yarn project is on generate
([#9194](#9194))
([8d75dd4](8d75dd4))
* Disable bench-process-history
([#9360](#9360))
([8e6734e](8e6734e))
* **docs:** Refactoring guides and some other nits
(noir-lang/noir#6175)
([a166203](a166203))
* Fix and re-enable prover coordination e2e test
([#9344](#9344))
([3a1a62c](3a1a62c))
* Implement Fq add
([#9354](#9354))
([1711fac](1711fac))
* Minor test cleanup
([#9339](#9339))
([a2ed567](a2ed567))
* Print out gas at start and end of each enqueued call
([#9377](#9377))
([29c0b95](29c0b95))
* Quick account manager refactor
([#9357](#9357))
([648d043](648d043))
* Quick keystore refactor
([#9355](#9355))
([31b9999](31b9999))
* Redo typo PR by pucedoteth
([#9385](#9385))
([fd1a0d1](fd1a0d1))
* Release Noir(0.36.0) (noir-lang/noir#6213)
([a166203](a166203))
* Remove dead function (noir-lang/noir#6308)
([a166203](a166203))
* Remove delegate call and storage address
([#9330](#9330))
([465f88e](465f88e))
* Remove noir_js_backend_barretenberg
([#9338](#9338))
([cefe3d9](cefe3d9))
* Remove unnecessary `is_integral_bit_size` function
([#9352](#9352))
([ac8e6d7](ac8e6d7))
* Remove usage of slices in pedersen hash
(noir-lang/noir#6295)
([a166203](a166203))
* Replace relative paths to noir-protocol-circuits
([32bd7b9](32bd7b9))
* Replace relative paths to noir-protocol-circuits
([add4605](add4605))
* Replace relative paths to noir-protocol-circuits
([8cb89af](8cb89af))
* Replace usage of vector in keccakf1600 input with array
([#9350](#9350))
([cb58490](cb58490))
* Scenario for upgrading gerousia
([#9246](#9246))
([66f59d6](66f59d6))
* Silence cache-download.sh
([#9317](#9317))
([314d9d2](314d9d2))
* Test 4epochs in native-network
([#9309](#9309))
([ddb312a](ddb312a))
* Unstake the bond when the proof lands
([#9363](#9363))
([b25b913](b25b913))
* Update `noir-edwards` repo to point at `noir-lang` org
(noir-lang/noir#6323)
([a166203](a166203))
* Updated NFT flows
([#9150](#9150))
([407f8b4](407f8b4))
</details>

<details><summary>barretenberg: 0.60.0</summary>

##
[0.60.0](barretenberg-v0.59.0...barretenberg-v0.60.0)
(2024-10-24)


### ⚠ BREAKING CHANGES

* replace usage of vector in keccakf1600 input with array
([#9350](#9350))
* remove hash opcodes from AVM
([#9209](#9209))
* remove delegate call and storage address
([#9330](#9330))

### Features

* **avm:** Full poseidon2
([#9141](#9141))
([eae7587](eae7587))
* Eccvm translator zk sumcheck
([#9199](#9199))
([c7d4572](c7d4572))
* Remove hash opcodes from AVM
([#9209](#9209))
([e6db535](e6db535)),
closes
[#9208](#9208)
* Translator on Shplemini
([#9329](#9329))
([21fa3cf](21fa3cf))


### Bug Fixes

* **avm:** Public dispatch in proving tests
([#9331](#9331))
([42e5221](42e5221))
* Barretenberg readme scare warning
([#9313](#9313))
([f759d55](f759d55))


### Miscellaneous

* **avm:** Some cleaning in avm prover
([#9311](#9311))
([523aa23](523aa23))
* Copying world state binary to yarn project is on generate
([#9194](#9194))
([8d75dd4](8d75dd4))
* Remove delegate call and storage address
([#9330](#9330))
([465f88e](465f88e))
* Remove noir_js_backend_barretenberg
([#9338](#9338))
([cefe3d9](cefe3d9))
* Replace usage of vector in keccakf1600 input with array
([#9350](#9350))
([cb58490](cb58490))
</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 Oct 25, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.60.0](AztecProtocol/aztec-packages@aztec-package-v0.59.0...aztec-package-v0.60.0)
(2024-10-24)


### Features

* Introduce default public keys and replace empty public keys
([#9277](AztecProtocol/aztec-packages#9277))
([47718ea](AztecProtocol/aztec-packages@47718ea))
* Sequencer cast votes
([#9247](AztecProtocol/aztec-packages#9247))
([bd05d87](AztecProtocol/aztec-packages@bd05d87))
</details>

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

##
[0.60.0](AztecProtocol/aztec-packages@barretenberg.js-v0.59.0...barretenberg.js-v0.60.0)
(2024-10-24)


### Features

* Eccvm translator zk sumcheck
([#9199](AztecProtocol/aztec-packages#9199))
([c7d4572](AztecProtocol/aztec-packages@c7d4572))


### Miscellaneous

* Remove noir_js_backend_barretenberg
([#9338](AztecProtocol/aztec-packages#9338))
([cefe3d9](AztecProtocol/aztec-packages@cefe3d9))
</details>

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

##
[0.60.0](AztecProtocol/aztec-packages@aztec-packages-v0.59.0...aztec-packages-v0.60.0)
(2024-10-24)


### ⚠ BREAKING CHANGES

* replace usage of vector in keccakf1600 input with array
([#9350](AztecProtocol/aztec-packages#9350))
* TXE single execution env
([#9183](AztecProtocol/aztec-packages#9183))
* remove hash opcodes from AVM
([#9209](AztecProtocol/aztec-packages#9209))
* remove delegate call and storage address
([#9330](AztecProtocol/aztec-packages#9330))

### Features

* Apella
([#9084](AztecProtocol/aztec-packages#9084))
([205ce69](AztecProtocol/aztec-packages@205ce69))
* **avm:** Full poseidon2
([#9141](AztecProtocol/aztec-packages#9141))
([eae7587](AztecProtocol/aztec-packages@eae7587))
* Bytes to fields and back
([#8590](AztecProtocol/aztec-packages#8590))
([65b8493](AztecProtocol/aztec-packages@65b8493))
* Constrain protocol VK hashing
([#9304](AztecProtocol/aztec-packages#9304))
([3d17e13](AztecProtocol/aztec-packages@3d17e13))
* **docs:** Nits
([#8948](AztecProtocol/aztec-packages#8948))
([008fdd1](AztecProtocol/aztec-packages@008fdd1))
* Eccvm translator zk sumcheck
([#9199](AztecProtocol/aztec-packages#9199))
([c7d4572](AztecProtocol/aztec-packages@c7d4572))
* Gerousia
([#8942](AztecProtocol/aztec-packages#8942))
([54b5ba2](AztecProtocol/aztec-packages@54b5ba2))
* Get logs by tags
([#9353](AztecProtocol/aztec-packages#9353))
([719c33e](AztecProtocol/aztec-packages@719c33e))
* Handle reorgs on sequencer
([#9201](AztecProtocol/aztec-packages#9201))
([d4dea16](AztecProtocol/aztec-packages@d4dea16))
* **interpreter:** Comptime derive generators
(noir-lang/noir#6303)
([a166203](AztecProtocol/aztec-packages@a166203))
* Introduce default public keys and replace empty public keys
([#9277](AztecProtocol/aztec-packages#9277))
([47718ea](AztecProtocol/aztec-packages@47718ea))
* Modify private calldata to use public keys
([#9276](AztecProtocol/aztec-packages#9276))
([e42e219](AztecProtocol/aztec-packages@e42e219))
* New formatter (noir-lang/noir#6300)
([a166203](AztecProtocol/aztec-packages@a166203))
* **nr:** Serde for signed ints
([#9211](AztecProtocol/aztec-packages#9211))
([66f31c7](AztecProtocol/aztec-packages@66f31c7))
* Publicly accessible bootstrap cache
([#9335](AztecProtocol/aztec-packages#9335))
([28392d5](AztecProtocol/aztec-packages@28392d5))
* Remove hash opcodes from AVM
([#9209](AztecProtocol/aztec-packages#9209))
([e6db535](AztecProtocol/aztec-packages@e6db535)),
closes
[#9208](AztecProtocol/aztec-packages#9208)
* Sequencer cast votes
([#9247](AztecProtocol/aztec-packages#9247))
([bd05d87](AztecProtocol/aztec-packages@bd05d87))
* Sha256 refactoring and benchmark with longer input
(noir-lang/noir#6318)
([a166203](AztecProtocol/aztec-packages@a166203))
* **ssa:** Various mem2reg reverts to reduce memory and compilation time
(noir-lang/noir#6307)
([a166203](AztecProtocol/aztec-packages@a166203))
* Sync from aztec-packages (noir-lang/noir#6301)
([a166203](AztecProtocol/aztec-packages@a166203))
* Translator on Shplemini
([#9329](AztecProtocol/aztec-packages#9329))
([21fa3cf](AztecProtocol/aztec-packages@21fa3cf))
* TXE single execution env
([#9183](AztecProtocol/aztec-packages#9183))
([1d1d76d](AztecProtocol/aztec-packages@1d1d76d))
* Warn about private types leaking in public functions and struct fields
(noir-lang/noir#6296)
([a166203](AztecProtocol/aztec-packages@a166203))


### Bug Fixes

* 4epochs kind test et al
([#9358](AztecProtocol/aztec-packages#9358))
([e480e6b](AztecProtocol/aztec-packages@e480e6b))
* Allow array map on empty arrays
(noir-lang/noir#6305)
([a166203](AztecProtocol/aztec-packages@a166203))
* **avm:** Public dispatch in proving tests
([#9331](AztecProtocol/aztec-packages#9331))
([42e5221](AztecProtocol/aztec-packages@42e5221))
* Barretenberg readme scare warning
([#9313](AztecProtocol/aztec-packages#9313))
([f759d55](AztecProtocol/aztec-packages@f759d55))
* Broken constants gen
([#9387](AztecProtocol/aztec-packages#9387))
([eb7bc6b](AztecProtocol/aztec-packages@eb7bc6b))
* Ci github clone edge case
([#9320](AztecProtocol/aztec-packages#9320))
([15abe6f](AztecProtocol/aztec-packages@15abe6f))
* **ci:** Report 4 epochs true
([#9346](AztecProtocol/aztec-packages#9346))
([1ce0fa5](AztecProtocol/aztec-packages@1ce0fa5))
* Display function name and body when inlining recursion limit hit
(noir-lang/noir#6291)
([a166203](AztecProtocol/aztec-packages@a166203))
* Do not warn on unused self in traits
(noir-lang/noir#6298)
([a166203](AztecProtocol/aztec-packages@a166203))
* Enforce correctness of decompositions performed at compile time
(noir-lang/noir#6278)
([a166203](AztecProtocol/aztec-packages@a166203))
* Reject invalid expression with in CLI parser
(noir-lang/noir#6287)
([a166203](AztecProtocol/aztec-packages@a166203))
* Remove reliance on invalid decompositions in selector calculation
([#9337](AztecProtocol/aztec-packages#9337))
([c8e4260](AztecProtocol/aztec-packages@c8e4260))
* Support empty epochs
([#9341](AztecProtocol/aztec-packages#9341))
([9dda91e](AztecProtocol/aztec-packages@9dda91e))
* Use github.actor on publish workflow dispatch
([#9324](AztecProtocol/aztec-packages#9324))
([5fa660d](AztecProtocol/aztec-packages@5fa660d))


### Miscellaneous

* **avm:** Some cleaning in avm prover
([#9311](AztecProtocol/aztec-packages#9311))
([523aa23](AztecProtocol/aztec-packages@523aa23))
* Bump node types
([#9397](AztecProtocol/aztec-packages#9397))
([763d5b1](AztecProtocol/aztec-packages@763d5b1))
* Copying world state binary to yarn project is on generate
([#9194](AztecProtocol/aztec-packages#9194))
([8d75dd4](AztecProtocol/aztec-packages@8d75dd4))
* Disable bench-process-history
([#9360](AztecProtocol/aztec-packages#9360))
([8e6734e](AztecProtocol/aztec-packages@8e6734e))
* **docs:** Refactoring guides and some other nits
(noir-lang/noir#6175)
([a166203](AztecProtocol/aztec-packages@a166203))
* Fix and re-enable prover coordination e2e test
([#9344](AztecProtocol/aztec-packages#9344))
([3a1a62c](AztecProtocol/aztec-packages@3a1a62c))
* Implement Fq add
([#9354](AztecProtocol/aztec-packages#9354))
([1711fac](AztecProtocol/aztec-packages@1711fac))
* Minor test cleanup
([#9339](AztecProtocol/aztec-packages#9339))
([a2ed567](AztecProtocol/aztec-packages@a2ed567))
* Print out gas at start and end of each enqueued call
([#9377](AztecProtocol/aztec-packages#9377))
([29c0b95](AztecProtocol/aztec-packages@29c0b95))
* Quick account manager refactor
([#9357](AztecProtocol/aztec-packages#9357))
([648d043](AztecProtocol/aztec-packages@648d043))
* Quick keystore refactor
([#9355](AztecProtocol/aztec-packages#9355))
([31b9999](AztecProtocol/aztec-packages@31b9999))
* Redo typo PR by pucedoteth
([#9385](AztecProtocol/aztec-packages#9385))
([fd1a0d1](AztecProtocol/aztec-packages@fd1a0d1))
* Release Noir(0.36.0) (noir-lang/noir#6213)
([a166203](AztecProtocol/aztec-packages@a166203))
* Remove dead function (noir-lang/noir#6308)
([a166203](AztecProtocol/aztec-packages@a166203))
* Remove delegate call and storage address
([#9330](AztecProtocol/aztec-packages#9330))
([465f88e](AztecProtocol/aztec-packages@465f88e))
* Remove noir_js_backend_barretenberg
([#9338](AztecProtocol/aztec-packages#9338))
([cefe3d9](AztecProtocol/aztec-packages@cefe3d9))
* Remove unnecessary `is_integral_bit_size` function
([#9352](AztecProtocol/aztec-packages#9352))
([ac8e6d7](AztecProtocol/aztec-packages@ac8e6d7))
* Remove usage of slices in pedersen hash
(noir-lang/noir#6295)
([a166203](AztecProtocol/aztec-packages@a166203))
* Replace relative paths to noir-protocol-circuits
([32bd7b9](AztecProtocol/aztec-packages@32bd7b9))
* Replace relative paths to noir-protocol-circuits
([add4605](AztecProtocol/aztec-packages@add4605))
* Replace relative paths to noir-protocol-circuits
([8cb89af](AztecProtocol/aztec-packages@8cb89af))
* Replace usage of vector in keccakf1600 input with array
([#9350](AztecProtocol/aztec-packages#9350))
([cb58490](AztecProtocol/aztec-packages@cb58490))
* Scenario for upgrading gerousia
([#9246](AztecProtocol/aztec-packages#9246))
([66f59d6](AztecProtocol/aztec-packages@66f59d6))
* Silence cache-download.sh
([#9317](AztecProtocol/aztec-packages#9317))
([314d9d2](AztecProtocol/aztec-packages@314d9d2))
* Test 4epochs in native-network
([#9309](AztecProtocol/aztec-packages#9309))
([ddb312a](AztecProtocol/aztec-packages@ddb312a))
* Unstake the bond when the proof lands
([#9363](AztecProtocol/aztec-packages#9363))
([b25b913](AztecProtocol/aztec-packages@b25b913))
* Update `noir-edwards` repo to point at `noir-lang` org
(noir-lang/noir#6323)
([a166203](AztecProtocol/aztec-packages@a166203))
* Updated NFT flows
([#9150](AztecProtocol/aztec-packages#9150))
([407f8b4](AztecProtocol/aztec-packages@407f8b4))
</details>

<details><summary>barretenberg: 0.60.0</summary>

##
[0.60.0](AztecProtocol/aztec-packages@barretenberg-v0.59.0...barretenberg-v0.60.0)
(2024-10-24)


### ⚠ BREAKING CHANGES

* replace usage of vector in keccakf1600 input with array
([#9350](AztecProtocol/aztec-packages#9350))
* remove hash opcodes from AVM
([#9209](AztecProtocol/aztec-packages#9209))
* remove delegate call and storage address
([#9330](AztecProtocol/aztec-packages#9330))

### Features

* **avm:** Full poseidon2
([#9141](AztecProtocol/aztec-packages#9141))
([eae7587](AztecProtocol/aztec-packages@eae7587))
* Eccvm translator zk sumcheck
([#9199](AztecProtocol/aztec-packages#9199))
([c7d4572](AztecProtocol/aztec-packages@c7d4572))
* Remove hash opcodes from AVM
([#9209](AztecProtocol/aztec-packages#9209))
([e6db535](AztecProtocol/aztec-packages@e6db535)),
closes
[#9208](AztecProtocol/aztec-packages#9208)
* Translator on Shplemini
([#9329](AztecProtocol/aztec-packages#9329))
([21fa3cf](AztecProtocol/aztec-packages@21fa3cf))


### Bug Fixes

* **avm:** Public dispatch in proving tests
([#9331](AztecProtocol/aztec-packages#9331))
([42e5221](AztecProtocol/aztec-packages@42e5221))
* Barretenberg readme scare warning
([#9313](AztecProtocol/aztec-packages#9313))
([f759d55](AztecProtocol/aztec-packages@f759d55))


### Miscellaneous

* **avm:** Some cleaning in avm prover
([#9311](AztecProtocol/aztec-packages#9311))
([523aa23](AztecProtocol/aztec-packages@523aa23))
* Copying world state binary to yarn project is on generate
([#9194](AztecProtocol/aztec-packages#9194))
([8d75dd4](AztecProtocol/aztec-packages@8d75dd4))
* Remove delegate call and storage address
([#9330](AztecProtocol/aztec-packages#9330))
([465f88e](AztecProtocol/aztec-packages@465f88e))
* Remove noir_js_backend_barretenberg
([#9338](AztecProtocol/aztec-packages#9338))
([cefe3d9](AztecProtocol/aztec-packages@cefe3d9))
* Replace usage of vector in keccakf1600 input with array
([#9350](AztecProtocol/aztec-packages#9350))
([cb58490](AztecProtocol/aztec-packages@cb58490))
</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.

4 participants