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: UltraHonkZK contract #11553

Merged
merged 39 commits into from
Feb 3, 2025
Merged

feat: UltraHonkZK contract #11553

merged 39 commits into from
Feb 3, 2025

Conversation

maramihali
Copy link
Contributor

@maramihali maramihali commented Jan 28, 2025

This PR introduces an UltraHonk ZK contract and unit tests together with some refactorings/renamings in the pipeline for generating circuits for Solidity unit tests.

Flows for testing a deployed contract will be added in a follow-up PR.

@maramihali maramihali changed the title zk ultra honk contract feat: UltraHonkZK contract Jan 30, 2025
@@ -14,52 +14,52 @@ library RecursiveUltraVerificationKey {
mstore(add(_vk, 0x20), 0x0000000000000000000000000000000000000000000000000000000000000010) // vk.num_inputs
mstore(add(_vk, 0x40), 0x2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd) // vk.work_root
mstore(add(_vk, 0x60), 0x3064486657634403844b0eac78ca882cfd284341fcb0615a15cfcd17b14d8201) // vk.domain_inverse
Copy link
Contributor Author

@maramihali maramihali Jan 30, 2025

Choose a reason for hiding this comment

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

These verifications keys were stale because the unit tests were failing for the UltraPlonk contract, bootstrapping updated them

@@ -7,13 +7,14 @@ contract DifferentialFuzzer is TestBase {
using strings for *;
using Strings for uint256;

enum PlonkFlavour {
enum Flavor {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Tried to make this generally a bit less confusing and renamed flavoUr to flavor, if we remove the option to create a Standard builder it can be even cleaner in places

@maramihali maramihali marked this pull request as ready for review January 30, 2025 16:53
@@ -526,14 +521,15 @@ template <typename Curve> class SmallSubgroupIPAVerifier {
challenge_polynomial_lagrange[0] = FF{ 1 };

// Populate the vector with the powers of the challenges
Copy link
Contributor Author

Choose a reason for hiding this comment

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

no functionality added just tried to improve readability and make the code simpler here and below

import "forge-std/console.sol";

// ZKTranscript library to generate fiat shamir challenges, the ZK transcript only differest
struct ZKTranscript {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Identical in structure with the non-ZK transcript, but we generate an additional challenge in sumcheck and we need to hash more data in places because the ZK proof includes extra field elements and commitments.

@maramihali maramihali self-assigned this Feb 1, 2025
// NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays)
static const char HONK_ZK_CONTRACT_SOURCE[] = R"(

pragma solidity ^0.8.27;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is identical with the BaseZKHonkVerifier in terms of logic but I removed the Base class because the contract was over the allowed bytecode size. We are still very close to the limit so it is going to be a problem again if we add new functionality but ultimately the rewrite to assembly will probably solve this issue. I tried to not harm readability too much.

generate_proof<Add2Circuit>(inputs);
} else if (circuit_flavour == "ecdsa") {
generate_proof<EcdsaCircuit>(inputs);
} else if (flavor == "honk_zk") {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I know this is messy, working on a follow-up PR that cleans this solidity_helper stuff

Copy link
Contributor

@ledwards2225 ledwards2225 left a comment

Choose a reason for hiding this comment

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

Looks good!

@@ -1591,7 +1552,7 @@ abstract contract BaseHonkVerifier is IVerifier {
Fr[BATCHED_RELATION_PARTIAL_LENGTH] memory denominatorInverses;
for (uint256 i; i < BATCHED_RELATION_PARTIAL_LENGTH; ++i) {
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm assuming its safe to not explicitly initialize this idx but makes me a bit uneasy

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yeah it's implicitly initialised with 0 but good point


(gateChallenges[i],) = splitChallenge(previousChallenge);
}
nextPreviousChallenge = previousChallenge;
Copy link
Contributor

Choose a reason for hiding this comment

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

I laughed out loud a little bit whe I read the name "next previous challenge"

Copy link
Contributor Author

Choose a reason for hiding this comment

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

According to the jolly internet: The solidity compiler outputs more efficient code when the variable is declared in the return statement. There seem to be very few exceptions to this in practice, so if you see an anonymous return, you should test it with a named return instead to determine which case is most efficient.

// TODO: mod q proof points
// TODO: Preprocess all of the memory locations
// TODO: Adjust proof point serde away from poseidon forced field elements
// TODO: move this back to probably each instance to avoid dynamic init of arrays in the ZKTranscript Lib
Copy link
Contributor

Choose a reason for hiding this comment

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

Is there something more organized we should do with these todos? Can they at least be converted to a single bb issue or something?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

i'll open some issues

p.w3 = bytesToG1ProofPoint(proof[0x160:0x1e0]);

// Lookup / Permutation Helper Commitments
p.lookupReadCounts = bytesToG1ProofPoint(proof[0x1e0:0x260]);
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we talked about something like this before but can't remember -- seems like this code would benefit immensely from some reader logic that abstracts away the explicit hex indices. Is that possible or is there some reason why it needs to be explicit

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yeah we did - my hesitation from doing that is that in the "final" version loading the proof will look like this: https://github.com/AztecProtocol/aztec-packages/blob/mm/zk-sol/barretenberg/sol/src/ultra/BaseUltraVerifier.sol#L532

So i tried to balance how much work I put into readable code to making stuff a bit less bug prone

check = mem.diff == ZERO;
}

// This implementation is the same as above with different constants
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this comment still meaningful?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

no - it's me talking to myself

Copy link
Contributor Author

Choose a reason for hiding this comment

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

there used to be two implementations of batchMul cus Zeromorph had two batchMuls of different sizes

@@ -13,15 +13,15 @@
#include <sstream>

using namespace bb;
using numeric::uint256_t;
using numeric::uint256_t; // is this really
Copy link
Contributor

Choose a reason for hiding this comment

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

?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

i was very confused by this using, will investigate in follow up if i can remove it

}

// Contribution 10 point doubling, x-coordinate check
// (x3 + x1 + x1) (4y1*y1) - 9 * x1 * x1 * x1 * x1 = 0
// N.B. we're using the equivalence x1*x1*x1 === y1*y1 - curve_b to reduce degree by 1
{
Fr x_pow_4 = (y1_sqr + GRUMPKIN_CURVE_B_PARAMETER_NEGATED) * ep.x_1;
Fr x_pow_4 = (y1_sqr + Fr.wrap(17)) * ep.x_1;
Copy link
Contributor

Choose a reason for hiding this comment

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

any reason not to keep this as a nice named parameter?

@@ -40,7 +40,7 @@ contract Add2HonkTest is TestBaseHonk {
(bytes32[] memory publicInputs, bytes memory proof) = splitProofHonk(proofData, PUBLIC_INPUT_COUNT);

assertTrue(verifier.verify(proof, publicInputs), "The proof is not valid");

console.log("wii");
Copy link
Contributor

Choose a reason for hiding this comment

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

wiiii

Copy link
Contributor Author

Choose a reason for hiding this comment

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

wiiiiii

barretenberg/sol/test/honk/ECDSAZK.t.sol Outdated Show resolved Hide resolved

pragma solidity >=0.8.4;

import {HonkVerifier} from "./ZKVerifier.sol";
Copy link
Member

Choose a reason for hiding this comment

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

This file isnt needed? cant we just name the generated verifier "./Verifier.sol" and it will just work?

REVIEWNOTE: check that this ends up running in the same folder as the generated verifier

Copy link
Contributor Author

Choose a reason for hiding this comment

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

if you run the honk zk and non-zk tests in parallel (which is done in CI), unless you make separate files, you'll have concurrency issues

@@ -42,8 +42,8 @@ std::string pad_left(std::string input, size_t length)
/**
* @brief Main entry point for the proof generator.
* Expected inputs:
* 1. plonk_flavour: ultra
* 2. circuit_flavour: blake, add2, recursive
* 1. plonk_flavor: ultra
Copy link
Member

@Maddiaa0 Maddiaa0 Feb 3, 2025

Choose a reason for hiding this comment

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

the americans have won, we must never surrender


import {bytesToG1ProofPoint, bytesToFr, logFr, logG} from "./utils.sol";

import "forge-std/console.sol";
Copy link
Member

Choose a reason for hiding this comment

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

wanna remove this import if we can

Honk.G1ProofPoint w3;
Honk.G1ProofPoint w4;
// Commitments to logup witness polynomials
Honk.G1ProofPoint lookupReadCounts;
Copy link
Member

@Maddiaa0 Maddiaa0 Feb 3, 2025

Choose a reason for hiding this comment

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

does the ordering of this need to be different to the Proof above ( ordering is unimportant from a compiler perspective but does for hashing, i think we should list this in the order of hashing )

Copy link
Contributor Author

@maramihali maramihali Feb 3, 2025

Choose a reason for hiding this comment

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

it is roughly in the correct order except the first libra commitment is received before sumcheck and the rest after it, but because the additional subprotocol operates on all at once I thought it's better to group them together

@maramihali maramihali enabled auto-merge (squash) February 3, 2025 16:22
@maramihali maramihali merged commit a68369f into master Feb 3, 2025
52 checks passed
@maramihali maramihali deleted the mm/zk-sol branch February 3, 2025 17:10
sklppy88 pushed a commit that referenced this pull request Feb 4, 2025
🤖 I have created a release *beep* *boop*
---


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

##
[0.74.0](aztec-package-v0.73.0...aztec-package-v0.74.0)
(2025-02-04)


### Miscellaneous

* Ensure new kv-store is used on the server
([#11662](#11662))
([aee1420](aee1420))
</details>

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

##
[0.74.0](barretenberg.js-v0.73.0...barretenberg.js-v0.74.0)
(2025-02-04)


### Miscellaneous

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

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

##
[0.74.0](aztec-packages-v0.73.0...aztec-packages-v0.74.0)
(2025-02-04)


### ⚠ BREAKING CHANGES

* time library
([#11542](#11542))

### Features

* `u128.ts` accepting string on input
([#11664](#11664))
([bb25992](bb25992))
* Add network, better drawer performance
([#11694](#11694))
([1f61822](1f61822))
* Skip calculation of partial sums when simulating blobs
([#11257](#11257))
([aca66f7](aca66f7))
* Time library
([#11542](#11542))
([3b463f9](3b463f9)),
closes
[#11520](#11520)
* UltraHonkZK contract
([#11553](#11553))
([a68369f](a68369f))


### Bug Fixes

* Add bootstrap.sh to rebuild_patterns
([#11683](#11683))
([e84a81a](e84a81a))
* **archiver:** Do not attempt to decode blob before filtering
([#11668](#11668))
([961cbdd](961cbdd))
* Barretenber/stdlib/logic bugs
([#11651](#11651))
([dddab22](dddab22))
* Barretenberg/stdlib/logic bugs (redo)
([#11691](#11691))
([6d0bad7](6d0bad7))
* **docs:** Keys docs update
([#11665](#11665))
([ce3d92c](ce3d92c))
* Revert "barretenberg/stdlib/logic bugs"
([#11689](#11689))
([b99570d](b99570d))
* Solidity verifier caching
([#11712](#11712))
([2ba1e71](2ba1e71))
* Use eth-execution label
([#11713](#11713))
([d3c31d8](d3c31d8))


### Miscellaneous

* Add tests for gov proposer
([#11633](#11633))
([5c6a48a](5c6a48a)),
closes
[#11681](#11681)
* **bb-prover:** Avm test skip and split
([#11717](#11717))
([1778867](1778867))
* Benchmark sha256 number of instructions executed in AVM
([#11253](#11253))
([aaf0d8c](aaf0d8c))
* Delete MerkleTrees implementation in JS
([#11697](#11697))
([1db7b78](1db7b78))
* Ensure new kv-store is used on the server
([#11662](#11662))
([aee1420](aee1420))
* Field encoding should use `fromString` instead of `fromHexString`
([#11585](#11585))
([43fdbb1](43fdbb1)),
closes
[#10331](#10331)
* Improve boxes
([#11656](#11656))
([46a3e85](46a3e85))
* Increase node pool count and don't use a release channel
([#11687](#11687))
([65a3f11](65a3f11))
* Mark contracts as pub
([#11241](#11241))
([b168601](b168601))
* Reduce memory requests on prover node
([#11678](#11678))
([a720151](a720151))
* Remove profiler cache fallback
([#11680](#11680))
([a305aef](a305aef))
* Remove some templates in templates
([#11698](#11698))
([61614b1](61614b1))
* Remove unused functions from public side effect trace
([#11600](#11600))
([54e9602](54e9602))
* Replace relative paths to noir-protocol-circuits
([739151e](739151e))
* Replace relative paths to noir-protocol-circuits
([bbd526c](bbd526c))
* **sequencer:** Add InvalidArchive to canProposeAtNextEthBlock ignored
errors
([#11682](#11682))
([eea4bd3](eea4bd3))
* **spartan:** Remove hardcoded keys and addresses - derive all from
mnemonic
([#11672](#11672))
([65f0e48](65f0e48))
* Turn off auto-upgrade in node-pools
([#11679](#11679))
([09f98a9](09f98a9))
* Turn on masking in ultra and mega zk + oink clean-up
([#11693](#11693))
([08e96fe](08e96fe))


### Documentation

* Update mig notes release version
([#11685](#11685))
([46a30b5](46a30b5))
</details>

<details><summary>barretenberg: 0.74.0</summary>

##
[0.74.0](barretenberg-v0.73.0...barretenberg-v0.74.0)
(2025-02-04)


### Features

* UltraHonkZK contract
([#11553](#11553))
([a68369f](a68369f))


### Bug Fixes

* Barretenber/stdlib/logic bugs
([#11651](#11651))
([dddab22](dddab22))
* Barretenberg/stdlib/logic bugs (redo)
([#11691](#11691))
([6d0bad7](6d0bad7))
* Revert "barretenberg/stdlib/logic bugs"
([#11689](#11689))
([b99570d](b99570d))


### Miscellaneous

* Ensure new kv-store is used on the server
([#11662](#11662))
([aee1420](aee1420))
* Remove some templates in templates
([#11698](#11698))
([61614b1](61614b1))
* Turn on masking in ultra and mega zk + oink clean-up
([#11693](#11693))
([08e96fe](08e96fe))
</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 Feb 5, 2025
🤖 I have created a release *beep* *boop*
---


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

##
[0.74.0](AztecProtocol/aztec-packages@aztec-package-v0.73.0...aztec-package-v0.74.0)
(2025-02-04)


### Miscellaneous

* Ensure new kv-store is used on the server
([#11662](AztecProtocol/aztec-packages#11662))
([aee1420](AztecProtocol/aztec-packages@aee1420))
</details>

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

##
[0.74.0](AztecProtocol/aztec-packages@barretenberg.js-v0.73.0...barretenberg.js-v0.74.0)
(2025-02-04)


### Miscellaneous

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

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

##
[0.74.0](AztecProtocol/aztec-packages@aztec-packages-v0.73.0...aztec-packages-v0.74.0)
(2025-02-04)


### ⚠ BREAKING CHANGES

* time library
([#11542](AztecProtocol/aztec-packages#11542))

### Features

* `u128.ts` accepting string on input
([#11664](AztecProtocol/aztec-packages#11664))
([bb25992](AztecProtocol/aztec-packages@bb25992))
* Add network, better drawer performance
([#11694](AztecProtocol/aztec-packages#11694))
([1f61822](AztecProtocol/aztec-packages@1f61822))
* Skip calculation of partial sums when simulating blobs
([#11257](AztecProtocol/aztec-packages#11257))
([aca66f7](AztecProtocol/aztec-packages@aca66f7))
* Time library
([#11542](AztecProtocol/aztec-packages#11542))
([3b463f9](AztecProtocol/aztec-packages@3b463f9)),
closes
[#11520](AztecProtocol/aztec-packages#11520)
* UltraHonkZK contract
([#11553](AztecProtocol/aztec-packages#11553))
([a68369f](AztecProtocol/aztec-packages@a68369f))


### Bug Fixes

* Add bootstrap.sh to rebuild_patterns
([#11683](AztecProtocol/aztec-packages#11683))
([e84a81a](AztecProtocol/aztec-packages@e84a81a))
* **archiver:** Do not attempt to decode blob before filtering
([#11668](AztecProtocol/aztec-packages#11668))
([961cbdd](AztecProtocol/aztec-packages@961cbdd))
* Barretenber/stdlib/logic bugs
([#11651](AztecProtocol/aztec-packages#11651))
([dddab22](AztecProtocol/aztec-packages@dddab22))
* Barretenberg/stdlib/logic bugs (redo)
([#11691](AztecProtocol/aztec-packages#11691))
([6d0bad7](AztecProtocol/aztec-packages@6d0bad7))
* **docs:** Keys docs update
([#11665](AztecProtocol/aztec-packages#11665))
([ce3d92c](AztecProtocol/aztec-packages@ce3d92c))
* Revert "barretenberg/stdlib/logic bugs"
([#11689](AztecProtocol/aztec-packages#11689))
([b99570d](AztecProtocol/aztec-packages@b99570d))
* Solidity verifier caching
([#11712](AztecProtocol/aztec-packages#11712))
([2ba1e71](AztecProtocol/aztec-packages@2ba1e71))
* Use eth-execution label
([#11713](AztecProtocol/aztec-packages#11713))
([d3c31d8](AztecProtocol/aztec-packages@d3c31d8))


### Miscellaneous

* Add tests for gov proposer
([#11633](AztecProtocol/aztec-packages#11633))
([5c6a48a](AztecProtocol/aztec-packages@5c6a48a)),
closes
[#11681](AztecProtocol/aztec-packages#11681)
* **bb-prover:** Avm test skip and split
([#11717](AztecProtocol/aztec-packages#11717))
([1778867](AztecProtocol/aztec-packages@1778867))
* Benchmark sha256 number of instructions executed in AVM
([#11253](AztecProtocol/aztec-packages#11253))
([aaf0d8c](AztecProtocol/aztec-packages@aaf0d8c))
* Delete MerkleTrees implementation in JS
([#11697](AztecProtocol/aztec-packages#11697))
([1db7b78](AztecProtocol/aztec-packages@1db7b78))
* Ensure new kv-store is used on the server
([#11662](AztecProtocol/aztec-packages#11662))
([aee1420](AztecProtocol/aztec-packages@aee1420))
* Field encoding should use `fromString` instead of `fromHexString`
([#11585](AztecProtocol/aztec-packages#11585))
([43fdbb1](AztecProtocol/aztec-packages@43fdbb1)),
closes
[#10331](AztecProtocol/aztec-packages#10331)
* Improve boxes
([#11656](AztecProtocol/aztec-packages#11656))
([46a3e85](AztecProtocol/aztec-packages@46a3e85))
* Increase node pool count and don't use a release channel
([#11687](AztecProtocol/aztec-packages#11687))
([65a3f11](AztecProtocol/aztec-packages@65a3f11))
* Mark contracts as pub
([#11241](AztecProtocol/aztec-packages#11241))
([b168601](AztecProtocol/aztec-packages@b168601))
* Reduce memory requests on prover node
([#11678](AztecProtocol/aztec-packages#11678))
([a720151](AztecProtocol/aztec-packages@a720151))
* Remove profiler cache fallback
([#11680](AztecProtocol/aztec-packages#11680))
([a305aef](AztecProtocol/aztec-packages@a305aef))
* Remove some templates in templates
([#11698](AztecProtocol/aztec-packages#11698))
([61614b1](AztecProtocol/aztec-packages@61614b1))
* Remove unused functions from public side effect trace
([#11600](AztecProtocol/aztec-packages#11600))
([54e9602](AztecProtocol/aztec-packages@54e9602))
* Replace relative paths to noir-protocol-circuits
([739151e](AztecProtocol/aztec-packages@739151e))
* Replace relative paths to noir-protocol-circuits
([bbd526c](AztecProtocol/aztec-packages@bbd526c))
* **sequencer:** Add InvalidArchive to canProposeAtNextEthBlock ignored
errors
([#11682](AztecProtocol/aztec-packages#11682))
([eea4bd3](AztecProtocol/aztec-packages@eea4bd3))
* **spartan:** Remove hardcoded keys and addresses - derive all from
mnemonic
([#11672](AztecProtocol/aztec-packages#11672))
([65f0e48](AztecProtocol/aztec-packages@65f0e48))
* Turn off auto-upgrade in node-pools
([#11679](AztecProtocol/aztec-packages#11679))
([09f98a9](AztecProtocol/aztec-packages@09f98a9))
* Turn on masking in ultra and mega zk + oink clean-up
([#11693](AztecProtocol/aztec-packages#11693))
([08e96fe](AztecProtocol/aztec-packages@08e96fe))


### Documentation

* Update mig notes release version
([#11685](AztecProtocol/aztec-packages#11685))
([46a30b5](AztecProtocol/aztec-packages@46a30b5))
</details>

<details><summary>barretenberg: 0.74.0</summary>

##
[0.74.0](AztecProtocol/aztec-packages@barretenberg-v0.73.0...barretenberg-v0.74.0)
(2025-02-04)


### Features

* UltraHonkZK contract
([#11553](AztecProtocol/aztec-packages#11553))
([a68369f](AztecProtocol/aztec-packages@a68369f))


### Bug Fixes

* Barretenber/stdlib/logic bugs
([#11651](AztecProtocol/aztec-packages#11651))
([dddab22](AztecProtocol/aztec-packages@dddab22))
* Barretenberg/stdlib/logic bugs (redo)
([#11691](AztecProtocol/aztec-packages#11691))
([6d0bad7](AztecProtocol/aztec-packages@6d0bad7))
* Revert "barretenberg/stdlib/logic bugs"
([#11689](AztecProtocol/aztec-packages#11689))
([b99570d](AztecProtocol/aztec-packages@b99570d))


### Miscellaneous

* Ensure new kv-store is used on the server
([#11662](AztecProtocol/aztec-packages#11662))
([aee1420](AztecProtocol/aztec-packages@aee1420))
* Remove some templates in templates
([#11698](AztecProtocol/aztec-packages#11698))
([61614b1](AztecProtocol/aztec-packages@61614b1))
* Turn on masking in ultra and mega zk + oink clean-up
([#11693](AztecProtocol/aztec-packages#11693))
([08e96fe](AztecProtocol/aztec-packages@08e96fe))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants