-
Notifications
You must be signed in to change notification settings - Fork 266
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
docs: Yellow paper rollup circuits and state update #3558
Conversation
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Values are compared against data from master at commit L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
MiscellaneousTransaction sizes based on how many contracts are deployed in the tx.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Took a quick view, can look deeper later.
yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr
Outdated
Show resolved
Hide resolved
0122b55
to
da080f9
Compare
82e9e34
to
dc33459
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice writeup. Feel free to merge it once you apply my suggestions.
yellow-paper/docs/state/archive.md
Outdated
|
||
The Archive is an [append-only Merkle tree](./tree_impls.md#append-only-merkle-trees) that stores the headers of all previous blocks in the chain as its leaves. | ||
|
||
For most chain this is not required since they are always executing on the head of the chain. However, since private execution rely on proofs generated by the user they don't have the current head and must be based on historic state. By including all prior headers (which include commitments to the state) the Archive allows us to easily prove that the historic state that a transaction is proven upon was valid. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For most chain this is not required since they are always executing on the head of the chain. However, since private execution rely on proofs generated by the user they don't have the current head and must be based on historic state. By including all prior headers (which include commitments to the state) the Archive allows us to easily prove that the historic state that a transaction is proven upon was valid. | |
For most chain this is not required since they are always executing on the head of the chain. However, since private execution relies on proofs generated by the user they don't have the current head and must be based on historic state. By including all prior headers (which include commitments to the state) the Archive allows us to easily prove that the historic state that a transaction is proven upon was valid. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very cool, this definitely helped my understanding. Have some (opinionated) suggestions, but no need to heed them all.
|
||
For most chain this is not required since they are always executing on the head of the chain. However, since private execution rely on proofs generated by the user they don't have the current head and must be based on historic state. By including all prior headers (which include commitments to the state) the Archive allows us to easily prove that the historic state that a transaction is proven upon was valid. | ||
|
||
Furthermore, since the Headers include a snapshot of the Archive at the time of insertion, as well as commitments to the block content and global variables, we can use it to prove statements about the state at any given block or even transactions that occurred at specific blocks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Furthermore, since the Headers include a snapshot of the Archive at the time of insertion, as well as commitments to the block content and global variables, we can use it to prove statements about the state at any given block or even transactions that occurred at specific blocks. | |
Furthermore, since the Headers include a snapshot of the Archive at the time of insertion, as well as commitments to the block content and global variables, we can use it to prove assertions about the state at any given block or even about transactions that occurred at specific blocks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A statement is essentially a collection of assertions. e.g., that X happened is a statement, but you are using assertions to constrain it
- The merge rollup | ||
- Merges two base rollup proofs OR two merge rollup proofs | ||
- The root rollup | ||
- Merges two merge rollup proofs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Merges two merge rollup proofs | |
- Merges two merge rollup proofs at the top layer |
Maybe?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The root becomes the top, you can take merges from earlier, but it is a bit odd to do since you would just reduce your block size after you already built it 🤷
sidebar_position: 4 | ||
--- | ||
|
||
The root rollup circuit is our top circuit, it apply the state changes passed through its children and the cross-chain messages. It is the one that will communicate with the [validating light node](./../contracts/index.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The root rollup circuit is our top circuit, it apply the state changes passed through its children and the cross-chain messages. It is the one that will communicate with the [validating light node](./../contracts/index.md). | |
The root rollup circuit is our top circuit, it apply the state changes passed through its children and the cross-chain messages. It is the rollup that will communicate with the [validating light node](./../contracts/index.md). |
Maybe ?
This might practically happen through a series of "squisher" circuits that will wrap the proof in another proof that is cheaper to verify on-chain. For example, wrapping a ultra-plonk proof in a standard plonk proof. | ||
::: | ||
|
||
Since the output (public inputs) you will see some overlap with the `ProvenBlock` which is what a node must receive together with a proof to progress the chain. More on this will be covered in the [cross-chain communication](./../contracts/index.md) section. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a bit awkward, I think
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The refer to another doc or sentence in here?
@@ -75,20 +200,20 @@ Persistent storage is expensive so to reduce overhead we only commit to the mess | |||
Some additional discussion/comments on the message structure can be found in [The Republic](https://forum.aztec.network/t/the-republic-a-flexible-optional-governance-proposal-with-self-governed-portals/609/2#supporting-pending-messages-5). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It doesn't allow me to comment on line 194, but
Beware, that while we speak of messages, we are practically passing around only their **hashes** to reduce cost. The `version` value of the `L2Actor` is the version of the rollup, intended to be used allow specifying what version of the rollup the message is intended for or sent from.
I do not understand 'to be used allow specifying', maybe rework ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same but on line 196
'cheap on both L1 and L2, we' -> Maybe a linking word between L2, and we
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, ye can see. Will be fixing it after including the other fixes.
yellow-paper/docs/contracts/index.md
Outdated
@@ -295,7 +382,7 @@ sequenceDiagram | |||
``` | |||
We will walk briefly through the steps of the diagram above. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a bit hard to understand, but could be on me though !
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably me. Will look at it.
Co-authored-by: Jan Beneš <[email protected]> Co-authored-by: esau <[email protected]>
|
||
Together with the [validating light node](./../contracts/index.md) the rollup circuits must ensure that incoming blocks are valid, that state is progressed correctly and that anyone can rebuild the state. | ||
|
||
To support this, we construct a single proof for the entire block, which is then verified by the validating light node. This single proof is constructed by recursively merging proofs together in a binary tree structure. This structure allows us to keep the workload of the individual proof small, while making it very parallelizable. This works very well for case where we want many actors to be able to participate in the proof generation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To support this, we construct a single proof for the entire block, which is then verified by the validating light node. This single proof is constructed by recursively merging proofs together in a binary tree structure. This structure allows us to keep the workload of the individual proof small, while making it very parallelizable. This works very well for case where we want many actors to be able to participate in the proof generation. | |
To support this, we construct a single proof for the entire block, which is then verified by the validating light node. This single proof is constructed by recursively merging proofs together in a binary tree structure. This structure allows us to keep the workload of each individual proof small, while making it very parallelizable. This works very well for the case where we want many actors to be able to participate in the proof generation. |
|
||
To support this, we construct a single proof for the entire block, which is then verified by the validating light node. This single proof is constructed by recursively merging proofs together in a binary tree structure. This structure allows us to keep the workload of the individual proof small, while making it very parallelizable. This works very well for case where we want many actors to be able to participate in the proof generation. | ||
|
||
The tree structure is outlined below, but the general idea is that we have a tree where all the leaves are transactions (kernel proofs) and through $\log n$ steps we can then "compress" them down to just a single root proof. Note that we have three (3) different types of "merger" circuits, namely: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The tree structure is outlined below, but the general idea is that we have a tree where all the leaves are transactions (kernel proofs) and through $\log n$ steps we can then "compress" them down to just a single root proof. Note that we have three (3) different types of "merger" circuits, namely: | |
The tree structure is outlined below, but the general idea is that we have a tree where all the leaves are transactions (kernel proofs) and through $\log (n)$ steps we can then "compress" them down to just a single root proof. Note that we have three (3) different types of "merger" circuits, namely: |
|
||
The tree structure is outlined below, but the general idea is that we have a tree where all the leaves are transactions (kernel proofs) and through $\log n$ steps we can then "compress" them down to just a single root proof. Note that we have three (3) different types of "merger" circuits, namely: | ||
- The base rollup | ||
- Merges two kernel proofs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's likely that each base rollup will only verify 1 kernel proof, now. @sirasistant @LeilaWang did we decide this yet?
:::info CombinedAccumulatedData | ||
Note that the `CombinedAccumulatedData` contains elements that we won't be using throughout the rollup circuits. However, as the data is used for the kernel proofs (when it is build recursively), we will include it here anyway. | ||
::: | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:::warning TODO | |
Reconsider `ContractDeploymentData` in light of the newer (still being finalised) contract deployment flow | |
::: |
class CombinedAccumulatedData { | ||
aggregation_object: AggregationObject | ||
read_requests: List~Fr~ | ||
pending_read_requests: List~Fr~ | ||
note_hashes: List~Fr~ | ||
nullifiers: List~Fr~ | ||
nullified_note_hashes: List~Fr~ | ||
|
||
l2_to_l1_messages: List~Fr~ | ||
|
||
private_call_stack: List~CallRequest~ | ||
public_call_stack: List~CallRequest~ | ||
start_public_data_root: Fr | ||
end_public_data_root: Fr | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
class CombinedAccumulatedData { | |
aggregation_object: AggregationObject | |
read_requests: List~Fr~ | |
pending_read_requests: List~Fr~ | |
note_hashes: List~Fr~ | |
nullifiers: List~Fr~ | |
nullified_note_hashes: List~Fr~ | |
l2_to_l1_messages: List~Fr~ | |
private_call_stack: List~CallRequest~ | |
public_call_stack: List~CallRequest~ | |
start_public_data_root: Fr | |
end_public_data_root: Fr | |
} | |
class CombinedAccumulatedData { | |
aggregation_object: AggregationObject | |
read_requests: List~Fr~ | |
pending_read_requests: List~Fr~ | |
note_hashes: List~Fr~ | |
nullifiers: List~Fr~ | |
nullified_note_hashes: List~Fr~ | |
l2_to_l1_messages: List~Fr~ | |
private_call_stack: List~CallRequest~ | |
public_call_stack: List~CallRequest~ | |
start_public_data_root: Fr | |
end_public_data_root: Fr | |
contracts: List~NewContractData~ | |
public_update_requests: List~PublicDataUpdateRequest~ | |
public_reads: List~PublicDataRead~ | |
logs: List~Logs~ | |
} |
For readability of the diagrams (and to align with how class diagrams are coventionally drawn), I'd strongly recommend including all class items in the box (like I've suggested with this code snippet) (throughout the diagrams of the yellow paper) and also doing the nice callouts to the sub-classes that you've done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm now trying to read the diagram (hosted on local host). It's actually very difficult to read the diagram without all the class items being listed in the class - so I stand by this recommendation/request :)
@@ -66,29 +191,29 @@ struct L2ToL1Msg { | |||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
struct L1Actor { // What's an "actor" in this context?
address: actor,
uint256: chainId,
}
struct L2Actor {
bytes32: actor,
uint256: version,
}
struct L1ToL2Msg {
L1Actor: sender,
L2Actor: recipient,
bytes32: content,
bytes32: secretHash, //
uint32 deadline, // is this an L1 block number or L2 block number, or a timestamp?
uint64 fee,
yellow-paper/docs/contracts/index.md
Outdated
@@ -66,29 +191,29 @@ struct L2ToL1Msg { | |||
} | |||
``` | |||
|
|||
Beware, that while we speak of messages, we are practically passing around only their **hashes** to reduce cost. The `version` value of the `L2Actor` is the version of the rollup, intended to be used allow specifying what version of the rollup the message is intended for or sent from. | |||
Beware, that while we speak of messages, we are practically passing around only their **hashes** to reduce cost. The `version` value of the `L2Actor` is the version of the rollup, which is intended to be used to specifying what version of the rollup the message is intended for or sent from. This waw, multiple rollup instances can use the same inbox/outbox contracts. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Beware, that while we speak of messages, we are practically passing around only their **hashes** to reduce cost. The `version` value of the `L2Actor` is the version of the rollup, which is intended to be used to specifying what version of the rollup the message is intended for or sent from. This waw, multiple rollup instances can use the same inbox/outbox contracts. | |
Beware, that while we speak of messages, we are practically passing around only their **hashes** to reduce cost. The `version` value of the `L2Actor` is the version of the rollup, which is intended to be used to specify which version of the rollup the message is intended for or sent from. This waw, multiple rollup instances can use the same inbox/outbox contracts. |
waw
Typo?
|
||
:::info Why a single hash? | ||
Persistent storage is expensive so to reduce overhead we only commit to the messages and then "open" these for consumption later. We need a hash function that is relatively cheap on both L1 and L2, we chose a modded SHA256 to fit the output value into a single field element. | ||
Compute on L1 is expensive, but storage is extremely expensive! To reduce overhead, we trade storage for computation and only commit to the messages and then "open" these for consumption later. However, since computation also bears significant we need to use a hash function that is relatively cheap on L1, while still being doable inside a snark. For this purpose a modded SHA256 was chosen, modded here meaning that it fits the output value into a single field element using the modulo operator. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Compute on L1 is expensive, but storage is extremely expensive! To reduce overhead, we trade storage for computation and only commit to the messages and then "open" these for consumption later. However, since computation also bears significant we need to use a hash function that is relatively cheap on L1, while still being doable inside a snark. For this purpose a modded SHA256 was chosen, modded here meaning that it fits the output value into a single field element using the modulo operator. | |
Compute on L1 is expensive, but storage is extremely expensive! To reduce overhead, we trade storage for computation and only commit to the messages and then "open" these for consumption later. However, since computation also bears significant we need to use a hash function that is relatively cheap on L1, while still being doable inside a snark. For this purpose a modded SHA256 was chosen, modded here meaning that it fits the output value into a single field element using the modulo operator. | |
:::warning TODO | |
Double-check with the crypto team whether this (modulo) is secure. | |
::: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yellow-paper/docs/contracts/index.md
Outdated
|
||
:::warning Comment for discussion | ||
In the current paradigm, any messages that are sent from the L2 contract to L1 MUST be sent to the portal address. This was to get around the access control issue of private execution and is enforced in the kernel. It practically gives us a 1:M relationship between L1 and L2, where one L1 contract can be specified as the portal for many L2, and communicate with all of them, but each L2 can only communicate with a single L1 contract. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought you had some nice ideas, and were pushing for us to enable an L2 contract to send a message to any L1 contract? Are there still some outstanding problems?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is altered in the rest, think I just it like this in the comment such that it was easier to see 🤷
- Time constraints might change depending on the exact sequencer selection mechanism. | ||
::: | ||
|
||
## Logical Execution | ||
Below, we will outline the **LOGICAL** execution of a L2 block and how the contracts interact with the circuits. We will be executing cross-chain communication before and after the block itself. Note that in reality, the L2 inbox does not exists, and its functionality is handled by the kernel and the rollup circuits. | ||
|
||
|
||
```mermaid |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Having read the doc, I'm still confused about the inbox/outbox terminology.
There's:
- a box for sending L1 to L2 messages that lives on L1
- a box for storing/consuming L2 to L1 messages that lives on L1
- a box for storing/consuming L1 to L2 messages that lives on L2
- a box for sending L2 to L1 messages that lives on L2.
It's not clear which direction is "in" and which is "out". "L2 inbox" is ambiguous: is it an inbox that lives on L2, or is it an inbox on L1 for messages going to L2, or?
The first arrow in the diagram is an arrow from a portal "send msg to L2" which goes to the inbox on L1. That's confused me.
The names aren't conveying enough information to my brain.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See it as "Mike" being the state transitioner. If Alice want to send messages to someone inside the rollup, she gotta go through Mike first. Therefore, she put a message from L1 into Mikes Inbox (L1 inbox). The sequencer Steven comes by and see that Alice's message had a nice fee, so he decided that it belongs in the next block. By order of Steven, Mike will take the message from his inbox, and "send" it to the contract on L2, thereby putting it in his outbox.
If Bob on L2 want to send a message out, he will put in into Mikes L2 Inbox, and Mike will then put it into his outbox on L1.
Mike is a special guy, so he is the only one that have prober inbox and outbox, the rest just rely on him for passing messages around.
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.17.0</summary> ## [0.17.0](aztec-packages-v0.16.9...aztec-packages-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * Remove aggregation objects from RecursionConstraint ([#3885](#3885)) * Noir development branch (serialization changes) ([#3858](#3858)) * **aztec.js:** Move accounts out of aztec.js into new package ([#3844](#3844)) * Add Side effect counter struct for ordering ([#3608](#3608)) * typing partial address, deduplicating `Point`, `Point` -> `GrumpkinPoint` ([#3814](#3814)) * moving `compute_selector` to `FunctionSelector` ([#3806](#3806)) * moving compute_address func to AztecAddress ([#3801](#3801)) * updated note hash and nullifier macro ([#3777](#3777)) * return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](#3735)) * deduplicating circuit types + typing everything ([#3594](#3594)) ### Features * A script which runs `nargo fmt` in all packages + running it ([#3803](#3803)) ([5f0ebd6](5f0ebd6)) * Add new metrics ([#3855](#3855)) ([a2b267b](a2b267b)) * Adding option to set initial and max memory ([#3265](#3265)) ([0ad75fe](0ad75fe)) * **avm-main:** Pil -> permutations ([#3650](#3650)) ([c52acf6](c52acf6)) * **avm-mini:** Call and return opcodes ([#3704](#3704)) ([e534204](e534204)) * **avm:** Add standalone jump opcode ([#3781](#3781)) ([b1b2e7c](b1b2e7c)) * **avm:** VM circuit handles tagged memory ([#3725](#3725)) ([739fe90](739fe90)), closes [#3644](#3644) * **aztec.js:** Move accounts out of aztec.js into new package ([#3844](#3844)) ([afd7b6d](afd7b6d)), closes [#3807](#3807) * Barretenberg doxygen CI ([#3818](#3818)) ([022a918](022a918)) * Bb uses goblin ([#3636](#3636)) ([d093266](d093266)) * Compile base rollup as a circuit ([#3739](#3739)) ([5118d44](5118d44)) * Contract inclusion proof ([#3680](#3680)) ([43aa603](43aa603)) * Correct circuit construction from acir ([#3757](#3757)) ([a876ab8](a876ab8)) * Deduplicating circuit types + typing everything ([#3594](#3594)) ([fcb04a7](fcb04a7)), closes [#3592](#3592) [#3059](#3059) * Goblin and eccvm bench ([#3606](#3606)) ([1fe63b2](1fe63b2)) * Goblinize the final ecc ops in ZM ([#3741](#3741)) ([3048d08](3048d08)) * Launch the monorepo in a codespace. ([#3829](#3829)) ([f5a4a78](f5a4a78)) * Moving `compute_selector` to `FunctionSelector` ([#3806](#3806)) ([bbaebf4](bbaebf4)), closes [#3681](#3681) * Moving compute_address func to AztecAddress ([#3801](#3801)) ([3107aad](3107aad)), closes [#3794](#3794) * Node version check in `yarn-project/bootstrap.sh` ([#3780](#3780)) ([c29e4ee](c29e4ee)) * Noir development branch (serialization changes) ([#3858](#3858)) ([d2ae2cd](d2ae2cd)) * Only one tx per base rollup ([#3742](#3742)) ([9eef247](9eef247)) * ProverPolynomials owns its memory ([#3560](#3560)) ([a4aba00](a4aba00)) * Public data tree as indexed tree ([#3566](#3566)) ([4711ef7](4711ef7)) * PXE adds note processors for stored accounts ([#3673](#3673)) ([93f9315](93f9315)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](#3735)) ([bd5614c](bd5614c)) * Serialize synchronize and simulateTx calls by the pxe via SerialQueue ([#3817](#3817)) ([e893675](e893675)) * Specific membership witness functions in aztec-nr ([#3674](#3674)) ([3403877](3403877)), closes [#3663](#3663) * Tree ids in noir ([#3809](#3809)) ([ec2e36e](ec2e36e)) * Txpool persistence ([#3672](#3672)) ([4dd076c](4dd076c)), closes [#3365](#3365) * Typing partial address, deduplicating `Point`, `Point` -> `GrumpkinPoint` ([#3814](#3814)) ([44458be](44458be)), closes [#3682](#3682) * Update to latest noir and update noir compiler ([#3696](#3696)) ([62a17a4](62a17a4)) * Updated note hash and nullifier macro ([#3777](#3777)) ([e83dd2b](e83dd2b)), closes [#3669](#3669) ### Bug Fixes * AWS deploy_service regex + faucet dockerfile ([#3699](#3699)) ([260c7c3](260c7c3)) * Broken aztec-nr imports ([#3693](#3693)) ([7c8814e](7c8814e)) * Build scripts if statements ([#3700](#3700)) ([4847c19](4847c19)) * **ci:** Contracts_deployed check ([#3703](#3703)) ([6c4bf75](6c4bf75)) * **ci:** Redeploy triggers ([#3677](#3677)) ([cc515da](cc515da)) * CRS not needed for gate_count. Grumpkin not needed for non-goblin. ([#3872](#3872)) ([8cda00d](8cda00d)) * Deploy l1 contracts script ([#3713](#3713)) ([309be4b](309be4b)) * Disable goblin bbjs tests ([#3836](#3836)) ([1f5b2c6](1f5b2c6)) * Docker user permissions ([#3711](#3711)) ([35316fc](35316fc)) * **docs:** Fix docs build during releases ([#3815](#3815)) ([2e0776a](2e0776a)) * **docs:** Force docs build using latest released code always ([#3762](#3762)) ([5545ee6](5545ee6)) * **docs:** Make git repo available when building docs ([#3761](#3761)) ([bce2d99](bce2d99)) * **docs:** Show latest released code on published site ([#3716](#3716)) ([f1eb6d5](f1eb6d5)) * Event macro ([#3784](#3784)) ([3af2438](3af2438)), closes [#3655](#3655) * Fix for faucet and node deployment config ([#3722](#3722)) ([a60b71a](a60b71a)) * Flaky e2e-p2p test ([#3831](#3831)) ([5b1e9f2](5b1e9f2)) * Issue with `run_nargo_fmt.sh` + minor yellow paper naming improvements ([#3833](#3833)) ([8e692c1](8e692c1)) * Map relative path to protocol circuits ([#3694](#3694)) ([125ab1d](125ab1d)) * Noir-protocol circuits ([#3734](#3734)) ([34e2505](34e2505)) * Reenable goblin bbjs for a single test ([#3838](#3838)) ([30e47a0](30e47a0)) * Setup aztec-cli cache ([#3698](#3698)) ([48b7474](48b7474)) * Stale pseudocode in yellow paper process func ([#3869](#3869)) ([4a73e3d](4a73e3d)) * Subrepo commit ([b5bfb0b](b5bfb0b)) * There is no main.js ([#3691](#3691)) ([58ba060](58ba060)) * Unpick world state circulars. ([#3721](#3721)) ([84f4671](84f4671)) * Update for new p2p bootstrap node names ([#3710](#3710)) ([c7b29b3](c7b29b3)) * Update toy to new master ([78cf525](78cf525)) * Use lookup instead of resolve to ensure consider /etc/hosts ([#3720](#3720)) ([eb8413e](eb8413e)) ### Miscellaneous * Add GH action to notify gate count differences ([#3724](#3724)) ([c0a24fb](c0a24fb)), closes [#3467](#3467) * Add Side effect counter struct for ordering ([#3608](#3608)) ([c58b197](c58b197)) * Add small how to diagram section ([#3804](#3804)) ([df581f0](df581f0)) * Added cryptography section to yellow paper ([#3647](#3647)) ([286028b](286028b)) * Adding some clarification after a question on discourse ([#3823](#3823)) ([f3d37d7](f3d37d7)) * Align bb.js testing ([#3840](#3840)) ([c489727](c489727)) * **avm:** Avm memory trace building ([#3835](#3835)) ([b7766d6](b7766d6)) * Aztec js circulars ([#3723](#3723)) ([378407d](378407d)) * Bring boxes back to CI. Build and run using docker/docker-compose. ([#3727](#3727)) ([4a1c0df](4a1c0df)) * Build protocol circuits on CI and stop committing artifacts ([#3816](#3816)) ([fa1c456](fa1c456)) * Checking noir formatting in CI ([#3828](#3828)) ([b53bacf](b53bacf)), closes [#3825](#3825) * Cleaning inconsistency ([#3851](#3851)) ([9bbd70a](9bbd70a)) * Cleanup recursion interface ([#3744](#3744)) ([fde0ac3](fde0ac3)) * **docs:** Add block productions ([#3770](#3770)) ([f091f49](f091f49)) * **docs:** Add high level overview of a tx ([#3763](#3763)) ([9a55e57](9a55e57)) * **docs:** Remove npm reference section from testing page ([#3719](#3719)) ([1484c11](1484c11)) * **docs:** Remove references to npm packages ([#3676](#3676)) ([bd5355f](bd5355f)) * **docs:** Starting a migration notes section ([#3853](#3853)) ([060f39a](060f39a)) * **docs:** Update deps in tutorials ([#3708](#3708)) ([f3d93aa](f3d93aa)) * **docs:** Update install script ([#3847](#3847)) ([7003853](7003853)) * **docs:** Update reference link ([#3768](#3768)) ([18edb98](18edb98)) * **docs:** Update testing pages ([#3733](#3733)) ([1c68e3b](1c68e3b)) * **docs:** Update token bridge tutorial ([#3773](#3773)) ([764cb46](764cb46)) * **docs:** Update trees page ([#3732](#3732)) ([b265531](b265531)) * **dsl:** Abstract nested aggregation object from ACIR ([#3765](#3765)) ([92f72e4](92f72e4)) * Increase benchmark warning threshold for trial decrypt ([#3602](#3602)) ([913943e](913943e)) * Just nargo compile. ([#3775](#3775)) ([3d08ef9](3d08ef9)) * Move boxes out of yarn-project ([#3688](#3688)) ([472596c](472596c)) * Noir sync ([#3884](#3884)) ([217de09](217de09)) * Remove aggregation objects from RecursionConstraint ([#3885](#3885)) ([9a80008](9a80008)) * Remove HashToField128Security ACIR opcode ([#3631](#3631)) ([1d6d3c9](1d6d3c9)) * Removing leaf data type + related cleanup ([#3794](#3794)) ([3030cc8](3030cc8)) * Rename generate-ts/nr commands to codegen. ([#3843](#3843)) ([1fcb964](1fcb964)) * Replace relative paths to noir-protocol-circuits ([c2fed18](c2fed18)) * Replace relative paths to noir-protocol-circuits ([3accd8a](3accd8a)) * Replace relative paths to noir-protocol-circuits ([346590b](346590b)) * Replace relative paths to noir-protocol-circuits ([861d928](861d928)) * Show noir tag alongside commit on sandbox startup ([#3750](#3750)) ([009f66d](009f66d)) * Update governance vote ballot ([#3789](#3789)) ([f8976ad](f8976ad)) * Update how_to_contribute.md ([#3759](#3759)) ([4567ec4](4567ec4)) * Update privacy main.md ([#3760](#3760)) ([c3d8b5d](c3d8b5d)) * Use repo BB for gate diff ([#3852](#3852)) ([506e719](506e719)) * Use simple "flat" CRS. ([#3748](#3748)) ([5c6c2ca](5c6c2ca)) * Use traits in noir-protocol-circuits ([#3832](#3832)) ([88fcf8d](88fcf8d)) ### Documentation * A layout of logs section of yellow paper ([#3582](#3582)) ([8c759f6](8c759f6)) * Add current thinking on upgrades ([#3743](#3743)) ([9f3d972](9f3d972)) * Add da doc ([#3736](#3736)) ([193f3f2](193f3f2)), closes [#3645](#3645) * Bytecode ([#3701](#3701)) ([912df7e](912df7e)) * Extend state documentation ([#3731](#3731)) ([a99cbd6](a99cbd6)) * Remove mentions of noir-compiler ([#3702](#3702)) ([ea7cd50](ea7cd50)) * Yellow paper rollup circuits and state update ([#3558](#3558)) ([b2d6376](b2d6376)) * **yellow-paper:** Circuits ([#3782](#3782)) ([a935ca3](a935ca3)) * **yellow-paper:** Contract deployment ([#3624](#3624)) ([b282867](b282867)), closes [#3104](#3104) * **yellow-paper:** Drop pokodl request in key derivation ([#3837](#3837)) ([a3920fb](a3920fb)) * **yellow-paper:** Update keys and addresses ([#3707](#3707)) ([56992ae](56992ae)) * **yellowpaper:** AVM high-level execution ([#3717](#3717)) ([2ded221](2ded221)) * **yellowpaper:** AVM intro sections ([#3692](#3692)) ([c48e76c](c48e76c)) * **yellowpaper:** Avm nested call returns, updating calling context ([#3749](#3749)) ([a1c701d](a1c701d)) * **yellowpaper:** Finish AVM Context definitions ([#3709](#3709)) ([4cfb427](4cfb427)) * **yellowpaper:** Private kernel circuits ([#3559](#3559)) ([056e553](056e553)) </details> <details><summary>barretenberg.js: 0.17.0</summary> ## [0.17.0](barretenberg.js-v0.16.9...barretenberg.js-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](#3735)) ### Features * Adding option to set initial and max memory ([#3265](#3265)) ([0ad75fe](0ad75fe)) * Bb uses goblin ([#3636](#3636)) ([d093266](d093266)) * Correct circuit construction from acir ([#3757](#3757)) ([a876ab8](a876ab8)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](#3735)) ([bd5614c](bd5614c)) ### Miscellaneous * Remove HashToField128Security ACIR opcode ([#3631](#3631)) ([1d6d3c9](1d6d3c9)) * Use simple "flat" CRS. ([#3748](#3748)) ([5c6c2ca](5c6c2ca)) </details> <details><summary>barretenberg: 0.17.0</summary> ## [0.17.0](barretenberg-v0.16.9...barretenberg-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * Remove aggregation objects from RecursionConstraint ([#3885](#3885)) * Noir development branch (serialization changes) ([#3858](#3858)) * Add Side effect counter struct for ordering ([#3608](#3608)) * return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](#3735)) ### Features * Adding option to set initial and max memory ([#3265](#3265)) ([0ad75fe](0ad75fe)) * **avm-main:** Pil -> permutations ([#3650](#3650)) ([c52acf6](c52acf6)) * **avm-mini:** Call and return opcodes ([#3704](#3704)) ([e534204](e534204)) * **avm:** Add standalone jump opcode ([#3781](#3781)) ([b1b2e7c](b1b2e7c)) * **avm:** VM circuit handles tagged memory ([#3725](#3725)) ([739fe90](739fe90)), closes [#3644](#3644) * Barretenberg doxygen CI ([#3818](#3818)) ([022a918](022a918)) * Bb uses goblin ([#3636](#3636)) ([d093266](d093266)) * Correct circuit construction from acir ([#3757](#3757)) ([a876ab8](a876ab8)) * Goblin and eccvm bench ([#3606](#3606)) ([1fe63b2](1fe63b2)) * Goblinize the final ecc ops in ZM ([#3741](#3741)) ([3048d08](3048d08)) * Noir development branch (serialization changes) ([#3858](#3858)) ([d2ae2cd](d2ae2cd)) * ProverPolynomials owns its memory ([#3560](#3560)) ([a4aba00](a4aba00)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](#3735)) ([bd5614c](bd5614c)) ### Bug Fixes * CRS not needed for gate_count. Grumpkin not needed for non-goblin. ([#3872](#3872)) ([8cda00d](8cda00d)) * Disable goblin bbjs tests ([#3836](#3836)) ([1f5b2c6](1f5b2c6)) * Reenable goblin bbjs for a single test ([#3838](#3838)) ([30e47a0](30e47a0)) * Update toy to new master ([78cf525](78cf525)) ### Miscellaneous * Add Side effect counter struct for ordering ([#3608](#3608)) ([c58b197](c58b197)) * Align bb.js testing ([#3840](#3840)) ([c489727](c489727)) * **avm:** Avm memory trace building ([#3835](#3835)) ([b7766d6](b7766d6)) * Bring boxes back to CI. Build and run using docker/docker-compose. ([#3727](#3727)) ([4a1c0df](4a1c0df)) * Cleanup recursion interface ([#3744](#3744)) ([fde0ac3](fde0ac3)) * **dsl:** Abstract nested aggregation object from ACIR ([#3765](#3765)) ([92f72e4](92f72e4)) * Remove aggregation objects from RecursionConstraint ([#3885](#3885)) ([9a80008](9a80008)) * Remove HashToField128Security ACIR opcode ([#3631](#3631)) ([1d6d3c9](1d6d3c9)) * Use simple "flat" CRS. ([#3748](#3748)) ([5c6c2ca](5c6c2ca)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.17.0</summary> ## [0.17.0](AztecProtocol/aztec-packages@aztec-packages-v0.16.9...aztec-packages-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * Remove aggregation objects from RecursionConstraint ([#3885](AztecProtocol/aztec-packages#3885)) * Noir development branch (serialization changes) ([#3858](AztecProtocol/aztec-packages#3858)) * **aztec.js:** Move accounts out of aztec.js into new package ([#3844](AztecProtocol/aztec-packages#3844)) * Add Side effect counter struct for ordering ([#3608](AztecProtocol/aztec-packages#3608)) * typing partial address, deduplicating `Point`, `Point` -> `GrumpkinPoint` ([#3814](AztecProtocol/aztec-packages#3814)) * moving `compute_selector` to `FunctionSelector` ([#3806](AztecProtocol/aztec-packages#3806)) * moving compute_address func to AztecAddress ([#3801](AztecProtocol/aztec-packages#3801)) * updated note hash and nullifier macro ([#3777](AztecProtocol/aztec-packages#3777)) * return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](AztecProtocol/aztec-packages#3735)) * deduplicating circuit types + typing everything ([#3594](AztecProtocol/aztec-packages#3594)) ### Features * A script which runs `nargo fmt` in all packages + running it ([#3803](AztecProtocol/aztec-packages#3803)) ([5f0ebd6](AztecProtocol/aztec-packages@5f0ebd6)) * Add new metrics ([#3855](AztecProtocol/aztec-packages#3855)) ([a2b267b](AztecProtocol/aztec-packages@a2b267b)) * Adding option to set initial and max memory ([#3265](AztecProtocol/aztec-packages#3265)) ([0ad75fe](AztecProtocol/aztec-packages@0ad75fe)) * **avm-main:** Pil -> permutations ([#3650](AztecProtocol/aztec-packages#3650)) ([c52acf6](AztecProtocol/aztec-packages@c52acf6)) * **avm-mini:** Call and return opcodes ([#3704](AztecProtocol/aztec-packages#3704)) ([e534204](AztecProtocol/aztec-packages@e534204)) * **avm:** Add standalone jump opcode ([#3781](AztecProtocol/aztec-packages#3781)) ([b1b2e7c](AztecProtocol/aztec-packages@b1b2e7c)) * **avm:** VM circuit handles tagged memory ([#3725](AztecProtocol/aztec-packages#3725)) ([739fe90](AztecProtocol/aztec-packages@739fe90)), closes [#3644](AztecProtocol/aztec-packages#3644) * **aztec.js:** Move accounts out of aztec.js into new package ([#3844](AztecProtocol/aztec-packages#3844)) ([afd7b6d](AztecProtocol/aztec-packages@afd7b6d)), closes [#3807](AztecProtocol/aztec-packages#3807) * Barretenberg doxygen CI ([#3818](AztecProtocol/aztec-packages#3818)) ([022a918](AztecProtocol/aztec-packages@022a918)) * Bb uses goblin ([#3636](AztecProtocol/aztec-packages#3636)) ([d093266](AztecProtocol/aztec-packages@d093266)) * Compile base rollup as a circuit ([#3739](AztecProtocol/aztec-packages#3739)) ([5118d44](AztecProtocol/aztec-packages@5118d44)) * Contract inclusion proof ([#3680](AztecProtocol/aztec-packages#3680)) ([43aa603](AztecProtocol/aztec-packages@43aa603)) * Correct circuit construction from acir ([#3757](AztecProtocol/aztec-packages#3757)) ([a876ab8](AztecProtocol/aztec-packages@a876ab8)) * Deduplicating circuit types + typing everything ([#3594](AztecProtocol/aztec-packages#3594)) ([fcb04a7](AztecProtocol/aztec-packages@fcb04a7)), closes [#3592](AztecProtocol/aztec-packages#3592) [#3059](AztecProtocol/aztec-packages#3059) * Goblin and eccvm bench ([#3606](AztecProtocol/aztec-packages#3606)) ([1fe63b2](AztecProtocol/aztec-packages@1fe63b2)) * Goblinize the final ecc ops in ZM ([#3741](AztecProtocol/aztec-packages#3741)) ([3048d08](AztecProtocol/aztec-packages@3048d08)) * Launch the monorepo in a codespace. ([#3829](AztecProtocol/aztec-packages#3829)) ([f5a4a78](AztecProtocol/aztec-packages@f5a4a78)) * Moving `compute_selector` to `FunctionSelector` ([#3806](AztecProtocol/aztec-packages#3806)) ([bbaebf4](AztecProtocol/aztec-packages@bbaebf4)), closes [#3681](AztecProtocol/aztec-packages#3681) * Moving compute_address func to AztecAddress ([#3801](AztecProtocol/aztec-packages#3801)) ([3107aad](AztecProtocol/aztec-packages@3107aad)), closes [#3794](AztecProtocol/aztec-packages#3794) * Node version check in `yarn-project/bootstrap.sh` ([#3780](AztecProtocol/aztec-packages#3780)) ([c29e4ee](AztecProtocol/aztec-packages@c29e4ee)) * Noir development branch (serialization changes) ([#3858](AztecProtocol/aztec-packages#3858)) ([d2ae2cd](AztecProtocol/aztec-packages@d2ae2cd)) * Only one tx per base rollup ([#3742](AztecProtocol/aztec-packages#3742)) ([9eef247](AztecProtocol/aztec-packages@9eef247)) * ProverPolynomials owns its memory ([#3560](AztecProtocol/aztec-packages#3560)) ([a4aba00](AztecProtocol/aztec-packages@a4aba00)) * Public data tree as indexed tree ([#3566](AztecProtocol/aztec-packages#3566)) ([4711ef7](AztecProtocol/aztec-packages@4711ef7)) * PXE adds note processors for stored accounts ([#3673](AztecProtocol/aztec-packages#3673)) ([93f9315](AztecProtocol/aztec-packages@93f9315)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](AztecProtocol/aztec-packages#3735)) ([bd5614c](AztecProtocol/aztec-packages@bd5614c)) * Serialize synchronize and simulateTx calls by the pxe via SerialQueue ([#3817](AztecProtocol/aztec-packages#3817)) ([e893675](AztecProtocol/aztec-packages@e893675)) * Specific membership witness functions in aztec-nr ([#3674](AztecProtocol/aztec-packages#3674)) ([3403877](AztecProtocol/aztec-packages@3403877)), closes [#3663](AztecProtocol/aztec-packages#3663) * Tree ids in noir ([#3809](AztecProtocol/aztec-packages#3809)) ([ec2e36e](AztecProtocol/aztec-packages@ec2e36e)) * Txpool persistence ([#3672](AztecProtocol/aztec-packages#3672)) ([4dd076c](AztecProtocol/aztec-packages@4dd076c)), closes [#3365](AztecProtocol/aztec-packages#3365) * Typing partial address, deduplicating `Point`, `Point` -> `GrumpkinPoint` ([#3814](AztecProtocol/aztec-packages#3814)) ([44458be](AztecProtocol/aztec-packages@44458be)), closes [#3682](AztecProtocol/aztec-packages#3682) * Update to latest noir and update noir compiler ([#3696](AztecProtocol/aztec-packages#3696)) ([62a17a4](AztecProtocol/aztec-packages@62a17a4)) * Updated note hash and nullifier macro ([#3777](AztecProtocol/aztec-packages#3777)) ([e83dd2b](AztecProtocol/aztec-packages@e83dd2b)), closes [#3669](AztecProtocol/aztec-packages#3669) ### Bug Fixes * AWS deploy_service regex + faucet dockerfile ([#3699](AztecProtocol/aztec-packages#3699)) ([260c7c3](AztecProtocol/aztec-packages@260c7c3)) * Broken aztec-nr imports ([#3693](AztecProtocol/aztec-packages#3693)) ([7c8814e](AztecProtocol/aztec-packages@7c8814e)) * Build scripts if statements ([#3700](AztecProtocol/aztec-packages#3700)) ([4847c19](AztecProtocol/aztec-packages@4847c19)) * **ci:** Contracts_deployed check ([#3703](AztecProtocol/aztec-packages#3703)) ([6c4bf75](AztecProtocol/aztec-packages@6c4bf75)) * **ci:** Redeploy triggers ([#3677](AztecProtocol/aztec-packages#3677)) ([cc515da](AztecProtocol/aztec-packages@cc515da)) * CRS not needed for gate_count. Grumpkin not needed for non-goblin. ([#3872](AztecProtocol/aztec-packages#3872)) ([8cda00d](AztecProtocol/aztec-packages@8cda00d)) * Deploy l1 contracts script ([#3713](AztecProtocol/aztec-packages#3713)) ([309be4b](AztecProtocol/aztec-packages@309be4b)) * Disable goblin bbjs tests ([#3836](AztecProtocol/aztec-packages#3836)) ([1f5b2c6](AztecProtocol/aztec-packages@1f5b2c6)) * Docker user permissions ([#3711](AztecProtocol/aztec-packages#3711)) ([35316fc](AztecProtocol/aztec-packages@35316fc)) * **docs:** Fix docs build during releases ([#3815](AztecProtocol/aztec-packages#3815)) ([2e0776a](AztecProtocol/aztec-packages@2e0776a)) * **docs:** Force docs build using latest released code always ([#3762](AztecProtocol/aztec-packages#3762)) ([5545ee6](AztecProtocol/aztec-packages@5545ee6)) * **docs:** Make git repo available when building docs ([#3761](AztecProtocol/aztec-packages#3761)) ([bce2d99](AztecProtocol/aztec-packages@bce2d99)) * **docs:** Show latest released code on published site ([#3716](AztecProtocol/aztec-packages#3716)) ([f1eb6d5](AztecProtocol/aztec-packages@f1eb6d5)) * Event macro ([#3784](AztecProtocol/aztec-packages#3784)) ([3af2438](AztecProtocol/aztec-packages@3af2438)), closes [#3655](AztecProtocol/aztec-packages#3655) * Fix for faucet and node deployment config ([#3722](AztecProtocol/aztec-packages#3722)) ([a60b71a](AztecProtocol/aztec-packages@a60b71a)) * Flaky e2e-p2p test ([#3831](AztecProtocol/aztec-packages#3831)) ([5b1e9f2](AztecProtocol/aztec-packages@5b1e9f2)) * Issue with `run_nargo_fmt.sh` + minor yellow paper naming improvements ([#3833](AztecProtocol/aztec-packages#3833)) ([8e692c1](AztecProtocol/aztec-packages@8e692c1)) * Map relative path to protocol circuits ([#3694](AztecProtocol/aztec-packages#3694)) ([125ab1d](AztecProtocol/aztec-packages@125ab1d)) * Noir-protocol circuits ([#3734](AztecProtocol/aztec-packages#3734)) ([34e2505](AztecProtocol/aztec-packages@34e2505)) * Reenable goblin bbjs for a single test ([#3838](AztecProtocol/aztec-packages#3838)) ([30e47a0](AztecProtocol/aztec-packages@30e47a0)) * Setup aztec-cli cache ([#3698](AztecProtocol/aztec-packages#3698)) ([48b7474](AztecProtocol/aztec-packages@48b7474)) * Stale pseudocode in yellow paper process func ([#3869](AztecProtocol/aztec-packages#3869)) ([4a73e3d](AztecProtocol/aztec-packages@4a73e3d)) * Subrepo commit ([b5bfb0b](AztecProtocol/aztec-packages@b5bfb0b)) * There is no main.js ([#3691](AztecProtocol/aztec-packages#3691)) ([58ba060](AztecProtocol/aztec-packages@58ba060)) * Unpick world state circulars. ([#3721](AztecProtocol/aztec-packages#3721)) ([84f4671](AztecProtocol/aztec-packages@84f4671)) * Update for new p2p bootstrap node names ([#3710](AztecProtocol/aztec-packages#3710)) ([c7b29b3](AztecProtocol/aztec-packages@c7b29b3)) * Update toy to new master ([78cf525](AztecProtocol/aztec-packages@78cf525)) * Use lookup instead of resolve to ensure consider /etc/hosts ([#3720](AztecProtocol/aztec-packages#3720)) ([eb8413e](AztecProtocol/aztec-packages@eb8413e)) ### Miscellaneous * Add GH action to notify gate count differences ([#3724](AztecProtocol/aztec-packages#3724)) ([c0a24fb](AztecProtocol/aztec-packages@c0a24fb)), closes [#3467](AztecProtocol/aztec-packages#3467) * Add Side effect counter struct for ordering ([#3608](AztecProtocol/aztec-packages#3608)) ([c58b197](AztecProtocol/aztec-packages@c58b197)) * Add small how to diagram section ([#3804](AztecProtocol/aztec-packages#3804)) ([df581f0](AztecProtocol/aztec-packages@df581f0)) * Added cryptography section to yellow paper ([#3647](AztecProtocol/aztec-packages#3647)) ([286028b](AztecProtocol/aztec-packages@286028b)) * Adding some clarification after a question on discourse ([#3823](AztecProtocol/aztec-packages#3823)) ([f3d37d7](AztecProtocol/aztec-packages@f3d37d7)) * Align bb.js testing ([#3840](AztecProtocol/aztec-packages#3840)) ([c489727](AztecProtocol/aztec-packages@c489727)) * **avm:** Avm memory trace building ([#3835](AztecProtocol/aztec-packages#3835)) ([b7766d6](AztecProtocol/aztec-packages@b7766d6)) * Aztec js circulars ([#3723](AztecProtocol/aztec-packages#3723)) ([378407d](AztecProtocol/aztec-packages@378407d)) * Bring boxes back to CI. Build and run using docker/docker-compose. ([#3727](AztecProtocol/aztec-packages#3727)) ([4a1c0df](AztecProtocol/aztec-packages@4a1c0df)) * Build protocol circuits on CI and stop committing artifacts ([#3816](AztecProtocol/aztec-packages#3816)) ([fa1c456](AztecProtocol/aztec-packages@fa1c456)) * Checking noir formatting in CI ([#3828](AztecProtocol/aztec-packages#3828)) ([b53bacf](AztecProtocol/aztec-packages@b53bacf)), closes [#3825](AztecProtocol/aztec-packages#3825) * Cleaning inconsistency ([#3851](AztecProtocol/aztec-packages#3851)) ([9bbd70a](AztecProtocol/aztec-packages@9bbd70a)) * Cleanup recursion interface ([#3744](AztecProtocol/aztec-packages#3744)) ([fde0ac3](AztecProtocol/aztec-packages@fde0ac3)) * **docs:** Add block productions ([#3770](AztecProtocol/aztec-packages#3770)) ([f091f49](AztecProtocol/aztec-packages@f091f49)) * **docs:** Add high level overview of a tx ([#3763](AztecProtocol/aztec-packages#3763)) ([9a55e57](AztecProtocol/aztec-packages@9a55e57)) * **docs:** Remove npm reference section from testing page ([#3719](AztecProtocol/aztec-packages#3719)) ([1484c11](AztecProtocol/aztec-packages@1484c11)) * **docs:** Remove references to npm packages ([#3676](AztecProtocol/aztec-packages#3676)) ([bd5355f](AztecProtocol/aztec-packages@bd5355f)) * **docs:** Starting a migration notes section ([#3853](AztecProtocol/aztec-packages#3853)) ([060f39a](AztecProtocol/aztec-packages@060f39a)) * **docs:** Update deps in tutorials ([#3708](AztecProtocol/aztec-packages#3708)) ([f3d93aa](AztecProtocol/aztec-packages@f3d93aa)) * **docs:** Update install script ([#3847](AztecProtocol/aztec-packages#3847)) ([7003853](AztecProtocol/aztec-packages@7003853)) * **docs:** Update reference link ([#3768](AztecProtocol/aztec-packages#3768)) ([18edb98](AztecProtocol/aztec-packages@18edb98)) * **docs:** Update testing pages ([#3733](AztecProtocol/aztec-packages#3733)) ([1c68e3b](AztecProtocol/aztec-packages@1c68e3b)) * **docs:** Update token bridge tutorial ([#3773](AztecProtocol/aztec-packages#3773)) ([764cb46](AztecProtocol/aztec-packages@764cb46)) * **docs:** Update trees page ([#3732](AztecProtocol/aztec-packages#3732)) ([b265531](AztecProtocol/aztec-packages@b265531)) * **dsl:** Abstract nested aggregation object from ACIR ([#3765](AztecProtocol/aztec-packages#3765)) ([92f72e4](AztecProtocol/aztec-packages@92f72e4)) * Increase benchmark warning threshold for trial decrypt ([#3602](AztecProtocol/aztec-packages#3602)) ([913943e](AztecProtocol/aztec-packages@913943e)) * Just nargo compile. ([#3775](AztecProtocol/aztec-packages#3775)) ([3d08ef9](AztecProtocol/aztec-packages@3d08ef9)) * Move boxes out of yarn-project ([#3688](AztecProtocol/aztec-packages#3688)) ([472596c](AztecProtocol/aztec-packages@472596c)) * Noir sync ([#3884](AztecProtocol/aztec-packages#3884)) ([217de09](AztecProtocol/aztec-packages@217de09)) * Remove aggregation objects from RecursionConstraint ([#3885](AztecProtocol/aztec-packages#3885)) ([9a80008](AztecProtocol/aztec-packages@9a80008)) * Remove HashToField128Security ACIR opcode ([#3631](AztecProtocol/aztec-packages#3631)) ([1d6d3c9](AztecProtocol/aztec-packages@1d6d3c9)) * Removing leaf data type + related cleanup ([#3794](AztecProtocol/aztec-packages#3794)) ([3030cc8](AztecProtocol/aztec-packages@3030cc8)) * Rename generate-ts/nr commands to codegen. ([#3843](AztecProtocol/aztec-packages#3843)) ([1fcb964](AztecProtocol/aztec-packages@1fcb964)) * Replace relative paths to noir-protocol-circuits ([c2fed18](AztecProtocol/aztec-packages@c2fed18)) * Replace relative paths to noir-protocol-circuits ([3accd8a](AztecProtocol/aztec-packages@3accd8a)) * Replace relative paths to noir-protocol-circuits ([346590b](AztecProtocol/aztec-packages@346590b)) * Replace relative paths to noir-protocol-circuits ([861d928](AztecProtocol/aztec-packages@861d928)) * Show noir tag alongside commit on sandbox startup ([#3750](AztecProtocol/aztec-packages#3750)) ([009f66d](AztecProtocol/aztec-packages@009f66d)) * Update governance vote ballot ([#3789](AztecProtocol/aztec-packages#3789)) ([f8976ad](AztecProtocol/aztec-packages@f8976ad)) * Update how_to_contribute.md ([#3759](AztecProtocol/aztec-packages#3759)) ([4567ec4](AztecProtocol/aztec-packages@4567ec4)) * Update privacy main.md ([#3760](AztecProtocol/aztec-packages#3760)) ([c3d8b5d](AztecProtocol/aztec-packages@c3d8b5d)) * Use repo BB for gate diff ([#3852](AztecProtocol/aztec-packages#3852)) ([506e719](AztecProtocol/aztec-packages@506e719)) * Use simple "flat" CRS. ([#3748](AztecProtocol/aztec-packages#3748)) ([5c6c2ca](AztecProtocol/aztec-packages@5c6c2ca)) * Use traits in noir-protocol-circuits ([#3832](AztecProtocol/aztec-packages#3832)) ([88fcf8d](AztecProtocol/aztec-packages@88fcf8d)) ### Documentation * A layout of logs section of yellow paper ([#3582](AztecProtocol/aztec-packages#3582)) ([8c759f6](AztecProtocol/aztec-packages@8c759f6)) * Add current thinking on upgrades ([#3743](AztecProtocol/aztec-packages#3743)) ([9f3d972](AztecProtocol/aztec-packages@9f3d972)) * Add da doc ([#3736](AztecProtocol/aztec-packages#3736)) ([193f3f2](AztecProtocol/aztec-packages@193f3f2)), closes [#3645](AztecProtocol/aztec-packages#3645) * Bytecode ([#3701](AztecProtocol/aztec-packages#3701)) ([912df7e](AztecProtocol/aztec-packages@912df7e)) * Extend state documentation ([#3731](AztecProtocol/aztec-packages#3731)) ([a99cbd6](AztecProtocol/aztec-packages@a99cbd6)) * Remove mentions of noir-compiler ([#3702](AztecProtocol/aztec-packages#3702)) ([ea7cd50](AztecProtocol/aztec-packages@ea7cd50)) * Yellow paper rollup circuits and state update ([#3558](AztecProtocol/aztec-packages#3558)) ([b2d6376](AztecProtocol/aztec-packages@b2d6376)) * **yellow-paper:** Circuits ([#3782](AztecProtocol/aztec-packages#3782)) ([a935ca3](AztecProtocol/aztec-packages@a935ca3)) * **yellow-paper:** Contract deployment ([#3624](AztecProtocol/aztec-packages#3624)) ([b282867](AztecProtocol/aztec-packages@b282867)), closes [#3104](AztecProtocol/aztec-packages#3104) * **yellow-paper:** Drop pokodl request in key derivation ([#3837](AztecProtocol/aztec-packages#3837)) ([a3920fb](AztecProtocol/aztec-packages@a3920fb)) * **yellow-paper:** Update keys and addresses ([#3707](AztecProtocol/aztec-packages#3707)) ([56992ae](AztecProtocol/aztec-packages@56992ae)) * **yellowpaper:** AVM high-level execution ([#3717](AztecProtocol/aztec-packages#3717)) ([2ded221](AztecProtocol/aztec-packages@2ded221)) * **yellowpaper:** AVM intro sections ([#3692](AztecProtocol/aztec-packages#3692)) ([c48e76c](AztecProtocol/aztec-packages@c48e76c)) * **yellowpaper:** Avm nested call returns, updating calling context ([#3749](AztecProtocol/aztec-packages#3749)) ([a1c701d](AztecProtocol/aztec-packages@a1c701d)) * **yellowpaper:** Finish AVM Context definitions ([#3709](AztecProtocol/aztec-packages#3709)) ([4cfb427](AztecProtocol/aztec-packages@4cfb427)) * **yellowpaper:** Private kernel circuits ([#3559](AztecProtocol/aztec-packages#3559)) ([056e553](AztecProtocol/aztec-packages@056e553)) </details> <details><summary>barretenberg.js: 0.17.0</summary> ## [0.17.0](AztecProtocol/aztec-packages@barretenberg.js-v0.16.9...barretenberg.js-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](AztecProtocol/aztec-packages#3735)) ### Features * Adding option to set initial and max memory ([#3265](AztecProtocol/aztec-packages#3265)) ([0ad75fe](AztecProtocol/aztec-packages@0ad75fe)) * Bb uses goblin ([#3636](AztecProtocol/aztec-packages#3636)) ([d093266](AztecProtocol/aztec-packages@d093266)) * Correct circuit construction from acir ([#3757](AztecProtocol/aztec-packages#3757)) ([a876ab8](AztecProtocol/aztec-packages@a876ab8)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](AztecProtocol/aztec-packages#3735)) ([bd5614c](AztecProtocol/aztec-packages@bd5614c)) ### Miscellaneous * Remove HashToField128Security ACIR opcode ([#3631](AztecProtocol/aztec-packages#3631)) ([1d6d3c9](AztecProtocol/aztec-packages@1d6d3c9)) * Use simple "flat" CRS. ([#3748](AztecProtocol/aztec-packages#3748)) ([5c6c2ca](AztecProtocol/aztec-packages@5c6c2ca)) </details> <details><summary>barretenberg: 0.17.0</summary> ## [0.17.0](AztecProtocol/aztec-packages@barretenberg-v0.16.9...barretenberg-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * Remove aggregation objects from RecursionConstraint ([#3885](AztecProtocol/aztec-packages#3885)) * Noir development branch (serialization changes) ([#3858](AztecProtocol/aztec-packages#3858)) * Add Side effect counter struct for ordering ([#3608](AztecProtocol/aztec-packages#3608)) * return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](AztecProtocol/aztec-packages#3735)) ### Features * Adding option to set initial and max memory ([#3265](AztecProtocol/aztec-packages#3265)) ([0ad75fe](AztecProtocol/aztec-packages@0ad75fe)) * **avm-main:** Pil -> permutations ([#3650](AztecProtocol/aztec-packages#3650)) ([c52acf6](AztecProtocol/aztec-packages@c52acf6)) * **avm-mini:** Call and return opcodes ([#3704](AztecProtocol/aztec-packages#3704)) ([e534204](AztecProtocol/aztec-packages@e534204)) * **avm:** Add standalone jump opcode ([#3781](AztecProtocol/aztec-packages#3781)) ([b1b2e7c](AztecProtocol/aztec-packages@b1b2e7c)) * **avm:** VM circuit handles tagged memory ([#3725](AztecProtocol/aztec-packages#3725)) ([739fe90](AztecProtocol/aztec-packages@739fe90)), closes [#3644](AztecProtocol/aztec-packages#3644) * Barretenberg doxygen CI ([#3818](AztecProtocol/aztec-packages#3818)) ([022a918](AztecProtocol/aztec-packages@022a918)) * Bb uses goblin ([#3636](AztecProtocol/aztec-packages#3636)) ([d093266](AztecProtocol/aztec-packages@d093266)) * Correct circuit construction from acir ([#3757](AztecProtocol/aztec-packages#3757)) ([a876ab8](AztecProtocol/aztec-packages@a876ab8)) * Goblin and eccvm bench ([#3606](AztecProtocol/aztec-packages#3606)) ([1fe63b2](AztecProtocol/aztec-packages@1fe63b2)) * Goblinize the final ecc ops in ZM ([#3741](AztecProtocol/aztec-packages#3741)) ([3048d08](AztecProtocol/aztec-packages@3048d08)) * Noir development branch (serialization changes) ([#3858](AztecProtocol/aztec-packages#3858)) ([d2ae2cd](AztecProtocol/aztec-packages@d2ae2cd)) * ProverPolynomials owns its memory ([#3560](AztecProtocol/aztec-packages#3560)) ([a4aba00](AztecProtocol/aztec-packages@a4aba00)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([#3735](AztecProtocol/aztec-packages#3735)) ([bd5614c](AztecProtocol/aztec-packages@bd5614c)) ### Bug Fixes * CRS not needed for gate_count. Grumpkin not needed for non-goblin. ([#3872](AztecProtocol/aztec-packages#3872)) ([8cda00d](AztecProtocol/aztec-packages@8cda00d)) * Disable goblin bbjs tests ([#3836](AztecProtocol/aztec-packages#3836)) ([1f5b2c6](AztecProtocol/aztec-packages@1f5b2c6)) * Reenable goblin bbjs for a single test ([#3838](AztecProtocol/aztec-packages#3838)) ([30e47a0](AztecProtocol/aztec-packages@30e47a0)) * Update toy to new master ([78cf525](AztecProtocol/aztec-packages@78cf525)) ### Miscellaneous * Add Side effect counter struct for ordering ([#3608](AztecProtocol/aztec-packages#3608)) ([c58b197](AztecProtocol/aztec-packages@c58b197)) * Align bb.js testing ([#3840](AztecProtocol/aztec-packages#3840)) ([c489727](AztecProtocol/aztec-packages@c489727)) * **avm:** Avm memory trace building ([#3835](AztecProtocol/aztec-packages#3835)) ([b7766d6](AztecProtocol/aztec-packages@b7766d6)) * Bring boxes back to CI. Build and run using docker/docker-compose. ([#3727](AztecProtocol/aztec-packages#3727)) ([4a1c0df](AztecProtocol/aztec-packages@4a1c0df)) * Cleanup recursion interface ([#3744](AztecProtocol/aztec-packages#3744)) ([fde0ac3](AztecProtocol/aztec-packages@fde0ac3)) * **dsl:** Abstract nested aggregation object from ACIR ([#3765](AztecProtocol/aztec-packages#3765)) ([92f72e4](AztecProtocol/aztec-packages@92f72e4)) * Remove aggregation objects from RecursionConstraint ([#3885](AztecProtocol/aztec-packages#3885)) ([9a80008](AztecProtocol/aztec-packages@9a80008)) * Remove HashToField128Security ACIR opcode ([#3631](AztecProtocol/aztec-packages#3631)) ([1d6d3c9](AztecProtocol/aztec-packages@1d6d3c9)) * Use simple "flat" CRS. ([#3748](AztecProtocol/aztec-packages#3748)) ([5c6c2ca](AztecProtocol/aztec-packages@5c6c2ca)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
PR looking to fix AztecProtocol#3148, AztecProtocol#3149 and AztecProtocol#3150. --------- Co-authored-by: Rahul Kothari <[email protected]> Co-authored-by: Jan Beneš <[email protected]> Co-authored-by: esau <[email protected]>
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.17.0</summary> ## [0.17.0](AztecProtocol/aztec-packages@aztec-packages-v0.16.9...aztec-packages-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * Remove aggregation objects from RecursionConstraint ([AztecProtocol#3885](AztecProtocol#3885)) * Noir development branch (serialization changes) ([AztecProtocol#3858](AztecProtocol#3858)) * **aztec.js:** Move accounts out of aztec.js into new package ([AztecProtocol#3844](AztecProtocol#3844)) * Add Side effect counter struct for ordering ([AztecProtocol#3608](AztecProtocol#3608)) * typing partial address, deduplicating `Point`, `Point` -> `GrumpkinPoint` ([AztecProtocol#3814](AztecProtocol#3814)) * moving `compute_selector` to `FunctionSelector` ([AztecProtocol#3806](AztecProtocol#3806)) * moving compute_address func to AztecAddress ([AztecProtocol#3801](AztecProtocol#3801)) * updated note hash and nullifier macro ([AztecProtocol#3777](AztecProtocol#3777)) * return full verification contract from `AcirComposer::get_solidity_verifier` ([AztecProtocol#3735](AztecProtocol#3735)) * deduplicating circuit types + typing everything ([AztecProtocol#3594](AztecProtocol#3594)) ### Features * A script which runs `nargo fmt` in all packages + running it ([AztecProtocol#3803](AztecProtocol#3803)) ([5f0ebd6](AztecProtocol@5f0ebd6)) * Add new metrics ([AztecProtocol#3855](AztecProtocol#3855)) ([a2b267b](AztecProtocol@a2b267b)) * Adding option to set initial and max memory ([AztecProtocol#3265](AztecProtocol#3265)) ([0ad75fe](AztecProtocol@0ad75fe)) * **avm-main:** Pil -> permutations ([AztecProtocol#3650](AztecProtocol#3650)) ([c52acf6](AztecProtocol@c52acf6)) * **avm-mini:** Call and return opcodes ([AztecProtocol#3704](AztecProtocol#3704)) ([e534204](AztecProtocol@e534204)) * **avm:** Add standalone jump opcode ([AztecProtocol#3781](AztecProtocol#3781)) ([b1b2e7c](AztecProtocol@b1b2e7c)) * **avm:** VM circuit handles tagged memory ([AztecProtocol#3725](AztecProtocol#3725)) ([739fe90](AztecProtocol@739fe90)), closes [AztecProtocol#3644](AztecProtocol#3644) * **aztec.js:** Move accounts out of aztec.js into new package ([AztecProtocol#3844](AztecProtocol#3844)) ([afd7b6d](AztecProtocol@afd7b6d)), closes [AztecProtocol#3807](AztecProtocol#3807) * Barretenberg doxygen CI ([AztecProtocol#3818](AztecProtocol#3818)) ([022a918](AztecProtocol@022a918)) * Bb uses goblin ([AztecProtocol#3636](AztecProtocol#3636)) ([d093266](AztecProtocol@d093266)) * Compile base rollup as a circuit ([AztecProtocol#3739](AztecProtocol#3739)) ([5118d44](AztecProtocol@5118d44)) * Contract inclusion proof ([AztecProtocol#3680](AztecProtocol#3680)) ([43aa603](AztecProtocol@43aa603)) * Correct circuit construction from acir ([AztecProtocol#3757](AztecProtocol#3757)) ([a876ab8](AztecProtocol@a876ab8)) * Deduplicating circuit types + typing everything ([AztecProtocol#3594](AztecProtocol#3594)) ([fcb04a7](AztecProtocol@fcb04a7)), closes [AztecProtocol#3592](AztecProtocol#3592) [AztecProtocol#3059](AztecProtocol#3059) * Goblin and eccvm bench ([AztecProtocol#3606](AztecProtocol#3606)) ([1fe63b2](AztecProtocol@1fe63b2)) * Goblinize the final ecc ops in ZM ([AztecProtocol#3741](AztecProtocol#3741)) ([3048d08](AztecProtocol@3048d08)) * Launch the monorepo in a codespace. ([AztecProtocol#3829](AztecProtocol#3829)) ([f5a4a78](AztecProtocol@f5a4a78)) * Moving `compute_selector` to `FunctionSelector` ([AztecProtocol#3806](AztecProtocol#3806)) ([bbaebf4](AztecProtocol@bbaebf4)), closes [AztecProtocol#3681](AztecProtocol#3681) * Moving compute_address func to AztecAddress ([AztecProtocol#3801](AztecProtocol#3801)) ([3107aad](AztecProtocol@3107aad)), closes [AztecProtocol#3794](AztecProtocol#3794) * Node version check in `yarn-project/bootstrap.sh` ([AztecProtocol#3780](AztecProtocol#3780)) ([c29e4ee](AztecProtocol@c29e4ee)) * Noir development branch (serialization changes) ([AztecProtocol#3858](AztecProtocol#3858)) ([d2ae2cd](AztecProtocol@d2ae2cd)) * Only one tx per base rollup ([AztecProtocol#3742](AztecProtocol#3742)) ([9eef247](AztecProtocol@9eef247)) * ProverPolynomials owns its memory ([AztecProtocol#3560](AztecProtocol#3560)) ([a4aba00](AztecProtocol@a4aba00)) * Public data tree as indexed tree ([AztecProtocol#3566](AztecProtocol#3566)) ([4711ef7](AztecProtocol@4711ef7)) * PXE adds note processors for stored accounts ([AztecProtocol#3673](AztecProtocol#3673)) ([93f9315](AztecProtocol@93f9315)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([AztecProtocol#3735](AztecProtocol#3735)) ([bd5614c](AztecProtocol@bd5614c)) * Serialize synchronize and simulateTx calls by the pxe via SerialQueue ([AztecProtocol#3817](AztecProtocol#3817)) ([e893675](AztecProtocol@e893675)) * Specific membership witness functions in aztec-nr ([AztecProtocol#3674](AztecProtocol#3674)) ([3403877](AztecProtocol@3403877)), closes [AztecProtocol#3663](AztecProtocol#3663) * Tree ids in noir ([AztecProtocol#3809](AztecProtocol#3809)) ([ec2e36e](AztecProtocol@ec2e36e)) * Txpool persistence ([AztecProtocol#3672](AztecProtocol#3672)) ([4dd076c](AztecProtocol@4dd076c)), closes [AztecProtocol#3365](AztecProtocol#3365) * Typing partial address, deduplicating `Point`, `Point` -> `GrumpkinPoint` ([AztecProtocol#3814](AztecProtocol#3814)) ([44458be](AztecProtocol@44458be)), closes [AztecProtocol#3682](AztecProtocol#3682) * Update to latest noir and update noir compiler ([AztecProtocol#3696](AztecProtocol#3696)) ([62a17a4](AztecProtocol@62a17a4)) * Updated note hash and nullifier macro ([AztecProtocol#3777](AztecProtocol#3777)) ([e83dd2b](AztecProtocol@e83dd2b)), closes [AztecProtocol#3669](AztecProtocol#3669) ### Bug Fixes * AWS deploy_service regex + faucet dockerfile ([AztecProtocol#3699](AztecProtocol#3699)) ([260c7c3](AztecProtocol@260c7c3)) * Broken aztec-nr imports ([AztecProtocol#3693](AztecProtocol#3693)) ([7c8814e](AztecProtocol@7c8814e)) * Build scripts if statements ([AztecProtocol#3700](AztecProtocol#3700)) ([4847c19](AztecProtocol@4847c19)) * **ci:** Contracts_deployed check ([AztecProtocol#3703](AztecProtocol#3703)) ([6c4bf75](AztecProtocol@6c4bf75)) * **ci:** Redeploy triggers ([AztecProtocol#3677](AztecProtocol#3677)) ([cc515da](AztecProtocol@cc515da)) * CRS not needed for gate_count. Grumpkin not needed for non-goblin. ([AztecProtocol#3872](AztecProtocol#3872)) ([8cda00d](AztecProtocol@8cda00d)) * Deploy l1 contracts script ([AztecProtocol#3713](AztecProtocol#3713)) ([309be4b](AztecProtocol@309be4b)) * Disable goblin bbjs tests ([AztecProtocol#3836](AztecProtocol#3836)) ([1f5b2c6](AztecProtocol@1f5b2c6)) * Docker user permissions ([AztecProtocol#3711](AztecProtocol#3711)) ([35316fc](AztecProtocol@35316fc)) * **docs:** Fix docs build during releases ([AztecProtocol#3815](AztecProtocol#3815)) ([2e0776a](AztecProtocol@2e0776a)) * **docs:** Force docs build using latest released code always ([AztecProtocol#3762](AztecProtocol#3762)) ([5545ee6](AztecProtocol@5545ee6)) * **docs:** Make git repo available when building docs ([AztecProtocol#3761](AztecProtocol#3761)) ([bce2d99](AztecProtocol@bce2d99)) * **docs:** Show latest released code on published site ([AztecProtocol#3716](AztecProtocol#3716)) ([f1eb6d5](AztecProtocol@f1eb6d5)) * Event macro ([AztecProtocol#3784](AztecProtocol#3784)) ([3af2438](AztecProtocol@3af2438)), closes [AztecProtocol#3655](AztecProtocol#3655) * Fix for faucet and node deployment config ([AztecProtocol#3722](AztecProtocol#3722)) ([a60b71a](AztecProtocol@a60b71a)) * Flaky e2e-p2p test ([AztecProtocol#3831](AztecProtocol#3831)) ([5b1e9f2](AztecProtocol@5b1e9f2)) * Issue with `run_nargo_fmt.sh` + minor yellow paper naming improvements ([AztecProtocol#3833](AztecProtocol#3833)) ([8e692c1](AztecProtocol@8e692c1)) * Map relative path to protocol circuits ([AztecProtocol#3694](AztecProtocol#3694)) ([125ab1d](AztecProtocol@125ab1d)) * Noir-protocol circuits ([AztecProtocol#3734](AztecProtocol#3734)) ([34e2505](AztecProtocol@34e2505)) * Reenable goblin bbjs for a single test ([AztecProtocol#3838](AztecProtocol#3838)) ([30e47a0](AztecProtocol@30e47a0)) * Setup aztec-cli cache ([AztecProtocol#3698](AztecProtocol#3698)) ([48b7474](AztecProtocol@48b7474)) * Stale pseudocode in yellow paper process func ([AztecProtocol#3869](AztecProtocol#3869)) ([4a73e3d](AztecProtocol@4a73e3d)) * Subrepo commit ([b5bfb0b](AztecProtocol@b5bfb0b)) * There is no main.js ([AztecProtocol#3691](AztecProtocol#3691)) ([58ba060](AztecProtocol@58ba060)) * Unpick world state circulars. ([AztecProtocol#3721](AztecProtocol#3721)) ([84f4671](AztecProtocol@84f4671)) * Update for new p2p bootstrap node names ([AztecProtocol#3710](AztecProtocol#3710)) ([c7b29b3](AztecProtocol@c7b29b3)) * Update toy to new master ([78cf525](AztecProtocol@78cf525)) * Use lookup instead of resolve to ensure consider /etc/hosts ([AztecProtocol#3720](AztecProtocol#3720)) ([eb8413e](AztecProtocol@eb8413e)) ### Miscellaneous * Add GH action to notify gate count differences ([AztecProtocol#3724](AztecProtocol#3724)) ([c0a24fb](AztecProtocol@c0a24fb)), closes [AztecProtocol#3467](AztecProtocol#3467) * Add Side effect counter struct for ordering ([AztecProtocol#3608](AztecProtocol#3608)) ([c58b197](AztecProtocol@c58b197)) * Add small how to diagram section ([AztecProtocol#3804](AztecProtocol#3804)) ([df581f0](AztecProtocol@df581f0)) * Added cryptography section to yellow paper ([AztecProtocol#3647](AztecProtocol#3647)) ([286028b](AztecProtocol@286028b)) * Adding some clarification after a question on discourse ([AztecProtocol#3823](AztecProtocol#3823)) ([f3d37d7](AztecProtocol@f3d37d7)) * Align bb.js testing ([AztecProtocol#3840](AztecProtocol#3840)) ([c489727](AztecProtocol@c489727)) * **avm:** Avm memory trace building ([AztecProtocol#3835](AztecProtocol#3835)) ([b7766d6](AztecProtocol@b7766d6)) * Aztec js circulars ([AztecProtocol#3723](AztecProtocol#3723)) ([378407d](AztecProtocol@378407d)) * Bring boxes back to CI. Build and run using docker/docker-compose. ([AztecProtocol#3727](AztecProtocol#3727)) ([4a1c0df](AztecProtocol@4a1c0df)) * Build protocol circuits on CI and stop committing artifacts ([AztecProtocol#3816](AztecProtocol#3816)) ([fa1c456](AztecProtocol@fa1c456)) * Checking noir formatting in CI ([AztecProtocol#3828](AztecProtocol#3828)) ([b53bacf](AztecProtocol@b53bacf)), closes [AztecProtocol#3825](AztecProtocol#3825) * Cleaning inconsistency ([AztecProtocol#3851](AztecProtocol#3851)) ([9bbd70a](AztecProtocol@9bbd70a)) * Cleanup recursion interface ([AztecProtocol#3744](AztecProtocol#3744)) ([fde0ac3](AztecProtocol@fde0ac3)) * **docs:** Add block productions ([AztecProtocol#3770](AztecProtocol#3770)) ([f091f49](AztecProtocol@f091f49)) * **docs:** Add high level overview of a tx ([AztecProtocol#3763](AztecProtocol#3763)) ([9a55e57](AztecProtocol@9a55e57)) * **docs:** Remove npm reference section from testing page ([AztecProtocol#3719](AztecProtocol#3719)) ([1484c11](AztecProtocol@1484c11)) * **docs:** Remove references to npm packages ([AztecProtocol#3676](AztecProtocol#3676)) ([bd5355f](AztecProtocol@bd5355f)) * **docs:** Starting a migration notes section ([AztecProtocol#3853](AztecProtocol#3853)) ([060f39a](AztecProtocol@060f39a)) * **docs:** Update deps in tutorials ([AztecProtocol#3708](AztecProtocol#3708)) ([f3d93aa](AztecProtocol@f3d93aa)) * **docs:** Update install script ([AztecProtocol#3847](AztecProtocol#3847)) ([7003853](AztecProtocol@7003853)) * **docs:** Update reference link ([AztecProtocol#3768](AztecProtocol#3768)) ([18edb98](AztecProtocol@18edb98)) * **docs:** Update testing pages ([AztecProtocol#3733](AztecProtocol#3733)) ([1c68e3b](AztecProtocol@1c68e3b)) * **docs:** Update token bridge tutorial ([AztecProtocol#3773](AztecProtocol#3773)) ([764cb46](AztecProtocol@764cb46)) * **docs:** Update trees page ([AztecProtocol#3732](AztecProtocol#3732)) ([b265531](AztecProtocol@b265531)) * **dsl:** Abstract nested aggregation object from ACIR ([AztecProtocol#3765](AztecProtocol#3765)) ([92f72e4](AztecProtocol@92f72e4)) * Increase benchmark warning threshold for trial decrypt ([AztecProtocol#3602](AztecProtocol#3602)) ([913943e](AztecProtocol@913943e)) * Just nargo compile. ([AztecProtocol#3775](AztecProtocol#3775)) ([3d08ef9](AztecProtocol@3d08ef9)) * Move boxes out of yarn-project ([AztecProtocol#3688](AztecProtocol#3688)) ([472596c](AztecProtocol@472596c)) * Noir sync ([AztecProtocol#3884](AztecProtocol#3884)) ([217de09](AztecProtocol@217de09)) * Remove aggregation objects from RecursionConstraint ([AztecProtocol#3885](AztecProtocol#3885)) ([9a80008](AztecProtocol@9a80008)) * Remove HashToField128Security ACIR opcode ([AztecProtocol#3631](AztecProtocol#3631)) ([1d6d3c9](AztecProtocol@1d6d3c9)) * Removing leaf data type + related cleanup ([AztecProtocol#3794](AztecProtocol#3794)) ([3030cc8](AztecProtocol@3030cc8)) * Rename generate-ts/nr commands to codegen. ([AztecProtocol#3843](AztecProtocol#3843)) ([1fcb964](AztecProtocol@1fcb964)) * Replace relative paths to noir-protocol-circuits ([c2fed18](AztecProtocol@c2fed18)) * Replace relative paths to noir-protocol-circuits ([3accd8a](AztecProtocol@3accd8a)) * Replace relative paths to noir-protocol-circuits ([346590b](AztecProtocol@346590b)) * Replace relative paths to noir-protocol-circuits ([861d928](AztecProtocol@861d928)) * Show noir tag alongside commit on sandbox startup ([AztecProtocol#3750](AztecProtocol#3750)) ([009f66d](AztecProtocol@009f66d)) * Update governance vote ballot ([AztecProtocol#3789](AztecProtocol#3789)) ([f8976ad](AztecProtocol@f8976ad)) * Update how_to_contribute.md ([AztecProtocol#3759](AztecProtocol#3759)) ([4567ec4](AztecProtocol@4567ec4)) * Update privacy main.md ([AztecProtocol#3760](AztecProtocol#3760)) ([c3d8b5d](AztecProtocol@c3d8b5d)) * Use repo BB for gate diff ([AztecProtocol#3852](AztecProtocol#3852)) ([506e719](AztecProtocol@506e719)) * Use simple "flat" CRS. ([AztecProtocol#3748](AztecProtocol#3748)) ([5c6c2ca](AztecProtocol@5c6c2ca)) * Use traits in noir-protocol-circuits ([AztecProtocol#3832](AztecProtocol#3832)) ([88fcf8d](AztecProtocol@88fcf8d)) ### Documentation * A layout of logs section of yellow paper ([AztecProtocol#3582](AztecProtocol#3582)) ([8c759f6](AztecProtocol@8c759f6)) * Add current thinking on upgrades ([AztecProtocol#3743](AztecProtocol#3743)) ([9f3d972](AztecProtocol@9f3d972)) * Add da doc ([AztecProtocol#3736](AztecProtocol#3736)) ([193f3f2](AztecProtocol@193f3f2)), closes [AztecProtocol#3645](AztecProtocol#3645) * Bytecode ([AztecProtocol#3701](AztecProtocol#3701)) ([912df7e](AztecProtocol@912df7e)) * Extend state documentation ([AztecProtocol#3731](AztecProtocol#3731)) ([a99cbd6](AztecProtocol@a99cbd6)) * Remove mentions of noir-compiler ([AztecProtocol#3702](AztecProtocol#3702)) ([ea7cd50](AztecProtocol@ea7cd50)) * Yellow paper rollup circuits and state update ([AztecProtocol#3558](AztecProtocol#3558)) ([b2d6376](AztecProtocol@b2d6376)) * **yellow-paper:** Circuits ([AztecProtocol#3782](AztecProtocol#3782)) ([a935ca3](AztecProtocol@a935ca3)) * **yellow-paper:** Contract deployment ([AztecProtocol#3624](AztecProtocol#3624)) ([b282867](AztecProtocol@b282867)), closes [AztecProtocol#3104](AztecProtocol#3104) * **yellow-paper:** Drop pokodl request in key derivation ([AztecProtocol#3837](AztecProtocol#3837)) ([a3920fb](AztecProtocol@a3920fb)) * **yellow-paper:** Update keys and addresses ([AztecProtocol#3707](AztecProtocol#3707)) ([56992ae](AztecProtocol@56992ae)) * **yellowpaper:** AVM high-level execution ([AztecProtocol#3717](AztecProtocol#3717)) ([2ded221](AztecProtocol@2ded221)) * **yellowpaper:** AVM intro sections ([AztecProtocol#3692](AztecProtocol#3692)) ([c48e76c](AztecProtocol@c48e76c)) * **yellowpaper:** Avm nested call returns, updating calling context ([AztecProtocol#3749](AztecProtocol#3749)) ([a1c701d](AztecProtocol@a1c701d)) * **yellowpaper:** Finish AVM Context definitions ([AztecProtocol#3709](AztecProtocol#3709)) ([4cfb427](AztecProtocol@4cfb427)) * **yellowpaper:** Private kernel circuits ([AztecProtocol#3559](AztecProtocol#3559)) ([056e553](AztecProtocol@056e553)) </details> <details><summary>barretenberg.js: 0.17.0</summary> ## [0.17.0](AztecProtocol/aztec-packages@barretenberg.js-v0.16.9...barretenberg.js-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * return full verification contract from `AcirComposer::get_solidity_verifier` ([AztecProtocol#3735](AztecProtocol#3735)) ### Features * Adding option to set initial and max memory ([AztecProtocol#3265](AztecProtocol#3265)) ([0ad75fe](AztecProtocol@0ad75fe)) * Bb uses goblin ([AztecProtocol#3636](AztecProtocol#3636)) ([d093266](AztecProtocol@d093266)) * Correct circuit construction from acir ([AztecProtocol#3757](AztecProtocol#3757)) ([a876ab8](AztecProtocol@a876ab8)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([AztecProtocol#3735](AztecProtocol#3735)) ([bd5614c](AztecProtocol@bd5614c)) ### Miscellaneous * Remove HashToField128Security ACIR opcode ([AztecProtocol#3631](AztecProtocol#3631)) ([1d6d3c9](AztecProtocol@1d6d3c9)) * Use simple "flat" CRS. ([AztecProtocol#3748](AztecProtocol#3748)) ([5c6c2ca](AztecProtocol@5c6c2ca)) </details> <details><summary>barretenberg: 0.17.0</summary> ## [0.17.0](AztecProtocol/aztec-packages@barretenberg-v0.16.9...barretenberg-v0.17.0) (2024-01-09) ### ⚠ BREAKING CHANGES * Remove aggregation objects from RecursionConstraint ([AztecProtocol#3885](AztecProtocol#3885)) * Noir development branch (serialization changes) ([AztecProtocol#3858](AztecProtocol#3858)) * Add Side effect counter struct for ordering ([AztecProtocol#3608](AztecProtocol#3608)) * return full verification contract from `AcirComposer::get_solidity_verifier` ([AztecProtocol#3735](AztecProtocol#3735)) ### Features * Adding option to set initial and max memory ([AztecProtocol#3265](AztecProtocol#3265)) ([0ad75fe](AztecProtocol@0ad75fe)) * **avm-main:** Pil -> permutations ([AztecProtocol#3650](AztecProtocol#3650)) ([c52acf6](AztecProtocol@c52acf6)) * **avm-mini:** Call and return opcodes ([AztecProtocol#3704](AztecProtocol#3704)) ([e534204](AztecProtocol@e534204)) * **avm:** Add standalone jump opcode ([AztecProtocol#3781](AztecProtocol#3781)) ([b1b2e7c](AztecProtocol@b1b2e7c)) * **avm:** VM circuit handles tagged memory ([AztecProtocol#3725](AztecProtocol#3725)) ([739fe90](AztecProtocol@739fe90)), closes [AztecProtocol#3644](AztecProtocol#3644) * Barretenberg doxygen CI ([AztecProtocol#3818](AztecProtocol#3818)) ([022a918](AztecProtocol@022a918)) * Bb uses goblin ([AztecProtocol#3636](AztecProtocol#3636)) ([d093266](AztecProtocol@d093266)) * Correct circuit construction from acir ([AztecProtocol#3757](AztecProtocol#3757)) ([a876ab8](AztecProtocol@a876ab8)) * Goblin and eccvm bench ([AztecProtocol#3606](AztecProtocol#3606)) ([1fe63b2](AztecProtocol@1fe63b2)) * Goblinize the final ecc ops in ZM ([AztecProtocol#3741](AztecProtocol#3741)) ([3048d08](AztecProtocol@3048d08)) * Noir development branch (serialization changes) ([AztecProtocol#3858](AztecProtocol#3858)) ([d2ae2cd](AztecProtocol@d2ae2cd)) * ProverPolynomials owns its memory ([AztecProtocol#3560](AztecProtocol#3560)) ([a4aba00](AztecProtocol@a4aba00)) * Return full verification contract from `AcirComposer::get_solidity_verifier` ([AztecProtocol#3735](AztecProtocol#3735)) ([bd5614c](AztecProtocol@bd5614c)) ### Bug Fixes * CRS not needed for gate_count. Grumpkin not needed for non-goblin. ([AztecProtocol#3872](AztecProtocol#3872)) ([8cda00d](AztecProtocol@8cda00d)) * Disable goblin bbjs tests ([AztecProtocol#3836](AztecProtocol#3836)) ([1f5b2c6](AztecProtocol@1f5b2c6)) * Reenable goblin bbjs for a single test ([AztecProtocol#3838](AztecProtocol#3838)) ([30e47a0](AztecProtocol@30e47a0)) * Update toy to new master ([78cf525](AztecProtocol@78cf525)) ### Miscellaneous * Add Side effect counter struct for ordering ([AztecProtocol#3608](AztecProtocol#3608)) ([c58b197](AztecProtocol@c58b197)) * Align bb.js testing ([AztecProtocol#3840](AztecProtocol#3840)) ([c489727](AztecProtocol@c489727)) * **avm:** Avm memory trace building ([AztecProtocol#3835](AztecProtocol#3835)) ([b7766d6](AztecProtocol@b7766d6)) * Bring boxes back to CI. Build and run using docker/docker-compose. ([AztecProtocol#3727](AztecProtocol#3727)) ([4a1c0df](AztecProtocol@4a1c0df)) * Cleanup recursion interface ([AztecProtocol#3744](AztecProtocol#3744)) ([fde0ac3](AztecProtocol@fde0ac3)) * **dsl:** Abstract nested aggregation object from ACIR ([AztecProtocol#3765](AztecProtocol#3765)) ([92f72e4](AztecProtocol@92f72e4)) * Remove aggregation objects from RecursionConstraint ([AztecProtocol#3885](AztecProtocol#3885)) ([9a80008](AztecProtocol@9a80008)) * Remove HashToField128Security ACIR opcode ([AztecProtocol#3631](AztecProtocol#3631)) ([1d6d3c9](AztecProtocol@1d6d3c9)) * Use simple "flat" CRS. ([AztecProtocol#3748](AztecProtocol#3748)) ([5c6c2ca](AztecProtocol@5c6c2ca)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
PR looking to fix #3148, #3149 and #3150. Very much a work in progress currently.
Checklist:
Remove the checklist to signal you've completed it. Enable auto-merge if the PR is ready to merge.