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: validators ensure transactions live in their p2p pool before attesting #8410

Merged
merged 33 commits into from
Sep 11, 2024

Conversation

Maddiaa0
Copy link
Member

@Maddiaa0 Maddiaa0 commented Sep 5, 2024

Overview

Validators will only submit proposals if all transactions in a block proposal are available.

Changes:

  1. The block proposal now contains an ordered transaction list within the proposal that is signed over.
    • As a requirement this is now checked in the rollup
    • I am not married to this and Lasse + I have said we will discuss alternatives
  2. The Request Response Layer will now ask and return transactions from peers
  3. An end to end test has been added where two of the validators are unable to receive txs via gossip. So they can only attest to a proposal iff they are able to request this data from their peers.
    • This works in the contained environment where all nodes are connected to each other, but i imagine the complexity of this will increase on a global scale.

Notes:

  • To work around a viem bug (which version bumps have not fixed) the name of the propose function with the body has been changed to proposeWithBody - this is just a naming thing, but i will revert if i can find a way to fix it - too much time wasted at this point.

@Maddiaa0 Maddiaa0 marked this pull request as ready for review September 7, 2024 17:38
@AztecBot
Copy link
Collaborator

AztecBot commented Sep 7, 2024

Benchmark results

Metrics with a significant change:

  • protocol_circuit_simulation_time_in_ms (private-kernel-tail-to-public): 1,367 (+98%)
  • avm_simulation_time_ms (Token:mint_public): 42.3 (-83%)
  • avm_simulation_time_ms (Token:assert_minter_and_mint): 251 (+488%)
  • l2_block_processing_time_in_ms (4): 257 (-19%)
  • l2_block_processing_time_in_ms (16): 805 (-24%)
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.

Proof generation

Each column represents the number of threads used in proof generation.

Metric 1 threads 4 threads 16 threads 32 threads 64 threads
proof_construction_time_sha256_ms 5,753 1,549 709 778 (+1%) 781 (+1%)
proof_construction_time_sha256_30_ms 11,950 3,161 1,405 (+1%) 1,431 1,472 (+1%)
proof_construction_time_sha256_100_ms 44,154 11,862 (+1%) 5,510 (-3%) 6,111 (+13%) 5,663 (+6%)
proof_construction_time_poseidon_hash_ms 78.0 34.0 34.0 59.0 (+4%) 89.0 (+2%)
proof_construction_time_poseidon_hash_30_ms 1,531 420 201 226 (+4%) 268 (+1%)
proof_construction_time_poseidon_hash_100_ms 5,645 1,514 676 (+1%) 726 (-1%) 747 (-1%)

L2 block published to L1

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

Metric 4 txs 8 txs 16 txs
l1_rollup_calldata_size_in_bytes 4,612 (+4%) 8,260 (+4%) 15,524 (+4%)
l1_rollup_calldata_gas 52,768 (+4%) 97,606 (+5%) 186,884 (+5%)
l1_rollup_execution_gas 819,454 1,555,700 3,346,413
l2_block_processing_time_in_ms ⚠️ 257 (-19%) 448 (-5%) ⚠️ 805 (-24%)
l2_block_building_time_in_ms 9,334 (-1%) 18,603 (+1%) 36,685 (-1%)
l2_block_rollup_simulation_time_in_ms 9,333 (-1%) 18,603 (+1%) 36,684 (-1%)
l2_block_public_tx_process_time_in_ms 7,940 (-1%) 17,177 (+1%) 35,179 (-1%)

L2 chain processing

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

Metric 3 blocks 5 blocks
node_history_sync_time_in_ms 3,112 4,049 (+2%)
node_database_size_in_bytes 14,205,168 18,202,864
pxe_database_size_in_bytes 16,258 26,818

Circuits stats

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

Circuit simulation_time_in_ms witness_generation_time_in_ms input_size_in_bytes output_size_in_bytes proving_time_in_ms
private-kernel-init 74.2 394 (+1%) 20,975 44,933 N/A
private-kernel-inner 142 717 (+1%) 71,787 45,067 N/A
private-kernel-reset-tiny 328 721 64,273 44,922 N/A
private-kernel-tail 153 (-4%) 140 (+3%) 50,551 57,178 N/A
base-parity 5.60 (-1%) N/A 160 96.0 N/A
root-parity 35.2 N/A 73,964 96.0 N/A
base-rollup 2,138 (-1%) N/A 189,128 664 N/A
block-root-rollup 41.4 N/A 58,217 2,448 N/A
public-kernel-setup 87.9 N/A 114,433 79,670 N/A
public-kernel-app-logic 100 N/A 114,251 79,670 N/A
public-kernel-tail 586 N/A 487,098 16,414 N/A
private-kernel-reset-small 304 (-1%) N/A 66,345 45,629 N/A
private-kernel-tail-to-public ⚠️ 1,367 (+98%) 628 (+1%) 448,120 1,825 N/A
public-kernel-teardown 86.3 N/A 114,697 79,670 N/A
merge-rollup 19.9 (-1%) N/A 38,182 664 N/A
undefined N/A N/A N/A N/A 98,732 (-4%)

