chore: turn on masking in ultra and mega zk + oink clean-up#11693
chore: turn on masking in ultra and mega zk + oink clean-up#11693iakovenkos merged 5 commits intomasterfrom
Conversation
ledwards2225
left a comment
There was a problem hiding this comment.
LG- just a few comments
| { | ||
| using Flavor = TypeParam; | ||
|
|
||
| // MegaZKFlavor is only used to prove the Hiding Circuit. |
There was a problem hiding this comment.
I'm not sure I understand why we're skipping these specific tests. Is it because the mechanism doesn't work in the structured trace case? Can you make this a little more explicit?
There was a problem hiding this comment.
done, agree that the original comment was misleading
I'm planning to switch the hiding circuit from Mega to MegaZK in a follow-up, will investigate how much time we spend on commitments and whether we could use structured polys there.
| transcript->send_to_verifier(domain_separator + wire_labels[idx], wire_comms[idx]); | ||
| commit_to_witness_polynomial(proving_key->proving_key.polynomials.w_l, commitment_labels.w_l); | ||
| commit_to_witness_polynomial(proving_key->proving_key.polynomials.w_r, commitment_labels.w_r); | ||
| commit_to_witness_polynomial(proving_key->proving_key.polynomials.w_o, commitment_labels.w_o); |
There was a problem hiding this comment.
It seems like this will never use the structured commit - am I missing something?
| private: | ||
| static void mask_witness_polynomial(Polynomial<FF>& polynomial) | ||
| { | ||
| const size_t circuit_size = polynomial.virtual_size(); |
There was a problem hiding this comment.
The constexpr check here is redundant with the one in commit_to_witness_polynomial. If you want to ensure its only used for ZK flavors you could use a concept requires
| * @param label | ||
| * @param type | ||
| */ | ||
| void commit_to_witness_polynomial(Polynomial<FF>& polynomial, |
There was a problem hiding this comment.
Perhaps this is a bit of a nitpick but I don't love a method with a simple name that does more than it says, i.e. this doesn't just commit, it potentially adds blinding and adds the commit to the proof. I don't feel strongly though. Either way, could you move the definitions of any new methods to the .cpp file?
There was a problem hiding this comment.
Sure, will move to cpp.
I see your point, the justification I had for myself is that commit and send_to_verifier are basically inseparable + when I added branching on ZK in each method, they became unreadable
| proving_key->proving_key.commitment_key->commit(proving_key->proving_key.polynomials.lookup_read_counts); | ||
| witness_commitments.lookup_read_tags = | ||
| proving_key->proving_key.commitment_key->commit(proving_key->proving_key.polynomials.lookup_read_tags); | ||
| commit_to_witness_polynomial(proving_key->proving_key.polynomials.lookup_read_counts, |
There was a problem hiding this comment.
Can you please turn on the use of commit_sparse here? Its not being used in master either but it definitely should be used
There was a problem hiding this comment.
done, I'm seeing -70ms in ClientIVCBench
🤖 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).
🤖 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).
We have a mechanism to mask witness commitments and evaluations in ZK Flavors, in this PR the masking is enabled.
It is also a precursor to short scalars in UH ZK Recursive verifier, as it eliminates the edge cases from
bn254_endo_batch_mul.Cleaned up oink prover using a newly introduced
commit_with_typemethod