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: Gas Utils for L1 operations #9834

Merged
merged 56 commits into from
Dec 4, 2024
Merged

feat: Gas Utils for L1 operations #9834

merged 56 commits into from
Dec 4, 2024

Conversation

spypsy
Copy link
Member

@spypsy spypsy commented Nov 8, 2024

Fixes #9833
Also

  • add some env var parsing in local native tests scripts to run against different networks
  • Add getNodeInfo to AztecNode interface

@spypsy spypsy marked this pull request as ready for review November 11, 2024 15:04
@spypsy spypsy requested a review from spalladino November 13, 2024 14:32
Copy link
Collaborator

@spalladino spalladino left a comment

Choose a reason for hiding this comment

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

The scripts look good, but I think the gas utils have a few issues mostly around race conditions and maxFee vs maxPrioFee. We could split up this PR to get the scripts in, while we keep iterating on the gas utils.

Aside from the issues, I'm worried the API for using it makes it much more verbose. It'd be good to have an API where we just pass in the result of simulate, and then the util handles the first send, the monitoring, the retries, etc. Something like:

      const { request } = await this.rollupContract.simulate.submitEpochRootProof(txArgs);
      return await waitWithRetries(request, walletClient, gasOpts);

We should also tweak the e2e test (which maybe we can degrade to a "unit" test that calls startAnvil, using a lower block time?) so that it exercises more scenarios: priority fee spiking instead of just base fee spiking, tx getting dropped (anvil_dropTransaction cheat code is your friend), an older replacement tx getting mined, etc.