Stats on running time collected for app circuits

Function input_size_in_bytes output_size_in_bytes witness_generation_time_in_ms
ContractClassRegisterer:register 1,344 11,731 348
ContractInstanceDeployer:deploy 1,408 11,731 18.3 (-2%)
MultiCallEntrypoint:entrypoint 1,920 11,731 424
FeeJuice:deploy 1,376 11,731 397
SchnorrAccount:constructor 1,312 11,731 62.0 (+1%)
SchnorrAccount:entrypoint 2,336 11,731 370 (-1%)
FeeJuice:claim 1,344 11,731 38.4 (-1%)
Token:privately_mint_private_note 1,280 11,731 72.4
FPC:fee_entrypoint_public 1,344 11,731 26.1 (+6%)
Token:transfer 1,312 11,731 212
Benchmarking:create_note 1,344 11,731 73.1 (-1%)
SchnorrAccount:verify_private_authwit 1,280 11,731 29.5 (-1%)
Token:unshield 1,376 11,731 489
FPC:fee_entrypoint_private 1,376 11,731 652

AVM Simulation

Time to simulate various public functions in the AVM.

Function time_ms bytecode_size_in_bytes
FeeJuice:_increase_public_balance 44.1 (+2%) 1,328
FeeJuice:set_portal 9.59 (-2%) 1,274
Token:constructor 251 (-2%) 11,412
FPC:constructor 69.7 (+2%) 8,425
FeeJuice:check_balance 35.7 (-2%) 1,135
Token:mint_public ⚠️ 42.3 (-83%) 2,413
Token:assert_minter_and_mint ⚠️ 251 (+488%) 1,629
AuthRegistry:set_authorized 35.3 (-25%) 567
FPC:prepare_fee 89.9 (+2%) 1,638
Token:transfer_public 17.4 (+6%) 9,301
FPC:pay_refund 41.2 (-6%) 2,170
Benchmarking:increment_balance 1,005 1,584
Token:_increase_public_balance 36.8 (-6%) 1,305
FPC:pay_refund_with_shielded_rebate 56.0 (+9%) 2,170

Public DB Access

Time to access various public DBs.

Function time_ms
get-nullifier-index 0.158 (+1%)

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 256 leaves 512 leaves 1024 leaves
batch_insert_into_append_only_tree_16_depth_ms 2.19 (+1%) 3.85 (-1%) N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_count 16.7 31.8 N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_ms 0.115 (+1%) 0.109 (-1%) N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_32_depth_ms N/A N/A 11.3 17.6 30.9 (+1%) 60.0 113 (-1%)
batch_insert_into_append_only_tree_32_depth_hash_count N/A N/A 95.9 159 287 543 1,055
batch_insert_into_append_only_tree_32_depth_hash_ms N/A N/A 0.109 0.102 0.101 0.104 (+1%) 0.101
batch_insert_into_indexed_tree_20_depth_ms N/A N/A 14.5 (-1%) 26.0 43.8 (-1%) 83.0 160 (-1%)
batch_insert_into_indexed_tree_20_depth_hash_count N/A N/A 109 207 357 691 1,363
batch_insert_into_indexed_tree_20_depth_hash_ms N/A N/A 0.111 (-1%) 0.105 0.104 (-2%) 0.103 (+1%) 0.102 (-1%)
batch_insert_into_indexed_tree_40_depth_ms N/A N/A 16.2 (-1%) N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_count N/A N/A 129 N/A N/A N/A N/A
batch_insert_into_indexed_tree_40_depth_hash_ms N/A N/A 0.107 N/A N/A N/A N/A

Miscellaneous

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

Metric 0 registered classes 1 registered classes
tx_size_in_bytes 72,417 668,302

Transaction size based on fee payment method

| Metric | |
| - | |

