-
Notifications
You must be signed in to change notification settings - Fork 268
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: Extended IPA tests and fuzzing #5140
Conversation
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Values are compared against data from master at commit L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction processing duration by data writes.
|
@@ -31,6 +31,10 @@ inline void* protected_aligned_alloc(size_t alignment, size_t size) | |||
{ | |||
size += (size % alignment); | |||
void* t = nullptr; | |||
// pad size to alignment | |||
if (size % alignment != 0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I got tired of ASAN screaming at me every time I run MSM under it
5671929
to
1faa5d8
Compare
} | ||
|
||
// A regression test to make sure the -1 case is covered | ||
TEST(AffineElement, BatchByMinusOne) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are these tests only for Grumpkin?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added an issue
@@ -901,6 +901,28 @@ std::vector<affine_element<Fq, Fr, T>> element<Fq, Fr, T>::batch_mul_with_endomo | |||
/*finite_field_additions_per_iteration=*/7, | |||
/*finite_field_multiplications_per_iteration=*/6); | |||
}; | |||
|
|||
// Since the core algorithm has no edgecase detection, it can't handle -1. (Because constructing -1 is r + -1 as |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you make this comment more explicit please?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
// Vector of group elements received from the prover / sent to the verifier | ||
std::vector<bb::curve::Grumpkin::AffineElement> group_elements; | ||
// Vector of field elements received from the prover / sent to the verifier. uint256_t is used to ignore field type | ||
std::vector<uint256_t> field_elements; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
won't conversions get confused if you ignore field types? why not templating if you want different fields?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wdym by "confused"? Both base and scalar field elements can be easily converted
size_t current_group_index = 0; | ||
|
||
/** | ||
* @brief Reset the transcript (requires to submit the challenges) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
when i read reset i think of the transcript being cleared not instantiated with sth new so maybe a different name could suit
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
* @details After the transcipt received elements from the prover, this method allows to reset counters so that the | ||
* verifier can receive those elements | ||
*/ | ||
void reset_for_verifier() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
doesn't reset already do these?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nvm, saw the usage, i think it makes sense, maybe would name reset_indices
or sth?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
* | ||
* @tparam Transcript Transcript type. Useful for testing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where exactly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Transcript Transcript?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One is an automatic name of the parameter, the other is "Transcript type"
@@ -246,7 +264,11 @@ template <typename Curve> class IPA { | |||
|
|||
// Step 6.d | |||
// Receive the challenge from the verifier | |||
const Fr round_challenge = transcript->get_challenge<Fr>("IPA:round_challenge_" + index); | |||
const Fr round_challenge = transcript->template get_challenge<Fr>("IPA:round_challenge_" + index); | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it seemed everywhere else we use ASSERTs. I know they only trigger in debug mode, but that should be fine for now, right? Or is there any specific reason why we want to go with throw_or_abort
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also we don't document anywhere why these cannot be zero right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My understanding is ASSERTs should be used to detect cases of programmers' mistakes. And in this case you'd want to abort in production,too
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added docs
namespace bb { | ||
|
||
// We actually only use 4, because fuzzing is very slow | ||
constexpr size_t COMMITMENT_TEST_NUM_POINTS = 32; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that's such a small crs btw :o
const auto* offset = data + 1; | ||
const auto num_challenges = log_size + 1; | ||
// How much data do we need? | ||
// Challenges: sizeof(uint256_t) * num_challenges + 1 for montgomery switch |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wdym by montgomery switch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When we do field(uint256_t(buffer)), underneath the value converts to montgomery form, after it is reduced several times. This means that the internal data of the field element is a map of the buffer, and so a single bit change of the buffer will lead to huge changes in internal representation. To be able to switch it off, I use flags from input to convert the field element back from montgomery form, so the internal form directly corresponds with what's in the buffer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thannks for explaining!
@@ -44,6 +48,142 @@ TEST_F(IPATest, CommitOnManyZeroCoeffPolyWorks) | |||
EXPECT_EQ(expected.normalize(), commitment.normalize()); | |||
} | |||
|
|||
TEST_F(IPATest, OpenZeroPolynomial) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can you add brief comments explaining the why behind each test
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
237238d
to
a0057a9
Compare
70f06db
to
c9949bc
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks for the updates.
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.29.0</summary> ## [0.29.0](aztec-package-v0.28.1...aztec-package-v0.29.0) (2024-03-18) ### Features * Initial Earthly CI ([#5069](#5069)) ([8e75fe5](8e75fe5)) </details> <details><summary>barretenberg.js: 0.29.0</summary> ## [0.29.0](barretenberg.js-v0.28.1...barretenberg.js-v0.29.0) (2024-03-18) ### Features * Initial Earthly CI ([#5069](#5069)) ([8e75fe5](8e75fe5)) </details> <details><summary>aztec-cli: 0.29.0</summary> ## [0.29.0](aztec-cli-v0.28.1...aztec-cli-v0.29.0) (2024-03-18) ### Features * Use deployer in address computation ([#5201](#5201)) ([258ff4a](258ff4a)) ### Miscellaneous * Delete ContractData ([#5258](#5258)) ([e516f9b](e516f9b)) * Delete ExtendedContractData struct ([#5248](#5248)) ([8ae0c13](8ae0c13)) * Removing redundant receipts check ([#5271](#5271)) ([5ab07fb](5ab07fb)) </details> <details><summary>aztec-packages: 0.29.0</summary> ## [0.29.0](aztec-packages-v0.28.1...aztec-packages-v0.29.0) (2024-03-18) ### ⚠ BREAKING CHANGES * Acir call opcode ([#4773](#4773)) ### Features * Acir call opcode ([#4773](#4773)) ([0b15db2](0b15db2)) * Add as_slice builtin function, add execution test (noir-lang/noir#4523) ([86e1a86](86e1a86)) * Add more impls on Option (noir-lang/noir#4549) ([86e1a86](86e1a86)) * Add RelWithAssert build ([#4997](#4997)) ([4f337c7](4f337c7)) * Allow usage of noir `#[test]` syntax in stdlib (noir-lang/noir#4553) ([86e1a86](86e1a86)) * **AuthWit:** Simplify create authwit syntax ([#5132](#5132)) ([d0a5b19](d0a5b19)) * **avm:** Brillig CONST of size > u128 ([#5217](#5217)) ([2e63479](2e63479)) * **avm:** Mov opcode with direct memory ([#5204](#5204)) ([08f9038](08f9038)), closes [#5159](#5159) * Brillig IR refactor ([#5233](#5233)) ([9a73348](9a73348)) * Check initializer msg.sender matches deployer from address preimage ([#5222](#5222)) ([438d16f](438d16f)) * Extended IPA tests and fuzzing ([#5140](#5140)) ([0ae5ace](0ae5ace)) * Initial Earthly CI ([#5069](#5069)) ([8e75fe5](8e75fe5)) * New Outbox Contract [#4768](#4768) ([#5090](#5090)) ([6421a3d](6421a3d)) * Remove curly braces with fmt (noir-lang/noir#4529) ([86e1a86](86e1a86)) * Remove curly braces with fmt (noir-lang/noir#4529) ([d8b8456](d8b8456)) * Remove unnecessary `mulmod`s from verifier contract ([#5269](#5269)) ([20d9c0c](20d9c0c)) * Signed integer division and modulus in brillig gen ([#5279](#5279)) ([82f8cf5](82f8cf5)) * Use deployer in address computation ([#5201](#5201)) ([258ff4a](258ff4a)) ### Bug Fixes * **avm-transpiler:** RETURN is direct ([#5277](#5277)) ([f90b2cf](f90b2cf)) * **bb:** Mac build ([#5253](#5253)) ([ae021c0](ae021c0)) * CVC5 api update ([#5203](#5203)) ([9cc32cb](9cc32cb)) * Evaluate operators in globals in types (noir-lang/noir#4537) ([86e1a86](86e1a86)) * Evaluate operators in globals in types (noir-lang/noir#4537) ([d8b8456](d8b8456)) * Make `nargo` the default binary for cargo run (noir-lang/noir#4554) ([86e1a86](86e1a86)) * Make `nargo` the default binary for cargo run (noir-lang/noir#4554) ([d8b8456](d8b8456)) * Revert "fix: noir mirror merge strat" ([#5250](#5250)) ([7e8e8e5](7e8e8e5)) * Validation requests ([#5236](#5236)) ([25ce33b](25ce33b)) ### Miscellaneous * Add avm team to codeowners for public context ([#5288](#5288)) ([e146076](e146076)) * Add more `Hash` impls to stdlib (noir-lang/noir#4470) ([86e1a86](86e1a86)) * Add more `Hash` impls to stdlib (noir-lang/noir#4470) ([d8b8456](d8b8456)) * Add quick explanatory comment to outbox suggested by [@benesjan](https://github.com/benesjan) ([#5247](#5247)) ([56e8451](56e8451)) * **avm-simulator:** Update e2e test ([#5283](#5283)) ([e9beeca](e9beeca)) * **avm-transpiler:** Return u8 in comparison ops ([#5280](#5280)) ([1a5eb69](1a5eb69)) * **avm-transpiler:** Transpiler cleanup ([#5218](#5218)) ([199e918](199e918)) * Delete ContractDao ([#5256](#5256)) ([544e278](544e278)) * Delete ContractData ([#5258](#5258)) ([e516f9b](e516f9b)) * Delete ExtendedContractData struct ([#5248](#5248)) ([8ae0c13](8ae0c13)) * Delete isInternal and isConstructor fields from FunctionData ([#5232](#5232)) ([dea3f87](dea3f87)) * Delete unused contract tree ts code ([#5229](#5229)) ([b48dd23](b48dd23)) * Delete unused hash functions ([#5231](#5231)) ([fed70a1](fed70a1)) * Fix docker test workflows (noir-lang/noir#4566) ([86e1a86](86e1a86)) * Fixing some broken links (noir-lang/noir#4556) ([86e1a86](86e1a86)) * Making docs build before cutting versions (noir-lang/noir#4568) ([86e1a86](86e1a86)) * Old inbox purge ([#5206](#5206)) ([a26d968](a26d968)) * Removing redundant receipts check ([#5271](#5271)) ([5ab07fb](5ab07fb)) * Separate tests for execution failures from compilation failures (noir-lang/noir#4559) ([86e1a86](86e1a86)) * Separate tests for execution failures from compilation failures (noir-lang/noir#4559) ([d8b8456](d8b8456)) * Template Zeromorph by PCS ([#5215](#5215)) ([03feab2](03feab2)) * Use inotifywait to run generate in yarn-project ([#5168](#5168)) ([137c13e](137c13e)) ### Documentation * **yp:** Remove contract tree and deploy data from circuits and state ([#5260](#5260)) ([acffa7b](acffa7b)) </details> <details><summary>barretenberg: 0.29.0</summary> ## [0.29.0](barretenberg-v0.28.1...barretenberg-v0.29.0) (2024-03-18) ### ⚠ BREAKING CHANGES * Acir call opcode ([#4773](#4773)) ### Features * Acir call opcode ([#4773](#4773)) ([0b15db2](0b15db2)) * Add RelWithAssert build ([#4997](#4997)) ([4f337c7](4f337c7)) * **avm:** Mov opcode with direct memory ([#5204](#5204)) ([08f9038](08f9038)), closes [#5159](#5159) * Extended IPA tests and fuzzing ([#5140](#5140)) ([0ae5ace](0ae5ace)) * Initial Earthly CI ([#5069](#5069)) ([8e75fe5](8e75fe5)) * Remove unnecessary `mulmod`s from verifier contract ([#5269](#5269)) ([20d9c0c](20d9c0c)) * Signed integer division and modulus in brillig gen ([#5279](#5279)) ([82f8cf5](82f8cf5)) ### Bug Fixes * **bb:** Mac build ([#5253](#5253)) ([ae021c0](ae021c0)) * CVC5 api update ([#5203](#5203)) ([9cc32cb](9cc32cb)) ### Miscellaneous * Template Zeromorph by PCS ([#5215](#5215)) ([03feab2](03feab2)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@aztec-package-v0.28.1...aztec-package-v0.29.0) (2024-03-18) ### Features * Initial Earthly CI ([#5069](AztecProtocol/aztec-packages#5069)) ([8e75fe5](AztecProtocol/aztec-packages@8e75fe5)) </details> <details><summary>barretenberg.js: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@barretenberg.js-v0.28.1...barretenberg.js-v0.29.0) (2024-03-18) ### Features * Initial Earthly CI ([#5069](AztecProtocol/aztec-packages#5069)) ([8e75fe5](AztecProtocol/aztec-packages@8e75fe5)) </details> <details><summary>aztec-cli: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@aztec-cli-v0.28.1...aztec-cli-v0.29.0) (2024-03-18) ### Features * Use deployer in address computation ([#5201](AztecProtocol/aztec-packages#5201)) ([258ff4a](AztecProtocol/aztec-packages@258ff4a)) ### Miscellaneous * Delete ContractData ([#5258](AztecProtocol/aztec-packages#5258)) ([e516f9b](AztecProtocol/aztec-packages@e516f9b)) * Delete ExtendedContractData struct ([#5248](AztecProtocol/aztec-packages#5248)) ([8ae0c13](AztecProtocol/aztec-packages@8ae0c13)) * Removing redundant receipts check ([#5271](AztecProtocol/aztec-packages#5271)) ([5ab07fb](AztecProtocol/aztec-packages@5ab07fb)) </details> <details><summary>aztec-packages: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@aztec-packages-v0.28.1...aztec-packages-v0.29.0) (2024-03-18) ### ⚠ BREAKING CHANGES * Acir call opcode ([#4773](AztecProtocol/aztec-packages#4773)) ### Features * Acir call opcode ([#4773](AztecProtocol/aztec-packages#4773)) ([0b15db2](AztecProtocol/aztec-packages@0b15db2)) * Add as_slice builtin function, add execution test (noir-lang/noir#4523) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Add more impls on Option (noir-lang/noir#4549) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Add RelWithAssert build ([#4997](AztecProtocol/aztec-packages#4997)) ([4f337c7](AztecProtocol/aztec-packages@4f337c7)) * Allow usage of noir `#[test]` syntax in stdlib (noir-lang/noir#4553) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * **AuthWit:** Simplify create authwit syntax ([#5132](AztecProtocol/aztec-packages#5132)) ([d0a5b19](AztecProtocol/aztec-packages@d0a5b19)) * **avm:** Brillig CONST of size > u128 ([#5217](AztecProtocol/aztec-packages#5217)) ([2e63479](AztecProtocol/aztec-packages@2e63479)) * **avm:** Mov opcode with direct memory ([#5204](AztecProtocol/aztec-packages#5204)) ([08f9038](AztecProtocol/aztec-packages@08f9038)), closes [#5159](AztecProtocol/aztec-packages#5159) * Brillig IR refactor ([#5233](AztecProtocol/aztec-packages#5233)) ([9a73348](AztecProtocol/aztec-packages@9a73348)) * Check initializer msg.sender matches deployer from address preimage ([#5222](AztecProtocol/aztec-packages#5222)) ([438d16f](AztecProtocol/aztec-packages@438d16f)) * Extended IPA tests and fuzzing ([#5140](AztecProtocol/aztec-packages#5140)) ([0ae5ace](AztecProtocol/aztec-packages@0ae5ace)) * Initial Earthly CI ([#5069](AztecProtocol/aztec-packages#5069)) ([8e75fe5](AztecProtocol/aztec-packages@8e75fe5)) * New Outbox Contract [#4768](AztecProtocol/aztec-packages#4768) ([#5090](AztecProtocol/aztec-packages#5090)) ([6421a3d](AztecProtocol/aztec-packages@6421a3d)) * Remove curly braces with fmt (noir-lang/noir#4529) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Remove curly braces with fmt (noir-lang/noir#4529) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Remove unnecessary `mulmod`s from verifier contract ([#5269](AztecProtocol/aztec-packages#5269)) ([20d9c0c](AztecProtocol/aztec-packages@20d9c0c)) * Signed integer division and modulus in brillig gen ([#5279](AztecProtocol/aztec-packages#5279)) ([82f8cf5](AztecProtocol/aztec-packages@82f8cf5)) * Use deployer in address computation ([#5201](AztecProtocol/aztec-packages#5201)) ([258ff4a](AztecProtocol/aztec-packages@258ff4a)) ### Bug Fixes * **avm-transpiler:** RETURN is direct ([#5277](AztecProtocol/aztec-packages#5277)) ([f90b2cf](AztecProtocol/aztec-packages@f90b2cf)) * **bb:** Mac build ([#5253](AztecProtocol/aztec-packages#5253)) ([ae021c0](AztecProtocol/aztec-packages@ae021c0)) * CVC5 api update ([#5203](AztecProtocol/aztec-packages#5203)) ([9cc32cb](AztecProtocol/aztec-packages@9cc32cb)) * Evaluate operators in globals in types (noir-lang/noir#4537) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Evaluate operators in globals in types (noir-lang/noir#4537) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Make `nargo` the default binary for cargo run (noir-lang/noir#4554) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Make `nargo` the default binary for cargo run (noir-lang/noir#4554) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Revert "fix: noir mirror merge strat" ([#5250](AztecProtocol/aztec-packages#5250)) ([7e8e8e5](AztecProtocol/aztec-packages@7e8e8e5)) * Validation requests ([#5236](AztecProtocol/aztec-packages#5236)) ([25ce33b](AztecProtocol/aztec-packages@25ce33b)) ### Miscellaneous * Add avm team to codeowners for public context ([#5288](AztecProtocol/aztec-packages#5288)) ([e146076](AztecProtocol/aztec-packages@e146076)) * Add more `Hash` impls to stdlib (noir-lang/noir#4470) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Add more `Hash` impls to stdlib (noir-lang/noir#4470) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Add quick explanatory comment to outbox suggested by [@benesjan](https://github.com/benesjan) ([#5247](AztecProtocol/aztec-packages#5247)) ([56e8451](AztecProtocol/aztec-packages@56e8451)) * **avm-simulator:** Update e2e test ([#5283](AztecProtocol/aztec-packages#5283)) ([e9beeca](AztecProtocol/aztec-packages@e9beeca)) * **avm-transpiler:** Return u8 in comparison ops ([#5280](AztecProtocol/aztec-packages#5280)) ([1a5eb69](AztecProtocol/aztec-packages@1a5eb69)) * **avm-transpiler:** Transpiler cleanup ([#5218](AztecProtocol/aztec-packages#5218)) ([199e918](AztecProtocol/aztec-packages@199e918)) * Delete ContractDao ([#5256](AztecProtocol/aztec-packages#5256)) ([544e278](AztecProtocol/aztec-packages@544e278)) * Delete ContractData ([#5258](AztecProtocol/aztec-packages#5258)) ([e516f9b](AztecProtocol/aztec-packages@e516f9b)) * Delete ExtendedContractData struct ([#5248](AztecProtocol/aztec-packages#5248)) ([8ae0c13](AztecProtocol/aztec-packages@8ae0c13)) * Delete isInternal and isConstructor fields from FunctionData ([#5232](AztecProtocol/aztec-packages#5232)) ([dea3f87](AztecProtocol/aztec-packages@dea3f87)) * Delete unused contract tree ts code ([#5229](AztecProtocol/aztec-packages#5229)) ([b48dd23](AztecProtocol/aztec-packages@b48dd23)) * Delete unused hash functions ([#5231](AztecProtocol/aztec-packages#5231)) ([fed70a1](AztecProtocol/aztec-packages@fed70a1)) * Fix docker test workflows (noir-lang/noir#4566) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Fixing some broken links (noir-lang/noir#4556) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Making docs build before cutting versions (noir-lang/noir#4568) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Old inbox purge ([#5206](AztecProtocol/aztec-packages#5206)) ([a26d968](AztecProtocol/aztec-packages@a26d968)) * Removing redundant receipts check ([#5271](AztecProtocol/aztec-packages#5271)) ([5ab07fb](AztecProtocol/aztec-packages@5ab07fb)) * Separate tests for execution failures from compilation failures (noir-lang/noir#4559) ([86e1a86](AztecProtocol/aztec-packages@86e1a86)) * Separate tests for execution failures from compilation failures (noir-lang/noir#4559) ([d8b8456](AztecProtocol/aztec-packages@d8b8456)) * Template Zeromorph by PCS ([#5215](AztecProtocol/aztec-packages#5215)) ([03feab2](AztecProtocol/aztec-packages@03feab2)) * Use inotifywait to run generate in yarn-project ([#5168](AztecProtocol/aztec-packages#5168)) ([137c13e](AztecProtocol/aztec-packages@137c13e)) ### Documentation * **yp:** Remove contract tree and deploy data from circuits and state ([#5260](AztecProtocol/aztec-packages#5260)) ([acffa7b](AztecProtocol/aztec-packages@acffa7b)) </details> <details><summary>barretenberg: 0.29.0</summary> ## [0.29.0](AztecProtocol/aztec-packages@barretenberg-v0.28.1...barretenberg-v0.29.0) (2024-03-18) ### ⚠ BREAKING CHANGES * Acir call opcode ([#4773](AztecProtocol/aztec-packages#4773)) ### Features * Acir call opcode ([#4773](AztecProtocol/aztec-packages#4773)) ([0b15db2](AztecProtocol/aztec-packages@0b15db2)) * Add RelWithAssert build ([#4997](AztecProtocol/aztec-packages#4997)) ([4f337c7](AztecProtocol/aztec-packages@4f337c7)) * **avm:** Mov opcode with direct memory ([#5204](AztecProtocol/aztec-packages#5204)) ([08f9038](AztecProtocol/aztec-packages@08f9038)), closes [#5159](AztecProtocol/aztec-packages#5159) * Extended IPA tests and fuzzing ([#5140](AztecProtocol/aztec-packages#5140)) ([0ae5ace](AztecProtocol/aztec-packages@0ae5ace)) * Initial Earthly CI ([#5069](AztecProtocol/aztec-packages#5069)) ([8e75fe5](AztecProtocol/aztec-packages@8e75fe5)) * Remove unnecessary `mulmod`s from verifier contract ([#5269](AztecProtocol/aztec-packages#5269)) ([20d9c0c](AztecProtocol/aztec-packages@20d9c0c)) * Signed integer division and modulus in brillig gen ([#5279](AztecProtocol/aztec-packages#5279)) ([82f8cf5](AztecProtocol/aztec-packages@82f8cf5)) ### Bug Fixes * **bb:** Mac build ([#5253](AztecProtocol/aztec-packages#5253)) ([ae021c0](AztecProtocol/aztec-packages@ae021c0)) * CVC5 api update ([#5203](AztecProtocol/aztec-packages#5203)) ([9cc32cb](AztecProtocol/aztec-packages@9cc32cb)) ### Miscellaneous * Template Zeromorph by PCS ([#5215](AztecProtocol/aztec-packages#5215)) ([03feab2](AztecProtocol/aztec-packages@03feab2)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This PR extends IPA testing with testing for specific cases such as:
To this end it adds a mock transcript to provide artificial challenges. It also adds a fuzzer for IPA and fixes a bug in group arithmetic found during testing