Comment on lines 56 to 60
if (isAnvilTestChain(chainId)) {
dualLog(`Funding validator on L1`);
const cheatCodes = new EthCheatCodes(rpcUrl, debugLogger);
await cheatCodes.setBalance(validatorAddress, 10n ** 20n);
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Should we check balance if we're not on anvil, and emit a noisy log remembering the user to fund the address manually?

.addOption(pxeOption)
.description('Gets the information of an Aztec node from a PXE or directly from an Aztec node.')
.option('--node-url <string>', 'URL of the node.', `http://${LOCALHOST}:8080`)
.option('--from-node', 'Get the info directly from an Aztec node.', false)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why not decide based on whether node-url or pxe-url is set, instead of having this flag?

Copy link
Member Author

@spypsy spypsy Nov 14, 2024

Choose a reason for hiding this comment

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

I realize now that's what it actually does in the action below, I forgot to remove this option

export L1_PRIVATE_KEY=$VALIDATOR_PRIVATE_KEY
export SEQ_PUBLISHER_PRIVATE_KEY=$VALIDATOR_PRIVATE_KEY
export DEBUG=${DEBUG:-"aztec:*,-aztec:avm_simulator*,-aztec:libp2p_service*,-aztec:circuits:artifact_hash,-json-rpc*,-aztec:l2_block_stream,-aztec:world-state:*"}
export ETHEREUM_HOST="http://127.0.0.1:8545"
export ETHEREUM_HOST=${ETHEREUM_HOST:-"http://127.0.0.1:8545"}
export IS_ANVIL=${IS_ANVIL:-"true"}
Copy link
Collaborator

Choose a reason for hiding this comment

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

You can use something along these lines (with a try/catch!) to query whether it is anvil or not, so we don't risk forgetting it:

curl -s -H "Content-Type: application/json" -X POST --data '{"method":"web3_clientVersion","params":[],"id":49,"jsonrpc":"2.0"}' $ETHEREUM_HOST | jq .result | grep -q anvil

P2P_PORT=$((40401 + i))
IDX=$((i + 1))

# Use empty string as default if variables are not set
Copy link
Collaborator

Choose a reason for hiding this comment

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

Wouldn't it be safer to fail loudly if the private key is not set?

Copy link
Member Author

Choose a reason for hiding this comment

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

we don't actually want to fail if it's not set, these would only be set when running against public networks like Sepolia where we need to use funded accounts.
In local testing the keys & addresses are later generated in validator.sh and funded when doing add-l1-validator

Copy link
Collaborator

Choose a reason for hiding this comment

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

Makes sense! Could you add a comment with that, so next reader doesn't fall into the same?

Comment on lines 183 to 184
// Transaction not found and enough time has passed - might be stuck
if (Date.now() - lastSeen > config.stallTimeMs && attempts < config.maxAttempts) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

IIUC this bumps gas price if nodes drop the tx altogether, but not if it just sits in the mempool without being mined. We should add another condition for that.

Comment on lines 120 to 129
return retry(
async () => {
const gas = await estimator();
return gas + (gas * this.gasConfig.bufferPercentage) / 100n;
},
'gas estimation',
makeBackoff([1, 2, 3]),
this.logger,
false,
);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why the retry here as opposed to on other rpc calls? If we are seeing flaky rpc endpoints where we need to retry, we should tackle that at a lower level (on viem's "transport" most likely).

this.logger?.info(`Transaction ${currentTxHash} pending`);
if (tx) {
lastSeen = Date.now();
await new Promise(resolve => setTimeout(resolve, config.checkIntervalMs));
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
await new Promise(resolve => setTimeout(resolve, config.checkIntervalMs));
await sleep(config.checkIntervalMs);

Comment on lines 175 to 176
const tx = await this.publicClient.getTransaction({ hash: currentTxHash });
this.logger?.info(`Transaction ${currentTxHash} pending`);
Copy link
Collaborator

Choose a reason for hiding this comment

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

You can do the same trick as with the receipt here. Instead of doing getTx on every hash you've sent, you can query getTxCount using the pending tag, which should consider the txs that are sitting on the mempool for the given sender.

data: originalTx.data,
nonce: originalTx.nonce,
gas: originalTx.gasLimit,
maxFeePerGas: newGasPrice,
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm not sure if bumping only maxFeePerGas without touching maxPriorityFeePerGas has the intended effect. If maxPriorityFeePerGas is not set, then viem defaults it to either a chain default or to whatever the json rpc interface returns (see here). So we're not actually bumping the priority fee, we're just setting it to whatever nodes say is the latest value to use, and ignoring the gasPriceIncrease.

Maybe we should be setting maxPriorityFeePerGas as well? I'm thinking we could just always set maxFeePerGas to gasConfig.maxGwei, and then just handle stuck txs by bumping the maxPriorityFeePerGas, since the user never gets charged more than baseFee + priorityFee. We could get the max prio fee from either eth_maxPriorityFeePerGas RPC as viem does, or from a gas price oracle like BlockNative. Then, for every successive retry, we bump the maxPrioFee to the new eth_maxPriorityFeePerGas we see, or to a multiplier of the previous prio fee, whatever's greater.

@spalladino
Copy link
Collaborator

I guess you're not going to choose me as reviewer in the future, sorry for so throwing in many comments.

Copy link
Collaborator

@spalladino spalladino left a comment

Choose a reason for hiding this comment

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

New API looks a lot cleaner! I left a few more comments after digging through geth.

@@ -18,7 +18,8 @@
"formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
"start:dev": "tsc-watch -p tsconfig.json --onSuccess 'yarn start'",
"start": "node ./dest/index.js",
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests"
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests",
"gas": "node ./dest/test_gas_stuff.js"
Copy link
Collaborator

Choose a reason for hiding this comment

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

:-D

Comment on lines 226 to 237
export const deployerAbi = [
{
inputs: [
{ internalType: 'bytes32', name: 'salt', type: 'bytes32' },
{ internalType: 'bytes', name: 'init_code', type: 'bytes' },
],
name: 'deploy',
outputs: [{ internalType: 'address', name: '', type: 'address' }],
stateMutability: 'nonpayable',
type: 'function',
},
];
Copy link
Collaborator

Choose a reason for hiding this comment

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

Are we using this abi at all? IIRC we had found that the deployer was not abi-compliant, right?

Comment on lines 30 to 31
let publicClient: any;
let walletClient: any;
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
let publicClient: any;
let walletClient: any;
let walletClient: WalletClient<HttpTransport, Chain, Account>,
let publicClient: PublicClient<HttpTransport, Chain>,

Viem can be super annoying with types.

Comment on lines 134 to 142
// Reset base fee
await publicClient.transport.request({
method: 'anvil_setNextBlockBaseFeePerGas',
params: [initialBaseFee.toString()],
});
await publicClient.transport.request({
method: 'evm_mine',
params: [],
});
Copy link
Collaborator

Choose a reason for hiding this comment

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

Should we move this to an afterEach block?

Comment on lines 277 to 282
// Get initial priority fee from the network
let priorityFee = await this.publicClient.estimateMaxPriorityFeePerGas();
if (attempt > 0) {
// Bump priority fee by configured percentage for each attempt
priorityFee = (priorityFee * (100n + (gasConfig.priorityFeeBumpPercentage ?? 20n) * BigInt(attempt))) / 100n;
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

Heads up that this may return a priorityFee that's lower than the one used in the previous attempt, if there was a sudden drop in the current max priority fee estimated by the public client.

If that happens, the node will reject the tx replacement as "underpriced" when we try to send it. Not just that, but the node also requires that there is a minimum bump.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Looking at geth's code, there is a minimum bump enforced for replacements for both the priority fee and the max fee per gas. So we'll need to ensure both are bumped wrt the previous tx we had sent. This means we cannot set the maxFee to the config maximum as I had suggested originally (apologies) since we would not be able to bump it at all if that were the case.

https://github.com/ethereum/go-ethereum/blob/e3d61e6db028c412f74bc4d4c7e117a9e29d0de0/core/txpool/legacypool/list.go#L298-L345

Copy link
Collaborator

Choose a reason for hiding this comment

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

And to make things even more annoying, it seems the replacement threshold is different for blob and regular txs.

https://github.com/ethereum/go-ethereum/blob/e3d61e6db028c412f74bc4d4c7e117a9e29d0de0/core/txpool/blobpool/blobpool.go#L163-L168

Copy link
Collaborator

Choose a reason for hiding this comment

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

So, to consolidate: we need to at least bump both the maxFeePerGas and the maxPrioFeePerGas by a percentage wrt the previous tx we had sent (ie the one we want to replace), but also we want to take into account the current base fee and priority fee we see on the chain.

let attempts = 0;
let lastSeen = Date.now();

while (true) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Seems like we're missing a global timeout where we just give up and throw?

yarn-project/ethereum/src/l1_tx_utils.ts Show resolved Hide resolved
*/
private async estimateGas(account: Account, request: L1TxRequest, _gasConfig?: L1TxUtilsConfig): Promise<bigint> {
const gasConfig = { ...this.config, ..._gasConfig };
const initialEstimate = await this.publicClient.estimateGas({ account, ...request });
Copy link
Collaborator

Choose a reason for hiding this comment

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

Viem throws here if the tx would revert (or so I believe). It'd be good if we catch that error, extract the revert reason (if possible), and throw it back to the caller in an easily digestable format. There's a prettyLogViemErrorMsg we could use for that.

Copy link
Member Author

Choose a reason for hiding this comment

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

it does and it's caught by the propose methods in l1-publisher. I've made #10066 to track this as there's a larger need for consistency in how we handle the error in this case so it's properly recorded in metrics

Comment on lines 93 to 97
// Spike gas price to 3x the initial base fee
await publicClient.transport.request({
method: 'anvil_setNextBlockBaseFeePerGas',
params: [(initialBaseFee * 3n).toString()],
});
Copy link
Collaborator

@spalladino spalladino Nov 20, 2024

Choose a reason for hiding this comment

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

Can we add another test where we spike the priority fee, instead of the base one? Not sure if anvil supports that.

yarn-project/ethereum/src/l1_tx_utils.test.ts Show resolved Hide resolved
Comment on lines 729 to 747
// @note We perform this guesstimate instead of the usual `gasEstimate` since
// viem will use the current state to simulate against, which means that
// we will fail estimation in the case where we are simulating for the
// first ethereum block within our slot (as current time is not in the
// slot yet).
const gasGuesstimate = computeTxsEffectsHashGas + gasGuess;
Copy link
Collaborator

Choose a reason for hiding this comment

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

How did you manage to work around this..?

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've dded an option to add a fixed buffer when sending a tx so we're still adding the same amount to whatever estimate the tx gets.

Copy link
Collaborator

Choose a reason for hiding this comment

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

But the catch here is that the gas estimation is done on a different function than the one actually called in the transaction, because the called one would revert.

Copy link
Member Author

Choose a reason for hiding this comment

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

huh so it should be failing? I haven't seen this revert at all 🤔

Copy link
Collaborator

Choose a reason for hiding this comment

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

It should, yeah. Maybe it's working just because of timings, things being slow enough that we don't end up on the first ethereum block?

Comment on lines 318 to 320
// Bump both priority fee and max fee by at least 10%
priorityFee = (priorityFee * (100n + bumpPercentage * BigInt(attempt))) / 100n;
maxFeePerGas = (maxFeePerGas * (100n + bumpPercentage * BigInt(attempt))) / 100n;
Copy link
Collaborator

Choose a reason for hiding this comment

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

Heads up I think this will not yield the correct bump for the second retry. If the first tx is sent with 100, the first replacement must be sent with 110, and the next replacement will need to go in with 121 (110 * 1.1), not 120.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Also, this is applying a bump on the current values fetched from the chain, not on the values sent with the previous attempt. I think our logic should be sending a retry with the maximum between the current chain values (bumped by a little extra) and the last attempt (bumped by 10% or whatever % we config). And then ensure that is capped by maxGwei as mentioned above.

yarn-project/ethereum/src/l1_tx_utils.ts Show resolved Hide resolved

// Get initial priority fee from the network
let priorityFee = await this.publicClient.estimateMaxPriorityFeePerGas();
let maxFeePerGas = gasConfig.maxGwei! * WEI_CONST;
Copy link
Collaborator

Choose a reason for hiding this comment

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

This means that the user specified maxGwei will not be the maximum, but the value used for the first attempt.

I'd suggest calculating the maxFeePerGas as baseFee (fetched from the getBlock with some padding, keeping in mind that baseFee is capped to increase no more than 12.5% per block, so based on how fast you plan to replace you know up to how much base fee can climb until then) plus whatever you choose as priority fee. Then, after all bumps, check if you've hit max, and if so, bail.

Copy link
Member Author

Choose a reason for hiding this comment

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

right, first part makes sense as we end up bumping the specified maxGwei
confused about the 2nd part with the 12.5% increase. We run this on each attempt so it will fetch the new block's baseFee, why do we need to calculate this 12.5% max increase per block?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Sorry, re-reading my comment I see I wasn't very clear. What I meant is the following: let's say base fees are increasing consistently block over block, and the priority fee is zero (for simplicity). So if block N is at a base fee of 100, then:

N: 100
N+1: 112
N+2: 127
N+3: 142

Now, let's say that stallTime is 24s (2 L1 blocks). If you sent the tx at block N with a base fee of exactly 100, then your tx will not be elligible for inclusion at N+1, and you'll have to wait until N+2 to read the new base fee and resubmit.

If instead you submit your tx at N with a base fee of 127, you know that your tx will always be elligible until the time you retry, at which point you just bump the priority fee (and the total fee to make geth happy). This way you guarantee that you don't "miss" the opportunity of going in N+1.

const baseFee = block.baseFeePerGas ?? 0n;

// Get initial priority fee from the network
let priorityFee = await this.publicClient.estimateMaxPriorityFeePerGas();
Copy link
Collaborator

Choose a reason for hiding this comment

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

WDYT about throwing in a little extra, to make sure we're picked?

Copy link
Member Author

Choose a reason for hiding this comment

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

ah yes, that was the initial method and then ended up under if (attempt > 0)

Copy link
Member Author

Choose a reason for hiding this comment

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

hmm actually no, it was the gas cost that's bumped on each attempt, not the fee

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 guess I wonder if we should be bumping by the defined priorityFeeBumpPercentage or a small fixed percentage, like 3%

Copy link
Collaborator

@spalladino spalladino Nov 28, 2024

Choose a reason for hiding this comment

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

I'd avoid hardcoding anything. Gas prices can fluctuate so much that constants become a pain. I recall hardcoding a max fee of 1000gwei in a system at a time where the average fee was below 1, and a few months later it shot past 1500. So I'd say we go with that bump percentage, or introduce a new config variable for that.

By the way, priority fees (these days) are low enough that even a 100% bump over what's reported is reasonable.

yarn-project/ethereum/src/l1_tx_utils.ts Show resolved Hide resolved
Comment on lines 27 to 36
const startAnvil = async (l1BlockTime?: number) => {
const ethereumHostPort = await getPort();
const rpcUrl = `http://127.0.0.1:${ethereumHostPort}`;
const anvil = createAnvil({
port: ethereumHostPort,
blockTime: l1BlockTime,
});
await anvil.start();
return { anvil, rpcUrl };
};
Copy link
Collaborator

Choose a reason for hiding this comment

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

There's a import { startAnvil } from '@aztec/ethereum/test' now that should take care of all this

});
});
afterAll(async () => {
// disabling interval mining as it seems to cause issues with stopping anvil
Copy link
Collaborator

Choose a reason for hiding this comment

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

Hah! I didn't know that was it! Good find!

Comment on lines 79 to 82
await publicClient.transport.request({
method: 'anvil_setNextBlockBaseFeePerGas',
params: [initialBaseFee.toString()],
});
Copy link
Collaborator

Choose a reason for hiding this comment

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

WDYT about hiding these methods behind EthCheatCodes?

Comment on lines +180 to +181
// Verify that a replacement transaction was created
expect(receipt.transactionHash).not.toBe(txHash);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Nice!!

Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd add an assertion that the gas price was indeed bumped, just for extra safety

Comment on lines 369 to 370
// Add priority fee to maxFeePerGas
maxFeePerGas += priorityFee;
Copy link
Collaborator

Choose a reason for hiding this comment

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

This should happen before the maxFeePerGas = maxFeePerGas > minMaxFee ? maxFeePerGas : minMaxFee, since the minMaxFee already has the priority fee component accounted for.

Otherwise, if maxFeePerGas gets set to minMaxFee and then we add priorityFee on top of it, we'd be accounting for the priorityFee twice.

Copy link
Member Author

Choose a reason for hiding this comment

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

right ofc 🤦

Copy link
Collaborator

@spalladino spalladino left a comment

Choose a reason for hiding this comment

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

🚢 it!

@spypsy spypsy merged commit 17fa214 into master Dec 4, 2024
104 checks passed
@spypsy spypsy deleted the spy/gas-utils branch December 4, 2024 13:05
just-mitch pushed a commit that referenced this pull request Dec 6, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.66.0](aztec-package-v0.65.2...aztec-package-v0.66.0)
(2024-12-06)


### ⚠ BREAKING CHANGES

* Remove debug and winston in favor of pino
([#10355](#10355))

### Features

* Agent and broker expose OTEL metrics
([#10264](#10264))
([c2c8cc6](c2c8cc6))
* Epoch cache, do not attest if not in committee or from current
proposer
([#10327](#10327))
([9ebaa65](9ebaa65))
* Staking integration
([#10403](#10403))
([ecd6c4f](ecd6c4f))


### Miscellaneous

* Remove debug and winston in favor of pino
([#10355](#10355))
([c246aba](c246aba))
</details>

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

##
[0.66.0](barretenberg.js-v0.65.2...barretenberg.js-v0.66.0)
(2024-12-06)


### Miscellaneous

* **barretenberg.js:** Synchronize aztec-packages versions
</details>

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

##
[0.66.0](aztec-packages-v0.65.2...aztec-packages-v0.66.0)
(2024-12-06)


### ⚠ BREAKING CHANGES

* remove `ec` module from stdlib
(noir-lang/noir#6612)
* Disallow `#[export]` on associated methods
(noir-lang/noir#6626)
* Require types of globals to be specified
(noir-lang/noir#6592)
* remove eddsa from stdlib (noir-lang/noir#6591)
* Remove debug and winston in favor of pino
([#10355](#10355))
* remove SchnorrVerify opcode
([#9897](#9897))

### Features

* Add `array_refcount` and `slice_refcount` builtins for debugging
(noir-lang/noir#6584)
([3304046](3304046))
* Add `BoundedVec::from_parts` and `BoundedVec::from_parts_unchecked`
(noir-lang/noir#6691)
([3304046](3304046))
* Add memory report into the CI
(noir-lang/noir#6630)
([3304046](3304046))
* Add workflow_call trigger to network-deploy
([#10451](#10451))
([18254e6](18254e6))
* Adding configurable data dir and p2p pk for testnet nodes
([#10422](#10422))
([77b0039](77b0039))
* Agent and broker expose OTEL metrics
([#10264](#10264))
([c2c8cc6](c2c8cc6))
* Allow filtering which SSA passes are printed
(noir-lang/noir#6636)
([3304046](3304046))
* Allow ignoring test failures from foreign calls
(noir-lang/noir#6660)
([3304046](3304046))
* Allow querying block number for tree indices
([#10332](#10332))
([cf05a7a](cf05a7a))
* AMM
([#10153](#10153))
([90668c3](90668c3))
* Avoid incrementing reference counts in some cases
(noir-lang/noir#6568)
([3304046](3304046))
* Avoid inserting an empty leaf in indexed trees on update
([#10281](#10281))
([5a04ca8](5a04ca8))
* Avoid inserting an empty leaf in indexed trees on update
([#10334](#10334))
([80fad45](80fad45))
* **bb:** Define std::hash for field
([#10312](#10312))
([752bc59](752bc59))
* Better error message when trying to invoke struct function field
(noir-lang/noir#6661)
([3304046](3304046))
* Client IVC API
([#10217](#10217))
([cc54a1e](cc54a1e))
* **comptime:** Implement blackbox functions in comptime interpreter
(noir-lang/noir#6551)
([3304046](3304046))
* Delete attestations older than a slot
([#10326](#10326))
([24abcfe](24abcfe))
* Deploy devnet to k8s
([#10449](#10449))
([27506c1](27506c1))
* Deploy networks via github actions
([#10381](#10381))
([7e19b39](7e19b39))
* **docs:** Applied structure feedback
([#9288](#9288))
([5b0b721](5b0b721))
* Epoch cache, do not attest if not in committee or from current
proposer
([#10327](#10327))
([9ebaa65](9ebaa65))
* Gas Utils for L1 operations
([#9834](#9834))
([17fa214](17fa214))
* Improve parser recovery of constructor field with '::' instead of ':'
(noir-lang/noir#6701)
([3304046](3304046))
* Integrate verify_proof calls in mock protocol circuits
([#9253](#9253))
([7ed89aa](7ed89aa))
* Making testnet script write a docker compose file
([#10333](#10333))
([be54cc3](be54cc3))
* Manage enqueued calls & phases in AVM witgen
([#10310](#10310))
([e7ebef8](e7ebef8))
* Mock IVC state from arbitrary acir IVC recursion constraints
([#10314](#10314))
([ac7c0da](ac7c0da))
* Optionally emit public bytecode
([#10365](#10365))
([84ff623](84ff623))
* **p2p:** Persist node private p2p keys
([#10324](#10324))
([1c32eda](1c32eda))
* **p2p:** Snappy compress p2p messages
([#10417](#10417))
([c643a54](c643a54))
* **perf:** Track last loads per block in mem2reg and remove them if
possible (noir-lang/noir#6088)
([3304046](3304046))
* Process blocks in parallel during epoch proving
([#10263](#10263))
([a9d418c](a9d418c))
* Reduce memory consumption by storing array length as `u32` during SSA
(noir-lang/noir#6606)
([3304046](3304046))
* Release please for release branch
([#10467](#10467))
([38941bf](38941bf))
* Replace quadratic removal of `rc` instructions
(noir-lang/noir#6705)
([3304046](3304046))
* Replace quadratic removal of rc instructions
([#10416](#10416))
([9d833c5](9d833c5))
* Revert changes to `ValueMerger` and `Instruction::IfElse`
(noir-lang/noir#6673)
([3304046](3304046))
* Show printable byte arrays as byte strings in SSA
(noir-lang/noir#6709)
([3304046](3304046))
* Simplify `jmpif`s by reversing branches if condition is negated
(noir-lang/noir#5891)
([3304046](3304046))
* **ssa:** Deduplicate intrinsics with predicates
(noir-lang/noir#6615)
([3304046](3304046))
* **ssa:** Hoisting of array get using known induction variable maximum
(noir-lang/noir#6639)
([3304046](3304046))
* **ssa:** Loop invariant code motion
(noir-lang/noir#6563)
([3304046](3304046))
* **ssa:** Option to set the maximum acceptable Brillig bytecode
increase in unrolling (noir-lang/noir#6641)
([3304046](3304046))
* **ssa:** Simplify array get from set that writes to the same dynamic
index (noir-lang/noir#6684)
([3304046](3304046))
* Staking integration
([#10403](#10403))
([ecd6c4f](ecd6c4f))
* Standalone ssd
([#10317](#10317))
([c324781](c324781))
* Switch to using an external noir implementation of Schnorr
([#10330](#10330))
([6cbd375](6cbd375))
* Sync from aztec-packages (noir-lang/noir#6576)
([3304046](3304046))
* Sync from aztec-packages (noir-lang/noir#6634)
([3304046](3304046))
* Sync from aztec-packages (noir-lang/noir#6656)
([3304046](3304046))
* Terraform for alerting on metrics
([#10192](#10192))
([05c9e5d](05c9e5d)),
closes
[#9956](#9956)
* Test release network via ci workflow
([#10388](#10388))
([e6060ec](e6060ec)),
closes
[#10383](#10383)
* **tooling:** Skip program transformation when loaded from cache
(noir-lang/noir#6689)
([3304046](3304046))
* Try to inline brillig calls with all constant arguments
(noir-lang/noir#6548)
([3304046](3304046))
* Ultra rollup flows
([#10162](#10162))
([c53f4cf](c53f4cf))
* Zip and propagate private logs
([#10210](#10210))
([5c32747](5c32747))
* Zip and silo and propagate private logs
([#10308](#10308))
([90d4385](90d4385))


### Bug Fixes

* Add helm
([#10454](#10454))
([2eb9ade](2eb9ade))
* Add secret
([#10453](#10453))
([95601df](95601df))
* Add type
([#10452](#10452))
([cd9699f](cd9699f))
* Allow multiple `_` parameters, and disallow `_` as an expression you
can read from (noir-lang/noir#6657)
([3304046](3304046))
* Always return an array of `u8`s when simplifying `Intrinsic::ToRadix`
calls (noir-lang/noir#6663)
([3304046](3304046))
* Await block unwind when a reorg happens
([#10380](#10380))
([5a02480](5a02480))
* Bbup cleanup and fix
([#10067](#10067))
([0ff8177](0ff8177))
* Bootstrapping devnet
([#10396](#10396))
([f3c7294](f3c7294))
* Bot waits for pxe synch
([#10316](#10316))
([ebd4165](ebd4165))
* Consider prereleases to be compatible with pre-1.0.0 releases
(noir-lang/noir#6580)
([3304046](3304046))
* Correct signed integer handling in `noirc_abi`
(noir-lang/noir#6638)
([3304046](3304046))
* Correct type when simplifying `derive_pedersen_generators`
(noir-lang/noir#6579)
([3304046](3304046))
* Correct types returned by constant EC operations simplified within SSA
(noir-lang/noir#6652)
([3304046](3304046))
* Disallow `#[export]` on associated methods
(noir-lang/noir#6626)
([3304046](3304046))
* Do not warn on unused functions marked with #[export]
(noir-lang/noir#6625)
([3304046](3304046))
* Don't pass default value for --node-url
([#10427](#10427))
([5299481](5299481)),
closes
[#10419](#10419)
* Don't remove necessary RC instructions in DIE pass
(noir-lang/noir#6585)
([3304046](3304046))
* Don't report visibility errors when elaborating comptime value
(noir-lang/noir#6498)
([3304046](3304046))
* Get node info from a PXE
([#10420](#10420))
([ed972f3](ed972f3))
* Increase timeouts
([#10412](#10412))
([d3b8838](d3b8838))
* LSP auto-import text indent
(noir-lang/noir#6699)
([3304046](3304046))
* LSP code action wasn't triggering on beginning or end of identifier
(noir-lang/noir#6616)
([3304046](3304046))
* **LSP:** Use generic self type to narrow down methods to complete
(noir-lang/noir#6617)
([3304046](3304046))
* Move spartan-script tf to spartan, use file in bucket
([#10395](#10395))
([5cef628](5cef628))
* Nit
([#10392](#10392))
([d6985a8](d6985a8))
* Optimize array ref counts to copy arrays much less often
(noir-lang/noir#6685)
([3304046](3304046))
* **p2p:** Override msg Id
([#10415](#10415))
([990d11b](990d11b))
* Parse a bit more SSA stuff
(noir-lang/noir#6599)
([3304046](3304046))
* Preserve newlines between comments when formatting statements
(noir-lang/noir#6601)
([3304046](3304046))
* Prevent hoisting binary instructions which can overflow
(noir-lang/noir#6672)
([3304046](3304046))
* **prover:** Handle starting blocks out of order in prover
([#10350](#10350))
([9106102](9106102))
* Publicly register contract classes
([#10385](#10385))
([94e6e1a](94e6e1a))
* Remove `compiler_version` from new `Nargo.toml`
(noir-lang/noir#6590)
([3304046](3304046))
* Revert "feat: Avoid inserting an empty leaf in indexed trees on
update"
([#10319](#10319))
([887c011](887c011))
* Revert "feat: zip and propagate private logs"
([#10302](#10302))
([9d70728](9d70728))
* Safely insert sibling paths
([#10423](#10423))
([41f7645](41f7645))
* **ssa:** Don't deduplicate constraints in blocks that are not
dominated (noir-lang/noir#6627)
([3304046](3304046))
* **ssa:** Remove RC tracker in DIE
(noir-lang/noir#6700)
([3304046](3304046))
* **ssa:** Track all local allocations during flattening
(noir-lang/noir#6619)
([3304046](3304046))
* Tf vars
([#10457](#10457))
([00aaef6](00aaef6))
* Typo in u128 docs (noir-lang/noir#6711)
([3304046](3304046))
* Url in bbup install
([#10456](#10456))
([1b0dfb7](1b0dfb7))
* Use correct type for attribute arguments
(noir-lang/noir#6640)
([3304046](3304046))
* Used signed division for signed modulo
(noir-lang/noir#6635)
([3304046](3304046))
* Witness changes in file sponge.hpp
([#10345](#10345))
([4a38edf](4a38edf))


### Miscellaneous

* Add `ram_blowup_regression` to memory report
(noir-lang/noir#6683)
([3304046](3304046))
* Add panic for compiler error described in
[#6620](#6620)
(noir-lang/noir#6621)
([3304046](3304046))
* **avm:** Fake verification routine for avm recursion in public base
rollup
([#10382](#10382))
([a1e5966](a1e5966)),
closes
[#10243](#10243)
* **avm:** Remove function selector type of getenv opcode
([#10406](#10406))
([38c0c14](38c0c14)),
closes
[#9396](#9396)
* Batch archiver requests
([#10442](#10442))
([9443e8e](9443e8e))
* Boot node has fixed peer id private key
([#10352](#10352))
([cae1203](cae1203))
* Bump alert in gossip_network.test.ts
([#10430](#10430))
([2c2169b](2c2169b))
* Centralized helm flag for proving and clean release tf deploys
([#10221](#10221))
([c2c1744](c2c1744))
* **ci:** Move playwright install to `+deps`
([#10293](#10293))
([d7bd306](d7bd306))
* Clean up archiver logs
([#10429](#10429))
([4fcbc59](4fcbc59))
* Consolidate some CI workflows to reduce sprawl
(noir-lang/noir#6696)
([3304046](3304046))
* Contracts on a diet
([#10389](#10389))
([dddb008](dddb008))
* Deduplicate constants across blocks
([#9972](#9972))
([69bb64f](69bb64f))
* Derive PartialEq and Hash for FieldElement
(noir-lang/noir#6610)
([3304046](3304046))
* **docs:** Remove additional `DEBUG` references, add note on
`LOG_LEVEL`s
([#10434](#10434))
([e1e5906](e1e5906))
* Don't generate proofs of verifier circuits in test
([#10405](#10405))
([c00ebdd](c00ebdd))
* Fix sassy-salamander chores v1
([#10218](#10218))
([7227b48](7227b48)),
closes
[#10074](#10074)
[#10075](#10075)
[#10077](#10077)
* Fix tests in `noirc_abi_wasm`
(noir-lang/noir#6688)
([3304046](3304046))
* Fix traces endpoint url in native testnet script
([#10309](#10309))
([2367c62](2367c62))
* Fix typo in test name (noir-lang/noir#6589)
([3304046](3304046))
* Fix warning when compiling `noir_wasm`
(noir-lang/noir#6686)
([3304046](3304046))
* Ignore almost-empty directories in nargo_cli tests
(noir-lang/noir#6611)
([3304046](3304046))
* Improve error message of `&T`
(noir-lang/noir#6633)
([3304046](3304046))
* Log manual contract class registrations
([#10354](#10354))
([da1470d](da1470d))
* Making bbup a shell script
([#10426](#10426))
([1c29554](1c29554))
* **network_test.sh:** Work around 143 by disabling stern
([#10436](#10436))
([64f6dad](64f6dad))
* Parallelise construction of perturbator coefficients at each level
([#10304](#10304))
([ba335bd](ba335bd))
* Parallelise inverse polynomial construction for lookup relations
([#10413](#10413))
([427cf59](427cf59))
* Pin foundry version in CI
(noir-lang/noir#6642)
([3304046](3304046))
* Public inputs in unit tests with proving were incorrectly set
([#10300](#10300))
([0311bf3](0311bf3))
* Pull out cfg simplification changes
([#10279](#10279))
([c48ae90](c48ae90))
* Pull out constant brillig inliner
([#10291](#10291))
([0577c1a](0577c1a))
* Pull out loop invariant optimization
([#10277](#10277))
([94cba37](94cba37))
* Pull out sync changes
([#10292](#10292))
([49f80b3](49f80b3))
* Random typos
([#10393](#10393))
([ed47a42](ed47a42))
* Redo typo PR by Dimitrolito
([#10364](#10364))
([da809c5](da809c5))
* Redo typo PR by Dimitrolito
(noir-lang/noir#6614)
([3304046](3304046))
* Redo typo PR by donatik27
(noir-lang/noir#6575)
([3304046](3304046))
* Redo typo PR by leopardracer
([#10363](#10363))
([0d1b722](0d1b722))
* Redo typo PR by leopardracer
([#10444](#10444))
([3653c4c](3653c4c))
* Refactor foreign call executors
(noir-lang/noir#6659)
([3304046](3304046))
* Refactor indexed tree to use traits
([#10361](#10361))
([621cbaf](621cbaf))
* Refactor poseidon2 (noir-lang/noir#6655)
([3304046](3304046))
* Release Noir(1.0.0-beta.0)
(noir-lang/noir#6562)
([3304046](3304046))
* Remove `ec` module from stdlib
(noir-lang/noir#6612)
([3304046](3304046))
* Remove debug and winston in favor of pino
([#10355](#10355))
([c246aba](c246aba))
* Remove eddsa from stdlib (noir-lang/noir#6591)
([3304046](3304046))
* Remove inliner override for `reference_counts` test
(noir-lang/noir#6714)
([3304046](3304046))
* Remove SchnorrVerify opcode
([#9897](#9897))
([93cd323](93cd323))
* Remove temporary allocations from `num_bits`
(noir-lang/noir#6600)
([3304046](3304046))
* Remove unused dep
([#10295](#10295))
([2a07355](2a07355))
* Replace relative paths to noir-protocol-circuits
([8fd8236](8fd8236))
* Replace relative paths to noir-protocol-circuits
([5d11e24](5d11e24))
* Replace relative paths to noir-protocol-circuits
([e7a99f2](e7a99f2))
* Replace relative paths to noir-protocol-circuits
([2496118](2496118))
* Replace relative paths to noir-protocol-circuits
([d77dc96](d77dc96))
* Replace relative paths to noir-protocol-circuits
([46d12e3](46d12e3))
* Require types of globals to be specified
(noir-lang/noir#6592)
([3304046](3304046))
* Revert "fix: Don't remove necessary RC instructions in DIE pass
(noir-lang/noir#6585)"
(noir-lang/noir#6693)
([3304046](3304046))
* Sassy network
([#10468](#10468))
([92eb377](92eb377))
* Simplify otel config, 1val setup, fix pod dns, retries
([#10344](#10344))
([be91d80](be91d80))
* Skip A-&gt;B B->A e2e_2_pxes test
([#10297](#10297))
([b75bfd0](b75bfd0))
* Sync logging with jest
([#10459](#10459))
([6e33cb9](6e33cb9))
* Typo in oracles how to (noir-lang/noir#6598)
([3304046](3304046))
* Update noir-bench-report version
(noir-lang/noir#6675)
([3304046](3304046))
* Update pprof (noir-lang/noir#6710)
([3304046](3304046))
* Update release-please action
(noir-lang/noir#6704)
([3304046](3304046))
* Use non default mnemonic for releases
([#10400](#10400))
([bb5f364](bb5f364))
</details>

<details><summary>barretenberg: 0.66.0</summary>

##
[0.66.0](barretenberg-v0.65.2...barretenberg-v0.66.0)
(2024-12-06)


### ⚠ BREAKING CHANGES

* remove SchnorrVerify opcode
([#9897](#9897))

### Features

* Allow querying block number for tree indices
([#10332](#10332))
([cf05a7a](cf05a7a))
* Avoid inserting an empty leaf in indexed trees on update
([#10281](#10281))
([5a04ca8](5a04ca8))
* Avoid inserting an empty leaf in indexed trees on update
([#10334](#10334))
([80fad45](80fad45))
* **bb:** Define std::hash for field
([#10312](#10312))
([752bc59](752bc59))
* Client IVC API
([#10217](#10217))
([cc54a1e](cc54a1e))
* Integrate verify_proof calls in mock protocol circuits
([#9253](#9253))
([7ed89aa](7ed89aa))
* Manage enqueued calls & phases in AVM witgen
([#10310](#10310))
([e7ebef8](e7ebef8))
* Mock IVC state from arbitrary acir IVC recursion constraints
([#10314](#10314))
([ac7c0da](ac7c0da))
* Ultra rollup flows
([#10162](#10162))
([c53f4cf](c53f4cf))


### Bug Fixes

* Bbup cleanup and fix
([#10067](#10067))
([0ff8177](0ff8177))
* Revert "feat: Avoid inserting an empty leaf in indexed trees on
update"
([#10319](#10319))
([887c011](887c011))
* Url in bbup install
([#10456](#10456))
([1b0dfb7](1b0dfb7))
* Witness changes in file sponge.hpp
([#10345](#10345))
([4a38edf](4a38edf))


### Miscellaneous

* **avm:** Fake verification routine for avm recursion in public base
rollup
([#10382](#10382))
([a1e5966](a1e5966)),
closes
[#10243](#10243)
* **avm:** Remove function selector type of getenv opcode
([#10406](#10406))
([38c0c14](38c0c14)),
closes
[#9396](#9396)
* Don't generate proofs of verifier circuits in test
([#10405](#10405))
([c00ebdd](c00ebdd))
* Making bbup a shell script
([#10426](#10426))
([1c29554](1c29554))
* Parallelise construction of perturbator coefficients at each level
([#10304](#10304))
([ba335bd](ba335bd))
* Parallelise inverse polynomial construction for lookup relations
([#10413](#10413))
([427cf59](427cf59))
* Public inputs in unit tests with proving were incorrectly set
([#10300](#10300))
([0311bf3](0311bf3))
* Redo typo PR by Dimitrolito
([#10364](#10364))
([da809c5](da809c5))
* Redo typo PR by leopardracer
([#10363](#10363))
([0d1b722](0d1b722))
* Remove SchnorrVerify opcode
([#9897](#9897))
([93cd323](93cd323))
</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 Dec 7, 2024
🤖 I have created a release *beep* *boop*
---


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

##
[0.66.0](AztecProtocol/aztec-packages@aztec-package-v0.65.2...aztec-package-v0.66.0)
(2024-12-06)


### ⚠ BREAKING CHANGES

* Remove debug and winston in favor of pino
([#10355](AztecProtocol/aztec-packages#10355))

### Features

* Agent and broker expose OTEL metrics
([#10264](AztecProtocol/aztec-packages#10264))
([c2c8cc6](AztecProtocol/aztec-packages@c2c8cc6))
* Epoch cache, do not attest if not in committee or from current
proposer
([#10327](AztecProtocol/aztec-packages#10327))
([9ebaa65](AztecProtocol/aztec-packages@9ebaa65))
* Staking integration
([#10403](AztecProtocol/aztec-packages#10403))
([ecd6c4f](AztecProtocol/aztec-packages@ecd6c4f))


### Miscellaneous

* Remove debug and winston in favor of pino
([#10355](AztecProtocol/aztec-packages#10355))
([c246aba](AztecProtocol/aztec-packages@c246aba))
</details>

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

##
[0.66.0](AztecProtocol/aztec-packages@barretenberg.js-v0.65.2...barretenberg.js-v0.66.0)
(2024-12-06)


### Miscellaneous

* **barretenberg.js:** Synchronize aztec-packages versions
</details>

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

##
[0.66.0](AztecProtocol/aztec-packages@aztec-packages-v0.65.2...aztec-packages-v0.66.0)
(2024-12-06)


### ⚠ BREAKING CHANGES

* remove `ec` module from stdlib
(noir-lang/noir#6612)
* Disallow `#[export]` on associated methods
(noir-lang/noir#6626)
* Require types of globals to be specified
(noir-lang/noir#6592)
* remove eddsa from stdlib (noir-lang/noir#6591)
* Remove debug and winston in favor of pino
([#10355](AztecProtocol/aztec-packages#10355))
* remove SchnorrVerify opcode
([#9897](AztecProtocol/aztec-packages#9897))

### Features

* Add `array_refcount` and `slice_refcount` builtins for debugging
(noir-lang/noir#6584)
([3304046](AztecProtocol/aztec-packages@3304046))
* Add `BoundedVec::from_parts` and `BoundedVec::from_parts_unchecked`
(noir-lang/noir#6691)
([3304046](AztecProtocol/aztec-packages@3304046))
* Add memory report into the CI
(noir-lang/noir#6630)
([3304046](AztecProtocol/aztec-packages@3304046))
* Add workflow_call trigger to network-deploy
([#10451](AztecProtocol/aztec-packages#10451))
([18254e6](AztecProtocol/aztec-packages@18254e6))
* Adding configurable data dir and p2p pk for testnet nodes
([#10422](AztecProtocol/aztec-packages#10422))
([77b0039](AztecProtocol/aztec-packages@77b0039))
* Agent and broker expose OTEL metrics
([#10264](AztecProtocol/aztec-packages#10264))
([c2c8cc6](AztecProtocol/aztec-packages@c2c8cc6))
* Allow filtering which SSA passes are printed
(noir-lang/noir#6636)
([3304046](AztecProtocol/aztec-packages@3304046))
* Allow ignoring test failures from foreign calls
(noir-lang/noir#6660)
([3304046](AztecProtocol/aztec-packages@3304046))
* Allow querying block number for tree indices
([#10332](AztecProtocol/aztec-packages#10332))
([cf05a7a](AztecProtocol/aztec-packages@cf05a7a))
* AMM
([#10153](AztecProtocol/aztec-packages#10153))
([90668c3](AztecProtocol/aztec-packages@90668c3))
* Avoid incrementing reference counts in some cases
(noir-lang/noir#6568)
([3304046](AztecProtocol/aztec-packages@3304046))
* Avoid inserting an empty leaf in indexed trees on update
([#10281](AztecProtocol/aztec-packages#10281))
([5a04ca8](AztecProtocol/aztec-packages@5a04ca8))
* Avoid inserting an empty leaf in indexed trees on update
([#10334](AztecProtocol/aztec-packages#10334))
([80fad45](AztecProtocol/aztec-packages@80fad45))
* **bb:** Define std::hash for field
([#10312](AztecProtocol/aztec-packages#10312))
([752bc59](AztecProtocol/aztec-packages@752bc59))
* Better error message when trying to invoke struct function field
(noir-lang/noir#6661)
([3304046](AztecProtocol/aztec-packages@3304046))
* Client IVC API
([#10217](AztecProtocol/aztec-packages#10217))
([cc54a1e](AztecProtocol/aztec-packages@cc54a1e))
* **comptime:** Implement blackbox functions in comptime interpreter
(noir-lang/noir#6551)
([3304046](AztecProtocol/aztec-packages@3304046))
* Delete attestations older than a slot
([#10326](AztecProtocol/aztec-packages#10326))
([24abcfe](AztecProtocol/aztec-packages@24abcfe))
* Deploy devnet to k8s
([#10449](AztecProtocol/aztec-packages#10449))
([27506c1](AztecProtocol/aztec-packages@27506c1))
* Deploy networks via github actions
([#10381](AztecProtocol/aztec-packages#10381))
([7e19b39](AztecProtocol/aztec-packages@7e19b39))
* **docs:** Applied structure feedback
([#9288](AztecProtocol/aztec-packages#9288))
([5b0b721](AztecProtocol/aztec-packages@5b0b721))
* Epoch cache, do not attest if not in committee or from current
proposer
([#10327](AztecProtocol/aztec-packages#10327))
([9ebaa65](AztecProtocol/aztec-packages@9ebaa65))
* Gas Utils for L1 operations
([#9834](AztecProtocol/aztec-packages#9834))
([17fa214](AztecProtocol/aztec-packages@17fa214))
* Improve parser recovery of constructor field with '::' instead of ':'
(noir-lang/noir#6701)
([3304046](AztecProtocol/aztec-packages@3304046))
* Integrate verify_proof calls in mock protocol circuits
([#9253](AztecProtocol/aztec-packages#9253))
([7ed89aa](AztecProtocol/aztec-packages@7ed89aa))
* Making testnet script write a docker compose file
([#10333](AztecProtocol/aztec-packages#10333))
([be54cc3](AztecProtocol/aztec-packages@be54cc3))
* Manage enqueued calls & phases in AVM witgen
([#10310](AztecProtocol/aztec-packages#10310))
([e7ebef8](AztecProtocol/aztec-packages@e7ebef8))
* Mock IVC state from arbitrary acir IVC recursion constraints
([#10314](AztecProtocol/aztec-packages#10314))
([ac7c0da](AztecProtocol/aztec-packages@ac7c0da))
* Optionally emit public bytecode
([#10365](AztecProtocol/aztec-packages#10365))
([84ff623](AztecProtocol/aztec-packages@84ff623))
* **p2p:** Persist node private p2p keys
([#10324](AztecProtocol/aztec-packages#10324))
([1c32eda](AztecProtocol/aztec-packages@1c32eda))
* **p2p:** Snappy compress p2p messages
([#10417](AztecProtocol/aztec-packages#10417))
([c643a54](AztecProtocol/aztec-packages@c643a54))
* **perf:** Track last loads per block in mem2reg and remove them if
possible (noir-lang/noir#6088)
([3304046](AztecProtocol/aztec-packages@3304046))
* Process blocks in parallel during epoch proving
([#10263](AztecProtocol/aztec-packages#10263))
([a9d418c](AztecProtocol/aztec-packages@a9d418c))
* Reduce memory consumption by storing array length as `u32` during SSA
(noir-lang/noir#6606)
([3304046](AztecProtocol/aztec-packages@3304046))
* Release please for release branch
([#10467](AztecProtocol/aztec-packages#10467))
([38941bf](AztecProtocol/aztec-packages@38941bf))
* Replace quadratic removal of `rc` instructions
(noir-lang/noir#6705)
([3304046](AztecProtocol/aztec-packages@3304046))
* Replace quadratic removal of rc instructions
([#10416](AztecProtocol/aztec-packages#10416))
([9d833c5](AztecProtocol/aztec-packages@9d833c5))
* Revert changes to `ValueMerger` and `Instruction::IfElse`
(noir-lang/noir#6673)
([3304046](AztecProtocol/aztec-packages@3304046))
* Show printable byte arrays as byte strings in SSA
(noir-lang/noir#6709)
([3304046](AztecProtocol/aztec-packages@3304046))
* Simplify `jmpif`s by reversing branches if condition is negated
(noir-lang/noir#5891)
([3304046](AztecProtocol/aztec-packages@3304046))
* **ssa:** Deduplicate intrinsics with predicates
(noir-lang/noir#6615)
([3304046](AztecProtocol/aztec-packages@3304046))
* **ssa:** Hoisting of array get using known induction variable maximum
(noir-lang/noir#6639)
([3304046](AztecProtocol/aztec-packages@3304046))
* **ssa:** Loop invariant code motion
(noir-lang/noir#6563)
([3304046](AztecProtocol/aztec-packages@3304046))
* **ssa:** Option to set the maximum acceptable Brillig bytecode
increase in unrolling (noir-lang/noir#6641)
([3304046](AztecProtocol/aztec-packages@3304046))
* **ssa:** Simplify array get from set that writes to the same dynamic
index (noir-lang/noir#6684)
([3304046](AztecProtocol/aztec-packages@3304046))
* Staking integration
([#10403](AztecProtocol/aztec-packages#10403))
([ecd6c4f](AztecProtocol/aztec-packages@ecd6c4f))
* Standalone ssd
([#10317](AztecProtocol/aztec-packages#10317))
([c324781](AztecProtocol/aztec-packages@c324781))
* Switch to using an external noir implementation of Schnorr
([#10330](AztecProtocol/aztec-packages#10330))
([6cbd375](AztecProtocol/aztec-packages@6cbd375))
* Sync from aztec-packages (noir-lang/noir#6576)
([3304046](AztecProtocol/aztec-packages@3304046))
* Sync from aztec-packages (noir-lang/noir#6634)
([3304046](AztecProtocol/aztec-packages@3304046))
* Sync from aztec-packages (noir-lang/noir#6656)
([3304046](AztecProtocol/aztec-packages@3304046))
* Terraform for alerting on metrics
([#10192](AztecProtocol/aztec-packages#10192))
([05c9e5d](AztecProtocol/aztec-packages@05c9e5d)),
closes
[#9956](AztecProtocol/aztec-packages#9956)
* Test release network via ci workflow
([#10388](AztecProtocol/aztec-packages#10388))
([e6060ec](AztecProtocol/aztec-packages@e6060ec)),
closes
[#10383](AztecProtocol/aztec-packages#10383)
* **tooling:** Skip program transformation when loaded from cache
(noir-lang/noir#6689)
([3304046](AztecProtocol/aztec-packages@3304046))
* Try to inline brillig calls with all constant arguments
(noir-lang/noir#6548)
([3304046](AztecProtocol/aztec-packages@3304046))
* Ultra rollup flows
([#10162](AztecProtocol/aztec-packages#10162))
([c53f4cf](AztecProtocol/aztec-packages@c53f4cf))
* Zip and propagate private logs
([#10210](AztecProtocol/aztec-packages#10210))
([5c32747](AztecProtocol/aztec-packages@5c32747))
* Zip and silo and propagate private logs
([#10308](AztecProtocol/aztec-packages#10308))
([90d4385](AztecProtocol/aztec-packages@90d4385))


### Bug Fixes

* Add helm
([#10454](AztecProtocol/aztec-packages#10454))
([2eb9ade](AztecProtocol/aztec-packages@2eb9ade))
* Add secret
([#10453](AztecProtocol/aztec-packages#10453))
([95601df](AztecProtocol/aztec-packages@95601df))
* Add type
([#10452](AztecProtocol/aztec-packages#10452))
([cd9699f](AztecProtocol/aztec-packages@cd9699f))
* Allow multiple `_` parameters, and disallow `_` as an expression you
can read from (noir-lang/noir#6657)
([3304046](AztecProtocol/aztec-packages@3304046))
* Always return an array of `u8`s when simplifying `Intrinsic::ToRadix`
calls (noir-lang/noir#6663)
([3304046](AztecProtocol/aztec-packages@3304046))
* Await block unwind when a reorg happens
([#10380](AztecProtocol/aztec-packages#10380))
([5a02480](AztecProtocol/aztec-packages@5a02480))
* Bbup cleanup and fix
([#10067](AztecProtocol/aztec-packages#10067))
([0ff8177](AztecProtocol/aztec-packages@0ff8177))
* Bootstrapping devnet
([#10396](AztecProtocol/aztec-packages#10396))
([f3c7294](AztecProtocol/aztec-packages@f3c7294))
* Bot waits for pxe synch
([#10316](AztecProtocol/aztec-packages#10316))
([ebd4165](AztecProtocol/aztec-packages@ebd4165))
* Consider prereleases to be compatible with pre-1.0.0 releases
(noir-lang/noir#6580)
([3304046](AztecProtocol/aztec-packages@3304046))
* Correct signed integer handling in `noirc_abi`
(noir-lang/noir#6638)
([3304046](AztecProtocol/aztec-packages@3304046))
* Correct type when simplifying `derive_pedersen_generators`
(noir-lang/noir#6579)
([3304046](AztecProtocol/aztec-packages@3304046))
* Correct types returned by constant EC operations simplified within SSA
(noir-lang/noir#6652)
([3304046](AztecProtocol/aztec-packages@3304046))
* Disallow `#[export]` on associated methods
(noir-lang/noir#6626)
([3304046](AztecProtocol/aztec-packages@3304046))
* Do not warn on unused functions marked with #[export]
(noir-lang/noir#6625)
([3304046](AztecProtocol/aztec-packages@3304046))
* Don't pass default value for --node-url
([#10427](AztecProtocol/aztec-packages#10427))
([5299481](AztecProtocol/aztec-packages@5299481)),
closes
[#10419](AztecProtocol/aztec-packages#10419)
* Don't remove necessary RC instructions in DIE pass
(noir-lang/noir#6585)
([3304046](AztecProtocol/aztec-packages@3304046))
* Don't report visibility errors when elaborating comptime value
(noir-lang/noir#6498)
([3304046](AztecProtocol/aztec-packages@3304046))
* Get node info from a PXE
([#10420](AztecProtocol/aztec-packages#10420))
([ed972f3](AztecProtocol/aztec-packages@ed972f3))
* Increase timeouts
([#10412](AztecProtocol/aztec-packages#10412))
([d3b8838](AztecProtocol/aztec-packages@d3b8838))
* LSP auto-import text indent
(noir-lang/noir#6699)
([3304046](AztecProtocol/aztec-packages@3304046))
* LSP code action wasn't triggering on beginning or end of identifier
(noir-lang/noir#6616)
([3304046](AztecProtocol/aztec-packages@3304046))
* **LSP:** Use generic self type to narrow down methods to complete
(noir-lang/noir#6617)
([3304046](AztecProtocol/aztec-packages@3304046))
* Move spartan-script tf to spartan, use file in bucket
([#10395](AztecProtocol/aztec-packages#10395))
([5cef628](AztecProtocol/aztec-packages@5cef628))
* Nit
([#10392](AztecProtocol/aztec-packages#10392))
([d6985a8](AztecProtocol/aztec-packages@d6985a8))
* Optimize array ref counts to copy arrays much less often
(noir-lang/noir#6685)
([3304046](AztecProtocol/aztec-packages@3304046))
* **p2p:** Override msg Id
([#10415](AztecProtocol/aztec-packages#10415))
([990d11b](AztecProtocol/aztec-packages@990d11b))
* Parse a bit more SSA stuff
(noir-lang/noir#6599)
([3304046](AztecProtocol/aztec-packages@3304046))
* Preserve newlines between comments when formatting statements
(noir-lang/noir#6601)
([3304046](AztecProtocol/aztec-packages@3304046))
* Prevent hoisting binary instructions which can overflow
(noir-lang/noir#6672)
([3304046](AztecProtocol/aztec-packages@3304046))
* **prover:** Handle starting blocks out of order in prover
([#10350](AztecProtocol/aztec-packages#10350))
([9106102](AztecProtocol/aztec-packages@9106102))
* Publicly register contract classes
([#10385](AztecProtocol/aztec-packages#10385))
([94e6e1a](AztecProtocol/aztec-packages@94e6e1a))
* Remove `compiler_version` from new `Nargo.toml`
(noir-lang/noir#6590)
([3304046](AztecProtocol/aztec-packages@3304046))
* Revert "feat: Avoid inserting an empty leaf in indexed trees on
update"
([#10319](AztecProtocol/aztec-packages#10319))
([887c011](AztecProtocol/aztec-packages@887c011))
* Revert "feat: zip and propagate private logs"
([#10302](AztecProtocol/aztec-packages#10302))
([9d70728](AztecProtocol/aztec-packages@9d70728))
* Safely insert sibling paths
([#10423](AztecProtocol/aztec-packages#10423))
([41f7645](AztecProtocol/aztec-packages@41f7645))
* **ssa:** Don't deduplicate constraints in blocks that are not
dominated (noir-lang/noir#6627)
([3304046](AztecProtocol/aztec-packages@3304046))
* **ssa:** Remove RC tracker in DIE
(noir-lang/noir#6700)
([3304046](AztecProtocol/aztec-packages@3304046))
* **ssa:** Track all local allocations during flattening
(noir-lang/noir#6619)
([3304046](AztecProtocol/aztec-packages@3304046))
* Tf vars
([#10457](AztecProtocol/aztec-packages#10457))
([00aaef6](AztecProtocol/aztec-packages@00aaef6))
* Typo in u128 docs (noir-lang/noir#6711)
([3304046](AztecProtocol/aztec-packages@3304046))
* Url in bbup install
([#10456](AztecProtocol/aztec-packages#10456))
([1b0dfb7](AztecProtocol/aztec-packages@1b0dfb7))
* Use correct type for attribute arguments
(noir-lang/noir#6640)
([3304046](AztecProtocol/aztec-packages@3304046))
* Used signed division for signed modulo
(noir-lang/noir#6635)
([3304046](AztecProtocol/aztec-packages@3304046))
* Witness changes in file sponge.hpp
([#10345](AztecProtocol/aztec-packages#10345))
([4a38edf](AztecProtocol/aztec-packages@4a38edf))


### Miscellaneous

* Add `ram_blowup_regression` to memory report
(noir-lang/noir#6683)
([3304046](AztecProtocol/aztec-packages@3304046))
* Add panic for compiler error described in
[#6620](AztecProtocol/aztec-packages#6620)
(noir-lang/noir#6621)
([3304046](AztecProtocol/aztec-packages@3304046))
* **avm:** Fake verification routine for avm recursion in public base
rollup
([#10382](AztecProtocol/aztec-packages#10382))
([a1e5966](AztecProtocol/aztec-packages@a1e5966)),
closes
[#10243](AztecProtocol/aztec-packages#10243)
* **avm:** Remove function selector type of getenv opcode
([#10406](AztecProtocol/aztec-packages#10406))
([38c0c14](AztecProtocol/aztec-packages@38c0c14)),
closes
[#9396](AztecProtocol/aztec-packages#9396)
* Batch archiver requests
([#10442](AztecProtocol/aztec-packages#10442))
([9443e8e](AztecProtocol/aztec-packages@9443e8e))
* Boot node has fixed peer id private key
([#10352](AztecProtocol/aztec-packages#10352))
([cae1203](AztecProtocol/aztec-packages@cae1203))
* Bump alert in gossip_network.test.ts
([#10430](AztecProtocol/aztec-packages#10430))
([2c2169b](AztecProtocol/aztec-packages@2c2169b))
* Centralized helm flag for proving and clean release tf deploys
([#10221](AztecProtocol/aztec-packages#10221))
([c2c1744](AztecProtocol/aztec-packages@c2c1744))
* **ci:** Move playwright install to `+deps`
([#10293](AztecProtocol/aztec-packages#10293))
([d7bd306](AztecProtocol/aztec-packages@d7bd306))
* Clean up archiver logs
([#10429](AztecProtocol/aztec-packages#10429))
([4fcbc59](AztecProtocol/aztec-packages@4fcbc59))
* Consolidate some CI workflows to reduce sprawl
(noir-lang/noir#6696)
([3304046](AztecProtocol/aztec-packages@3304046))
* Contracts on a diet
([#10389](AztecProtocol/aztec-packages#10389))
([dddb008](AztecProtocol/aztec-packages@dddb008))
* Deduplicate constants across blocks
([#9972](AztecProtocol/aztec-packages#9972))
([69bb64f](AztecProtocol/aztec-packages@69bb64f))
* Derive PartialEq and Hash for FieldElement
(noir-lang/noir#6610)
([3304046](AztecProtocol/aztec-packages@3304046))
* **docs:** Remove additional `DEBUG` references, add note on
`LOG_LEVEL`s
([#10434](AztecProtocol/aztec-packages#10434))
([e1e5906](AztecProtocol/aztec-packages@e1e5906))
* Don't generate proofs of verifier circuits in test
([#10405](AztecProtocol/aztec-packages#10405))
([c00ebdd](AztecProtocol/aztec-packages@c00ebdd))
* Fix sassy-salamander chores v1
([#10218](AztecProtocol/aztec-packages#10218))
([7227b48](AztecProtocol/aztec-packages@7227b48)),
closes
[#10074](AztecProtocol/aztec-packages#10074)
[#10075](AztecProtocol/aztec-packages#10075)
[#10077](AztecProtocol/aztec-packages#10077)
* Fix tests in `noirc_abi_wasm`
(noir-lang/noir#6688)
([3304046](AztecProtocol/aztec-packages@3304046))
* Fix traces endpoint url in native testnet script
([#10309](AztecProtocol/aztec-packages#10309))
([2367c62](AztecProtocol/aztec-packages@2367c62))
* Fix typo in test name (noir-lang/noir#6589)
([3304046](AztecProtocol/aztec-packages@3304046))
* Fix warning when compiling `noir_wasm`
(noir-lang/noir#6686)
([3304046](AztecProtocol/aztec-packages@3304046))
* Ignore almost-empty directories in nargo_cli tests
(noir-lang/noir#6611)
([3304046](AztecProtocol/aztec-packages@3304046))
* Improve error message of `&T`
(noir-lang/noir#6633)
([3304046](AztecProtocol/aztec-packages@3304046))
* Log manual contract class registrations
([#10354](AztecProtocol/aztec-packages#10354))
([da1470d](AztecProtocol/aztec-packages@da1470d))
* Making bbup a shell script
([#10426](AztecProtocol/aztec-packages#10426))
([1c29554](AztecProtocol/aztec-packages@1c29554))
* **network_test.sh:** Work around 143 by disabling stern
([#10436](AztecProtocol/aztec-packages#10436))
([64f6dad](AztecProtocol/aztec-packages@64f6dad))
* Parallelise construction of perturbator coefficients at each level
([#10304](AztecProtocol/aztec-packages#10304))
([ba335bd](AztecProtocol/aztec-packages@ba335bd))
* Parallelise inverse polynomial construction for lookup relations
([#10413](AztecProtocol/aztec-packages#10413))
([427cf59](AztecProtocol/aztec-packages@427cf59))
* Pin foundry version in CI
(noir-lang/noir#6642)
([3304046](AztecProtocol/aztec-packages@3304046))
* Public inputs in unit tests with proving were incorrectly set
([#10300](AztecProtocol/aztec-packages#10300))
([0311bf3](AztecProtocol/aztec-packages@0311bf3))
* Pull out cfg simplification changes
([#10279](AztecProtocol/aztec-packages#10279))
([c48ae90](AztecProtocol/aztec-packages@c48ae90))
* Pull out constant brillig inliner
([#10291](AztecProtocol/aztec-packages#10291))
([0577c1a](AztecProtocol/aztec-packages@0577c1a))
* Pull out loop invariant optimization
([#10277](AztecProtocol/aztec-packages#10277))
([94cba37](AztecProtocol/aztec-packages@94cba37))
* Pull out sync changes
([#10292](AztecProtocol/aztec-packages#10292))
([49f80b3](AztecProtocol/aztec-packages@49f80b3))
* Random typos
([#10393](AztecProtocol/aztec-packages#10393))
([ed47a42](AztecProtocol/aztec-packages@ed47a42))
* Redo typo PR by Dimitrolito
([#10364](AztecProtocol/aztec-packages#10364))
([da809c5](AztecProtocol/aztec-packages@da809c5))
* Redo typo PR by Dimitrolito
(noir-lang/noir#6614)
([3304046](AztecProtocol/aztec-packages@3304046))
* Redo typo PR by donatik27
(noir-lang/noir#6575)
([3304046](AztecProtocol/aztec-packages@3304046))
* Redo typo PR by leopardracer
([#10363](AztecProtocol/aztec-packages#10363))
([0d1b722](AztecProtocol/aztec-packages@0d1b722))
* Redo typo PR by leopardracer
([#10444](AztecProtocol/aztec-packages#10444))
([3653c4c](AztecProtocol/aztec-packages@3653c4c))
* Refactor foreign call executors
(noir-lang/noir#6659)
([3304046](AztecProtocol/aztec-packages@3304046))
* Refactor indexed tree to use traits
([#10361](AztecProtocol/aztec-packages#10361))
([621cbaf](AztecProtocol/aztec-packages@621cbaf))
* Refactor poseidon2 (noir-lang/noir#6655)
([3304046](AztecProtocol/aztec-packages@3304046))
* Release Noir(1.0.0-beta.0)
(noir-lang/noir#6562)
([3304046](AztecProtocol/aztec-packages@3304046))
* Remove `ec` module from stdlib
(noir-lang/noir#6612)
([3304046](AztecProtocol/aztec-packages@3304046))
* Remove debug and winston in favor of pino
([#10355](AztecProtocol/aztec-packages#10355))
([c246aba](AztecProtocol/aztec-packages@c246aba))
* Remove eddsa from stdlib (noir-lang/noir#6591)
([3304046](AztecProtocol/aztec-packages@3304046))
* Remove inliner override for `reference_counts` test
(noir-lang/noir#6714)
([3304046](AztecProtocol/aztec-packages@3304046))
* Remove SchnorrVerify opcode
([#9897](AztecProtocol/aztec-packages#9897))
([93cd323](AztecProtocol/aztec-packages@93cd323))
* Remove temporary allocations from `num_bits`
(noir-lang/noir#6600)
([3304046](AztecProtocol/aztec-packages@3304046))
* Remove unused dep
([#10295](AztecProtocol/aztec-packages#10295))
([2a07355](AztecProtocol/aztec-packages@2a07355))
* Replace relative paths to noir-protocol-circuits
([8fd8236](AztecProtocol/aztec-packages@8fd8236))
* Replace relative paths to noir-protocol-circuits
([5d11e24](AztecProtocol/aztec-packages@5d11e24))
* Replace relative paths to noir-protocol-circuits
([e7a99f2](AztecProtocol/aztec-packages@e7a99f2))
* Replace relative paths to noir-protocol-circuits
([2496118](AztecProtocol/aztec-packages@2496118))
* Replace relative paths to noir-protocol-circuits
([d77dc96](AztecProtocol/aztec-packages@d77dc96))
* Replace relative paths to noir-protocol-circuits
([46d12e3](AztecProtocol/aztec-packages@46d12e3))
* Require types of globals to be specified
(noir-lang/noir#6592)
([3304046](AztecProtocol/aztec-packages@3304046))
* Revert "fix: Don't remove necessary RC instructions in DIE pass
(noir-lang/noir#6585)"
(noir-lang/noir#6693)
([3304046](AztecProtocol/aztec-packages@3304046))
* Sassy network
([#10468](AztecProtocol/aztec-packages#10468))
([92eb377](AztecProtocol/aztec-packages@92eb377))
* Simplify otel config, 1val setup, fix pod dns, retries
([#10344](AztecProtocol/aztec-packages#10344))
([be91d80](AztecProtocol/aztec-packages@be91d80))
* Skip A-&gt;B B->A e2e_2_pxes test
([#10297](AztecProtocol/aztec-packages#10297))
([b75bfd0](AztecProtocol/aztec-packages@b75bfd0))
* Sync logging with jest
([#10459](AztecProtocol/aztec-packages#10459))
([6e33cb9](AztecProtocol/aztec-packages@6e33cb9))
* Typo in oracles how to (noir-lang/noir#6598)
([3304046](AztecProtocol/aztec-packages@3304046))
* Update noir-bench-report version
(noir-lang/noir#6675)
([3304046](AztecProtocol/aztec-packages@3304046))
* Update pprof (noir-lang/noir#6710)
([3304046](AztecProtocol/aztec-packages@3304046))
* Update release-please action
(noir-lang/noir#6704)
([3304046](AztecProtocol/aztec-packages@3304046))
* Use non default mnemonic for releases
([#10400](AztecProtocol/aztec-packages#10400))
([bb5f364](AztecProtocol/aztec-packages@bb5f364))
</details>

<details><summary>barretenberg: 0.66.0</summary>

##
[0.66.0](AztecProtocol/aztec-packages@barretenberg-v0.65.2...barretenberg-v0.66.0)
(2024-12-06)


### ⚠ BREAKING CHANGES

* remove SchnorrVerify opcode
([#9897](AztecProtocol/aztec-packages#9897))

### Features

* Allow querying block number for tree indices
([#10332](AztecProtocol/aztec-packages#10332))
([cf05a7a](AztecProtocol/aztec-packages@cf05a7a))
* Avoid inserting an empty leaf in indexed trees on update
([#10281](AztecProtocol/aztec-packages#10281))
([5a04ca8](AztecProtocol/aztec-packages@5a04ca8))
* Avoid inserting an empty leaf in indexed trees on update
([#10334](AztecProtocol/aztec-packages#10334))
([80fad45](AztecProtocol/aztec-packages@80fad45))
* **bb:** Define std::hash for field
([#10312](AztecProtocol/aztec-packages#10312))
([752bc59](AztecProtocol/aztec-packages@752bc59))
* Client IVC API
([#10217](AztecProtocol/aztec-packages#10217))
([cc54a1e](AztecProtocol/aztec-packages@cc54a1e))
* Integrate verify_proof calls in mock protocol circuits
([#9253](AztecProtocol/aztec-packages#9253))
([7ed89aa](AztecProtocol/aztec-packages@7ed89aa))
* Manage enqueued calls & phases in AVM witgen
([#10310](AztecProtocol/aztec-packages#10310))
([e7ebef8](AztecProtocol/aztec-packages@e7ebef8))
* Mock IVC state from arbitrary acir IVC recursion constraints
([#10314](AztecProtocol/aztec-packages#10314))
([ac7c0da](AztecProtocol/aztec-packages@ac7c0da))
* Ultra rollup flows
([#10162](AztecProtocol/aztec-packages#10162))
([c53f4cf](AztecProtocol/aztec-packages@c53f4cf))


### Bug Fixes

* Bbup cleanup and fix
([#10067](AztecProtocol/aztec-packages#10067))
([0ff8177](AztecProtocol/aztec-packages@0ff8177))
* Revert "feat: Avoid inserting an empty leaf in indexed trees on
update"
([#10319](AztecProtocol/aztec-packages#10319))
([887c011](AztecProtocol/aztec-packages@887c011))
* Url in bbup install
([#10456](AztecProtocol/aztec-packages#10456))
([1b0dfb7](AztecProtocol/aztec-packages@1b0dfb7))
* Witness changes in file sponge.hpp
([#10345](AztecProtocol/aztec-packages#10345))
([4a38edf](AztecProtocol/aztec-packages@4a38edf))


### Miscellaneous

* **avm:** Fake verification routine for avm recursion in public base
rollup
([#10382](AztecProtocol/aztec-packages#10382))
([a1e5966](AztecProtocol/aztec-packages@a1e5966)),
closes
[#10243](AztecProtocol/aztec-packages#10243)
* **avm:** Remove function selector type of getenv opcode
([#10406](AztecProtocol/aztec-packages#10406))
([38c0c14](AztecProtocol/aztec-packages@38c0c14)),
closes
[#9396](AztecProtocol/aztec-packages#9396)
* Don't generate proofs of verifier circuits in test
([#10405](AztecProtocol/aztec-packages#10405))
([c00ebdd](AztecProtocol/aztec-packages@c00ebdd))
* Making bbup a shell script
([#10426](AztecProtocol/aztec-packages#10426))
([1c29554](AztecProtocol/aztec-packages@1c29554))
* Parallelise construction of perturbator coefficients at each level
([#10304](AztecProtocol/aztec-packages#10304))
([ba335bd](AztecProtocol/aztec-packages@ba335bd))
* Parallelise inverse polynomial construction for lookup relations
([#10413](AztecProtocol/aztec-packages#10413))
([427cf59](AztecProtocol/aztec-packages@427cf59))
* Public inputs in unit tests with proving were incorrectly set
([#10300](AztecProtocol/aztec-packages#10300))
([0311bf3](AztecProtocol/aztec-packages@0311bf3))
* Redo typo PR by Dimitrolito
([#10364](AztecProtocol/aztec-packages#10364))
([da809c5](AztecProtocol/aztec-packages@da809c5))
* Redo typo PR by leopardracer
([#10363](AztecProtocol/aztec-packages#10363))
([0d1b722](AztecProtocol/aztec-packages@0d1b722))
* Remove SchnorrVerify opcode
([#9897](AztecProtocol/aztec-packages#9897))
([93cd323](AztecProtocol/aztec-packages@93cd323))
</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
e2e-all CI: Enables this CI job.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Handle L1 tx retries and volatile gas prices
2 participants