Copy link
Contributor

@LHerskind LHerskind left a comment

Choose a reason for hiding this comment

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

Why encoding them packed? 👀

@@ -182,15 +182,16 @@ contract Rollup is Leonidas, IRollup, ITestRollup {
* @param _signatures - Signatures from the validators
* @param _body - The body of the L2 block
*/
function propose(
function proposeWithBody(
Copy link
Contributor

Choose a reason for hiding this comment

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

Following some of this work, I think it would be great to get rid of some of the propose methods. We do not need all of them. As we will be moving to blobs it seems like we could for the interim go with the "there are always provided bodies" and signatures to get rid of some of the others.

This is more a comment to myself than to this pr (see #8452).

@@ -152,9 +152,6 @@ contract Leonidas is Ownable, ILeonidas {

/**
* @notice Get the validator set for the current epoch
*
* @dev Makes a call to setupEpoch under the hood, this should ONLY be called as a view function, and not from within
Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks 🫡

SignatureLib.Signature[] memory _signatures
) public override(IRollup) {
// Decode and validate header
HeaderLib.Header memory header = HeaderLib.decode(_header);
setupEpoch();

bytes32 digest = keccak256(abi.encodePacked(_archive, _txHashes));
Copy link
Contributor

Choose a reason for hiding this comment

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

Why packed?

Copy link
Member Author

Choose a reason for hiding this comment

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

Packed as the encoding of the length seemed useless, it feels like an arbitrary choice to me so I can change it

@@ -64,16 +67,25 @@ export class BlockAttestation extends Gossipable {
return this.sender;
}

getPayload(): Buffer {
return serializeToBuffer([this.archive, this.txHashes]);
Copy link
Contributor

Choose a reason for hiding this comment

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

Re earlier with packing, unclear why.

@@ -66,6 +67,10 @@ export class BlockProposal extends Gossipable {
return this.sender;
}

getPayload() {
return serializeToBuffer([this.archive, this.txs]);
Copy link
Contributor

Choose a reason for hiding this comment

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

Packed?

* 5. They will request this data over the p2p layer
* 6. We receive all of the attestations that we need and we produce the block
*
* Note: we do not attempt to let this node produce a block, as it will not have received any transactions
Copy link
Contributor

Choose a reason for hiding this comment

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

If we are running with walltime, this should not cause a failure but just a "long" wait because it will not publish, did you see so?

Copy link
Member Author

Choose a reason for hiding this comment

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

I will experiment with this

* @returns A promise that resolves to a transaction or undefined.
*/
public async requestTxByHash(txHash: TxHash): Promise<Tx | undefined> {
const tx = await this.p2pService.sendRequest(TX_REQ_PROTOCOL, txHash);
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we have something all the way down here (or deeper) that just returns it if we already have it?

Copy link
Contributor

Choose a reason for hiding this comment

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

Related to my second look comment. Would this not still be "happy" if we provide some other transaction than the one that actually matches txHash?

Copy link
Member Author

Choose a reason for hiding this comment

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

The idea is that you would only call this function if you have already checked that you do not have it. I can include that in a comment to make sure this is the case.

I did not add explicit tests for this here, but I think that I should. We likely cannot rely on the underlying tx pool to perform this check

attestations,
`0x${encodedData.body.toString('hex')}`,
] as const;

// We almost always want to skip simulation here if we are not already within the slot, else we will be one slot ahead
Copy link
Contributor

Choose a reason for hiding this comment

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

This have been cleaned up in #8445 so hopefully not as painful 🫡

@@ -517,6 +531,7 @@ export class L1Publisher {
});
}
} catch (err) {
prettyLogVeimError(err, this.log);
Copy link
Contributor

Choose a reason for hiding this comment

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

🫡


this.log.verbose(`Missing ${missingTxs.length} transactions in the tx pool, requesting from the network`);

const requestedTxs = await this.p2pClient.requestTxs(missingTxs);
Copy link
Contributor

Choose a reason for hiding this comment

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

For this check, should we have the check for for status further down? Just that right would we not end up requesting if we ever get the status wrong etc? 🤷 Just that even if used poorly would not want to request the things we already got.

Copy link
Contributor

Choose a reason for hiding this comment

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

Something I got thinking about. As I read the code currently, if some other transaction is returned instead of the missingTxs would we not end up still signing here?

Copy link
Member Author

Choose a reason for hiding this comment

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

  1. Can we use anything other than the status check?
  2. Validation checks to be added

Copy link
Contributor

@LHerskind LHerskind left a comment

Choose a reason for hiding this comment

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

Took a second short look when a thought came to mind, think you would currently still end up attesting even when provided with different transactions than what you requested.


this.log.verbose(`Missing ${missingTxs.length} transactions in the tx pool, requesting from the network`);

const requestedTxs = await this.p2pClient.requestTxs(missingTxs);
Copy link
Contributor

Choose a reason for hiding this comment

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

Something I got thinking about. As I read the code currently, if some other transaction is returned instead of the missingTxs would we not end up still signing here?

* @returns A promise that resolves to a transaction or undefined.
*/
public async requestTxByHash(txHash: TxHash): Promise<Tx | undefined> {
const tx = await this.p2pService.sendRequest(TX_REQ_PROTOCOL, txHash);
Copy link
Contributor

Choose a reason for hiding this comment

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

Related to my second look comment. Would this not still be "happy" if we provide some other transaction than the one that actually matches txHash?

@Maddiaa0 Maddiaa0 enabled auto-merge (squash) September 11, 2024 13:40
@Maddiaa0 Maddiaa0 merged commit bce1eea into master Sep 11, 2024
98 checks passed
@Maddiaa0 Maddiaa0 deleted the md/check-tx-requests-before-signing branch September 11, 2024 14:57
TomAFrench pushed a commit that referenced this pull request Sep 13, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.55.0](aztec-package-v0.54.0...aztec-package-v0.55.0)
(2024-09-13)


### Bug Fixes

* Load prover node config from env
([#8525](#8525))
([7065962](7065962))


### Miscellaneous

* Remove unneeded propose and da oracle
([#8474](#8474))
([274a6b7](274a6b7))
</details>

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

##
[0.55.0](barretenberg.js-v0.54.0...barretenberg.js-v0.55.0)
(2024-09-13)


### Features

* New test programs for wasm benchmarking
([#8389](#8389))
([0b46e96](0b46e96))
</details>

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

##
[0.55.0](aztec-packages-v0.54.0...aztec-packages-v0.55.0)
(2024-09-13)


### ⚠ BREAKING CHANGES

* Add Not instruction in brillig
([#8488](#8488))
* refactor NoteGetterOptions::select API
([#8504](#8504))
* **avm:** variants for CAST/NOT opcode
([#8497](#8497))
* **avm:** variants for REVERT opcode
([#8487](#8487))

### Features

* (bb) remove redundant constraints on field/group elements when using
goblin plonk
([#8409](#8409))
([12a093d](12a093d))
* Add `Module::structs` (noir-lang/noir#6017)
([cb20e07](cb20e07))
* Add `TypedExpr::get_type`
(noir-lang/noir#5992)
([875cfe6](875cfe6))
* Add assertions for ACVM `FunctionInput` `bit_size`
(noir-lang/noir#5864)
([20d7576](20d7576))
* Add Not instruction in brillig
([#8488](#8488))
([ceda361](ceda361))
* Add timeouts for request / response stream connections
([#8434](#8434))
([190c27f](190c27f))
* **avm:** Parallelize polynomial alloc and set
([#8520](#8520))
([7e73531](7e73531))
* **avm:** Variants for CAST/NOT opcode
([#8497](#8497))
([bc609fa](bc609fa))
* **avm:** Variants for REVERT opcode
([#8487](#8487))
([a0c8915](a0c8915))
* **bb:** Iterative constexpr_for
([#8502](#8502))
([02c3330](02c3330))
* Better error message for misplaced doc comments
(noir-lang/noir#5990)
([875cfe6](875cfe6))
* Change the layout of arrays and vectors to be a single pointer
([#8448](#8448))
([3ad624c](3ad624c))
* Checking finalized sizes + a test of two folding verifiers
([#8503](#8503))
([d9e3f4d](d9e3f4d))
* Extract brillig slice ops to reusable procedures
(noir-lang/noir#6002)
([20d7576](20d7576))
* Format trait impl functions
(noir-lang/noir#6016)
([cb20e07](cb20e07))
* Impl Hash and Eq on more comptime types
(noir-lang/noir#6022)
([cb20e07](cb20e07))
* Implement LSP code action "Implement missing members"
(noir-lang/noir#6020)
([cb20e07](cb20e07))
* Let `has_named_attribute` work for built-in attributes
(noir-lang/noir#6024)
([cb20e07](cb20e07))
* LSP completion function detail
(noir-lang/noir#5993)
([875cfe6](875cfe6))
* Native world state
([#7516](#7516))
([c1aa6f7](c1aa6f7))
* New test programs for wasm benchmarking
([#8389](#8389))
([0b46e96](0b46e96))
* Output timestamps in prover-stats raw logs
([#8476](#8476))
([aa67a14](aa67a14))
* Rate limit peers in request response p2p interactions
([#8498](#8498))
([00146fa](00146fa))
* Refactor NoteGetterOptions::select API
([#8504](#8504))
([e527992](e527992))
* Sync from aztec-packages (noir-lang/noir#5971)
([875cfe6](875cfe6))
* Sync from aztec-packages (noir-lang/noir#6001)
([20d7576](20d7576))
* Use Zac's quicksort algorithm in stdlib sorting
(noir-lang/noir#5940)
([20d7576](20d7576))
* Validators ensure transactions live in their p2p pool before attesting
([#8410](#8410))
([bce1eea](bce1eea))
* Verification key stuff
([#8431](#8431))
([11dc8ff](11dc8ff))


### Bug Fixes

* Correctly print string tokens
(noir-lang/noir#6021)
([cb20e07](cb20e07))
* Enable verifier when deploying the networks
([#8500](#8500))
([f6d31f1](f6d31f1))
* Error when comptime types are used in runtime code
(noir-lang/noir#5987)
([875cfe6](875cfe6))
* Error when mutating comptime variables in non-comptime code
(noir-lang/noir#6003)
([20d7576](20d7576))
* Fix some mistakes in arithmetic generics docs
(noir-lang/noir#5999)
([20d7576](20d7576))
* Fix using lazily elaborated comptime globals
(noir-lang/noir#5995)
([20d7576](20d7576))
* Help link was outdated (noir-lang/noir#6004)
([20d7576](20d7576))
* Load prover node config from env
([#8525](#8525))
([7065962](7065962))
* Remove claim_public from fee juice
([#8337](#8337))
([dca74ae](dca74ae))
* Try to move constant terms to one side for arithmetic generics
(noir-lang/noir#6008)
([cb20e07](cb20e07))
* Use module name as line after which we'll insert auto-import
(noir-lang/noir#6025)
([cb20e07](cb20e07))


### Miscellaneous

* Add some `pub use` and remove unused imports
([#8521](#8521))
([8bd0755](8bd0755))
* **bb:** Fix mac build
([#8505](#8505))
([32fd347](32fd347)),
closes
[#8499](#8499)
* **bb:** Fix mac build
([#8522](#8522))
([986e703](986e703))
* **ci:** Fix bb publishing
([#8486](#8486))
([c210c36](c210c36))
* Fix a load of warnings in aztec-nr
([#8501](#8501))
([35dc1e1](35dc1e1))
* Protogalaxy verifier matches prover 1
([#8414](#8414))
([5a76ec6](5a76ec6))
* Remove RC tracking in mem2reg
(noir-lang/noir#6019)
([cb20e07](cb20e07))
* Remove unneeded propose and da oracle
([#8474](#8474))
([274a6b7](274a6b7))
* Replace relative paths to noir-protocol-circuits
([b179c6b](b179c6b))
* Replace relative paths to noir-protocol-circuits
([1c042be](1c042be))
* Replace relative paths to noir-protocol-circuits
([1c8409f](1c8409f))
* Run mac builds on master
([#8519](#8519))
([c458a79](c458a79))
* Single install script for cargo-binstall
(noir-lang/noir#5998)
([20d7576](20d7576))
* Use uint32_t instead of size_t for databus data
([#8479](#8479))
([79995c8](79995c8))
</details>

<details><summary>barretenberg: 0.55.0</summary>

##
[0.55.0](barretenberg-v0.54.0...barretenberg-v0.55.0)
(2024-09-13)


### ⚠ BREAKING CHANGES

* Add Not instruction in brillig
([#8488](#8488))
* **avm:** variants for CAST/NOT opcode
([#8497](#8497))
* **avm:** variants for REVERT opcode
([#8487](#8487))

### Features

* (bb) remove redundant constraints on field/group elements when using
goblin plonk
([#8409](#8409))
([12a093d](12a093d))
* Add Not instruction in brillig
([#8488](#8488))
([ceda361](ceda361))
* **avm:** Parallelize polynomial alloc and set
([#8520](#8520))
([7e73531](7e73531))
* **avm:** Variants for CAST/NOT opcode
([#8497](#8497))
([bc609fa](bc609fa))
* **avm:** Variants for REVERT opcode
([#8487](#8487))
([a0c8915](a0c8915))
* **bb:** Iterative constexpr_for
([#8502](#8502))
([02c3330](02c3330))
* Checking finalized sizes + a test of two folding verifiers
([#8503](#8503))
([d9e3f4d](d9e3f4d))
* Native world state
([#7516](#7516))
([c1aa6f7](c1aa6f7))
* New test programs for wasm benchmarking
([#8389](#8389))
([0b46e96](0b46e96))
* Verification key stuff
([#8431](#8431))
([11dc8ff](11dc8ff))


### Miscellaneous

* **bb:** Fix mac build
([#8505](#8505))
([32fd347](32fd347)),
closes
[#8499](#8499)
* **bb:** Fix mac build
([#8522](#8522))
([986e703](986e703))
* Protogalaxy verifier matches prover 1
([#8414](#8414))
([5a76ec6](5a76ec6))
* Use uint32_t instead of size_t for databus data
([#8479](#8479))
([79995c8](79995c8))
</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 Sep 14, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.55.0](AztecProtocol/aztec-packages@aztec-package-v0.54.0...aztec-package-v0.55.0)
(2024-09-13)


### Bug Fixes

* Load prover node config from env
([#8525](AztecProtocol/aztec-packages#8525))
([7065962](AztecProtocol/aztec-packages@7065962))


### Miscellaneous

* Remove unneeded propose and da oracle
([#8474](AztecProtocol/aztec-packages#8474))
([274a6b7](AztecProtocol/aztec-packages@274a6b7))
</details>

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

##
[0.55.0](AztecProtocol/aztec-packages@barretenberg.js-v0.54.0...barretenberg.js-v0.55.0)
(2024-09-13)


### Features

* New test programs for wasm benchmarking
([#8389](AztecProtocol/aztec-packages#8389))
([0b46e96](AztecProtocol/aztec-packages@0b46e96))
</details>

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

##
[0.55.0](AztecProtocol/aztec-packages@aztec-packages-v0.54.0...aztec-packages-v0.55.0)
(2024-09-13)


### ⚠ BREAKING CHANGES

* Add Not instruction in brillig
([#8488](AztecProtocol/aztec-packages#8488))
* refactor NoteGetterOptions::select API
([#8504](AztecProtocol/aztec-packages#8504))
* **avm:** variants for CAST/NOT opcode
([#8497](AztecProtocol/aztec-packages#8497))
* **avm:** variants for REVERT opcode
([#8487](AztecProtocol/aztec-packages#8487))

### Features

* (bb) remove redundant constraints on field/group elements when using
goblin plonk
([#8409](AztecProtocol/aztec-packages#8409))
([12a093d](AztecProtocol/aztec-packages@12a093d))
* Add `Module::structs` (noir-lang/noir#6017)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))
* Add `TypedExpr::get_type`
(noir-lang/noir#5992)
([875cfe6](AztecProtocol/aztec-packages@875cfe6))
* Add assertions for ACVM `FunctionInput` `bit_size`
(noir-lang/noir#5864)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Add Not instruction in brillig
([#8488](AztecProtocol/aztec-packages#8488))
([ceda361](AztecProtocol/aztec-packages@ceda361))
* Add timeouts for request / response stream connections
([#8434](AztecProtocol/aztec-packages#8434))
([190c27f](AztecProtocol/aztec-packages@190c27f))
* **avm:** Parallelize polynomial alloc and set
([#8520](AztecProtocol/aztec-packages#8520))
([7e73531](AztecProtocol/aztec-packages@7e73531))
* **avm:** Variants for CAST/NOT opcode
([#8497](AztecProtocol/aztec-packages#8497))
([bc609fa](AztecProtocol/aztec-packages@bc609fa))
* **avm:** Variants for REVERT opcode
([#8487](AztecProtocol/aztec-packages#8487))
([a0c8915](AztecProtocol/aztec-packages@a0c8915))
* **bb:** Iterative constexpr_for
([#8502](AztecProtocol/aztec-packages#8502))
([02c3330](AztecProtocol/aztec-packages@02c3330))
* Better error message for misplaced doc comments
(noir-lang/noir#5990)
([875cfe6](AztecProtocol/aztec-packages@875cfe6))
* Change the layout of arrays and vectors to be a single pointer
([#8448](AztecProtocol/aztec-packages#8448))
([3ad624c](AztecProtocol/aztec-packages@3ad624c))
* Checking finalized sizes + a test of two folding verifiers
([#8503](AztecProtocol/aztec-packages#8503))
([d9e3f4d](AztecProtocol/aztec-packages@d9e3f4d))
* Extract brillig slice ops to reusable procedures
(noir-lang/noir#6002)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Format trait impl functions
(noir-lang/noir#6016)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))
* Impl Hash and Eq on more comptime types
(noir-lang/noir#6022)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))
* Implement LSP code action "Implement missing members"
(noir-lang/noir#6020)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))
* Let `has_named_attribute` work for built-in attributes
(noir-lang/noir#6024)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))
* LSP completion function detail
(noir-lang/noir#5993)
([875cfe6](AztecProtocol/aztec-packages@875cfe6))
* Native world state
([#7516](AztecProtocol/aztec-packages#7516))
([c1aa6f7](AztecProtocol/aztec-packages@c1aa6f7))
* New test programs for wasm benchmarking
([#8389](AztecProtocol/aztec-packages#8389))
([0b46e96](AztecProtocol/aztec-packages@0b46e96))
* Output timestamps in prover-stats raw logs
([#8476](AztecProtocol/aztec-packages#8476))
([aa67a14](AztecProtocol/aztec-packages@aa67a14))
* Rate limit peers in request response p2p interactions
([#8498](AztecProtocol/aztec-packages#8498))
([00146fa](AztecProtocol/aztec-packages@00146fa))
* Refactor NoteGetterOptions::select API
([#8504](AztecProtocol/aztec-packages#8504))
([e527992](AztecProtocol/aztec-packages@e527992))
* Sync from aztec-packages (noir-lang/noir#5971)
([875cfe6](AztecProtocol/aztec-packages@875cfe6))
* Sync from aztec-packages (noir-lang/noir#6001)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Use Zac's quicksort algorithm in stdlib sorting
(noir-lang/noir#5940)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Validators ensure transactions live in their p2p pool before attesting
([#8410](AztecProtocol/aztec-packages#8410))
([bce1eea](AztecProtocol/aztec-packages@bce1eea))
* Verification key stuff
([#8431](AztecProtocol/aztec-packages#8431))
([11dc8ff](AztecProtocol/aztec-packages@11dc8ff))


### Bug Fixes

* Correctly print string tokens
(noir-lang/noir#6021)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))
* Enable verifier when deploying the networks
([#8500](AztecProtocol/aztec-packages#8500))
([f6d31f1](AztecProtocol/aztec-packages@f6d31f1))
* Error when comptime types are used in runtime code
(noir-lang/noir#5987)
([875cfe6](AztecProtocol/aztec-packages@875cfe6))
* Error when mutating comptime variables in non-comptime code
(noir-lang/noir#6003)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Fix some mistakes in arithmetic generics docs
(noir-lang/noir#5999)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Fix using lazily elaborated comptime globals
(noir-lang/noir#5995)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Help link was outdated (noir-lang/noir#6004)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Load prover node config from env
([#8525](AztecProtocol/aztec-packages#8525))
([7065962](AztecProtocol/aztec-packages@7065962))
* Remove claim_public from fee juice
([#8337](AztecProtocol/aztec-packages#8337))
([dca74ae](AztecProtocol/aztec-packages@dca74ae))
* Try to move constant terms to one side for arithmetic generics
(noir-lang/noir#6008)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))
* Use module name as line after which we'll insert auto-import
(noir-lang/noir#6025)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))


### Miscellaneous

* Add some `pub use` and remove unused imports
([#8521](AztecProtocol/aztec-packages#8521))
([8bd0755](AztecProtocol/aztec-packages@8bd0755))
* **bb:** Fix mac build
([#8505](AztecProtocol/aztec-packages#8505))
([32fd347](AztecProtocol/aztec-packages@32fd347)),
closes
[#8499](AztecProtocol/aztec-packages#8499)
* **bb:** Fix mac build
([#8522](AztecProtocol/aztec-packages#8522))
([986e703](AztecProtocol/aztec-packages@986e703))
* **ci:** Fix bb publishing
([#8486](AztecProtocol/aztec-packages#8486))
([c210c36](AztecProtocol/aztec-packages@c210c36))
* Fix a load of warnings in aztec-nr
([#8501](AztecProtocol/aztec-packages#8501))
([35dc1e1](AztecProtocol/aztec-packages@35dc1e1))
* Protogalaxy verifier matches prover 1
([#8414](AztecProtocol/aztec-packages#8414))
([5a76ec6](AztecProtocol/aztec-packages@5a76ec6))
* Remove RC tracking in mem2reg
(noir-lang/noir#6019)
([cb20e07](AztecProtocol/aztec-packages@cb20e07))
* Remove unneeded propose and da oracle
([#8474](AztecProtocol/aztec-packages#8474))
([274a6b7](AztecProtocol/aztec-packages@274a6b7))
* Replace relative paths to noir-protocol-circuits
([b179c6b](AztecProtocol/aztec-packages@b179c6b))
* Replace relative paths to noir-protocol-circuits
([1c042be](AztecProtocol/aztec-packages@1c042be))
* Replace relative paths to noir-protocol-circuits
([1c8409f](AztecProtocol/aztec-packages@1c8409f))
* Run mac builds on master
([#8519](AztecProtocol/aztec-packages#8519))
([c458a79](AztecProtocol/aztec-packages@c458a79))
* Single install script for cargo-binstall
(noir-lang/noir#5998)
([20d7576](AztecProtocol/aztec-packages@20d7576))
* Use uint32_t instead of size_t for databus data
([#8479](AztecProtocol/aztec-packages#8479))
([79995c8](AztecProtocol/aztec-packages@79995c8))
</details>

<details><summary>barretenberg: 0.55.0</summary>

##
[0.55.0](AztecProtocol/aztec-packages@barretenberg-v0.54.0...barretenberg-v0.55.0)
(2024-09-13)


### ⚠ BREAKING CHANGES

* Add Not instruction in brillig
([#8488](AztecProtocol/aztec-packages#8488))
* **avm:** variants for CAST/NOT opcode
([#8497](AztecProtocol/aztec-packages#8497))
* **avm:** variants for REVERT opcode
([#8487](AztecProtocol/aztec-packages#8487))

### Features

* (bb) remove redundant constraints on field/group elements when using
goblin plonk
([#8409](AztecProtocol/aztec-packages#8409))
([12a093d](AztecProtocol/aztec-packages@12a093d))
* Add Not instruction in brillig
([#8488](AztecProtocol/aztec-packages#8488))
([ceda361](AztecProtocol/aztec-packages@ceda361))
* **avm:** Parallelize polynomial alloc and set
([#8520](AztecProtocol/aztec-packages#8520))
([7e73531](AztecProtocol/aztec-packages@7e73531))
* **avm:** Variants for CAST/NOT opcode
([#8497](AztecProtocol/aztec-packages#8497))
([bc609fa](AztecProtocol/aztec-packages@bc609fa))
* **avm:** Variants for REVERT opcode
([#8487](AztecProtocol/aztec-packages#8487))
([a0c8915](AztecProtocol/aztec-packages@a0c8915))
* **bb:** Iterative constexpr_for
([#8502](AztecProtocol/aztec-packages#8502))
([02c3330](AztecProtocol/aztec-packages@02c3330))
* Checking finalized sizes + a test of two folding verifiers
([#8503](AztecProtocol/aztec-packages#8503))
([d9e3f4d](AztecProtocol/aztec-packages@d9e3f4d))
* Native world state
([#7516](AztecProtocol/aztec-packages#7516))
([c1aa6f7](AztecProtocol/aztec-packages@c1aa6f7))
* New test programs for wasm benchmarking
([#8389](AztecProtocol/aztec-packages#8389))
([0b46e96](AztecProtocol/aztec-packages@0b46e96))
* Verification key stuff
([#8431](AztecProtocol/aztec-packages#8431))
([11dc8ff](AztecProtocol/aztec-packages@11dc8ff))


### Miscellaneous

* **bb:** Fix mac build
([#8505](AztecProtocol/aztec-packages#8505))
([32fd347](AztecProtocol/aztec-packages@32fd347)),
closes
[#8499](AztecProtocol/aztec-packages#8499)
* **bb:** Fix mac build
([#8522](AztecProtocol/aztec-packages#8522))
([986e703](AztecProtocol/aztec-packages@986e703))
* Protogalaxy verifier matches prover 1
([#8414](AztecProtocol/aztec-packages#8414))
([5a76ec6](AztecProtocol/aztec-packages@5a76ec6))
* Use uint32_t instead of size_t for databus data
([#8479](AztecProtocol/aztec-packages#8479))
([79995c8](AztecProtocol/aztec-packages@79995c8))
</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