-
Notifications
You must be signed in to change notification settings - Fork 283
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: Goblin Translator flavor and permutation correctness (Goblin Translator part 7) #2961
Conversation
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Values are compared against data from master at commit L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
MiscellaneousTransaction sizes based on how many contracts are deployed in the tx.
|
X_LO_Y_HI, | ||
X_HI_Z_1, | ||
Y_LO_Z_2, | ||
/*P.xₗₒ split into 2 68 bit limbs*/ |
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.
Is the 68 bits a fixed parameter or can it vary? Instead of using a magic number, could you replaced with a name constant?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A lot has to change in the code to switch from 68-bit limbs. I'll replace with the name
public: | ||
DataType& lagrange_first = std::get<0>(this->_data); | ||
DataType& lagrange_last = std::get<1>(this->_data); | ||
DataType& lagrange_odd = std::get<2>(this->_data); |
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.
pedantic comment: lagrange_odd === lagrange_even_shift
. Might improve performance if we used the shifted even polynomial (maybe add a a comment highlighting this as a potential future improvement?)
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
barretenberg/cpp/src/barretenberg/honk/proof_system/permutation_library.hpp
Show resolved
Hide resolved
template <typename Flavor, typename StorageHandle> void compute_concatenated_polynomials(StorageHandle* proving_key) | ||
{ | ||
// Concatenation groups are vectors of polynomials that are concatenated together | ||
auto concatenation_groups = proving_key->get_concatenation_groups(); |
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 we replace auto
with a proper type? It would make it easier to read what is happening here. If the type is complex, a using
declaration would be better than auto
as the reader would know where to look to read the type definition.
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
auto concatenation_groups = proving_key->get_concatenation_groups(); | ||
|
||
// Resulting concatenated polynomials | ||
auto targets = proving_key->get_concatenated_constraints(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same thing about `auto type
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
barretenberg/cpp/src/barretenberg/honk/proof_system/permutation_library.hpp
Show resolved
Hide resolved
barretenberg/cpp/src/barretenberg/honk/proof_system/permutation_library.hpp
Show resolved
Hide resolved
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 left several comments with requested changes, but they are all minor. Overall great work, thank you for breaking this down into small PRs
…anslator part 7) (#2961) This PR: 1. Introduces the Goblin Translator flavor with definitions of all polynomials, etc 2. Adds a relation correctness test for Goblin Translator permutation 3. Adds functions for constructing ordered and concatenated constraint polynomials used in the permutation
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.12.0</summary> ## [0.12.0](aztec-packages-v0.11.1...aztec-packages-v0.12.0) (2023-10-26) ### ⚠ BREAKING CHANGES * remove plookup pedersen methods from c_bind namespace ([#3033](#3033)) ### Features * Add function selector to cli to make it easier for to call functions ([#3053](#3053)) ([e0f0a8e](e0f0a8e)), closes [#1996](#1996) * Added correctness tests for several small relations in Goblin Translator (Goblin Translator part 8) ([#2963](#2963)) ([4c83250](4c83250)) * AWS mainnet fork ([#2986](#2986)) ([f491362](f491362)) * Correctness tests for decomposition and non-native field relations (Goblin Translator Part 9) ([#2981](#2981)) ([cdc830d](cdc830d)) * Enable sol verifier tests in ci ([#2997](#2997)) ([058de1e](058de1e)) * Goblin Translator flavor and permutation correctness (Goblin Translator part 7) ([#2961](#2961)) ([737f17f](737f17f)) * Linking errors ([#3004](#3004)) ([388a47b](388a47b)), closes [#2969](#2969) ### Bug Fixes * Fix clang-16 check ([#3030](#3030)) ([7a5a8b3](7a5a8b3)) * Fix docusaurus yellow paper build ([#3063](#3063)) ([db54c1f](db54c1f)) * Run deploy step for mainnet fork ([#3052](#3052)) ([9b6be22](9b6be22)) * Try fix publish bb ([#3036](#3036)) ([51248b5](51248b5)) * Unboxing - nargo.toml injection of "-" for "_" ([#3018](#3018)) ([83d6c51](83d6c51)) ### Miscellaneous * **acir_tests:** Add script to regenerate double_verify_proof inputs ([#3005](#3005)) ([9c4eab2](9c4eab2)) * Add portal contract option to deploy subcommand of aztec-cli ([#3032](#3032)) ([546b410](546b410)) * Fix `pedersen_compress_with_hash_index` c_bind function ([#3054](#3054)) ([a136f6e](a136f6e)) * Msg sender is 0 when no entrypoint is called ([#3024](#3024)) ([53c6680](53c6680)), closes [#2949](#2949) * Optimize pedersen hash for the common usecase by not allocating when input fits in scratch space ([#3056](#3056)) ([a0d290d](a0d290d)) * Proxy redundant `hash` methods ([#3046](#3046)) ([df389b5](df389b5)) * Remove "non-core artifact" nargo generated files ([#3026](#3026)) ([03ebb8e](03ebb8e)), closes [#2977](#2977) * Remove `pedersen_buffer_to_field` from c_bind ([#3045](#3045)) ([de7e63b](de7e63b)) * Remove pedersen hash oracle ([#3023](#3023)) ([0e6958c](0e6958c)) * Remove plookup pedersen methods from c_bind namespace ([#3033](#3033)) ([a8ea391](a8ea391)) * Rename pedersen typescript methods to be called `hash` instead of compress ([#3047](#3047)) ([2f7cc5f](2f7cc5f)) * Run check rebuild on boxes ([#3000](#3000)) ([c503d91](c503d91)) * Same prettier in boxes and everywhere else ([#3025](#3025)) ([0769d20](0769d20)), closes [#2978](#2978) </details> <details><summary>barretenberg.js: 0.12.0</summary> ## [0.12.0](barretenberg.js-v0.11.1...barretenberg.js-v0.12.0) (2023-10-26) ### ⚠ BREAKING CHANGES * remove plookup pedersen methods from c_bind namespace ([#3033](#3033)) ### Miscellaneous * Proxy redundant `hash` methods ([#3046](#3046)) ([df389b5](df389b5)) * Remove `pedersen_buffer_to_field` from c_bind ([#3045](#3045)) ([de7e63b](de7e63b)) * Remove plookup pedersen methods from c_bind namespace ([#3033](#3033)) ([a8ea391](a8ea391)) * Rename pedersen typescript methods to be called `hash` instead of compress ([#3047](#3047)) ([2f7cc5f](2f7cc5f)) </details> <details><summary>barretenberg: 0.12.0</summary> ## [0.12.0](barretenberg-v0.11.1...barretenberg-v0.12.0) (2023-10-26) ### ⚠ BREAKING CHANGES * remove plookup pedersen methods from c_bind namespace ([#3033](#3033)) ### Features * Added correctness tests for several small relations in Goblin Translator (Goblin Translator part 8) ([#2963](#2963)) ([4c83250](4c83250)) * Correctness tests for decomposition and non-native field relations (Goblin Translator Part 9) ([#2981](#2981)) ([cdc830d](cdc830d)) * Enable sol verifier tests in ci ([#2997](#2997)) ([058de1e](058de1e)) * Goblin Translator flavor and permutation correctness (Goblin Translator part 7) ([#2961](#2961)) ([737f17f](737f17f)) ### Bug Fixes * Fix clang-16 check ([#3030](#3030)) ([7a5a8b3](7a5a8b3)) ### Miscellaneous * **acir_tests:** Add script to regenerate double_verify_proof inputs ([#3005](#3005)) ([9c4eab2](9c4eab2)) * Fix `pedersen_compress_with_hash_index` c_bind function ([#3054](#3054)) ([a136f6e](a136f6e)) * Proxy redundant `hash` methods ([#3046](#3046)) ([df389b5](df389b5)) * Remove `pedersen_buffer_to_field` from c_bind ([#3045](#3045)) ([de7e63b](de7e63b)) * Remove pedersen hash oracle ([#3023](#3023)) ([0e6958c](0e6958c)) * Remove plookup pedersen methods from c_bind namespace ([#3033](#3033)) ([a8ea391](a8ea391)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.12.0</summary> ## [0.12.0](AztecProtocol/aztec-packages@aztec-packages-v0.11.1...aztec-packages-v0.12.0) (2023-10-26) ### ⚠ BREAKING CHANGES * remove plookup pedersen methods from c_bind namespace ([#3033](AztecProtocol/aztec-packages#3033)) ### Features * Add function selector to cli to make it easier for to call functions ([#3053](AztecProtocol/aztec-packages#3053)) ([e0f0a8e](AztecProtocol/aztec-packages@e0f0a8e)), closes [#1996](AztecProtocol/aztec-packages#1996) * Added correctness tests for several small relations in Goblin Translator (Goblin Translator part 8) ([#2963](AztecProtocol/aztec-packages#2963)) ([4c83250](AztecProtocol/aztec-packages@4c83250)) * AWS mainnet fork ([#2986](AztecProtocol/aztec-packages#2986)) ([f491362](AztecProtocol/aztec-packages@f491362)) * Correctness tests for decomposition and non-native field relations (Goblin Translator Part 9) ([#2981](AztecProtocol/aztec-packages#2981)) ([cdc830d](AztecProtocol/aztec-packages@cdc830d)) * Enable sol verifier tests in ci ([#2997](AztecProtocol/aztec-packages#2997)) ([058de1e](AztecProtocol/aztec-packages@058de1e)) * Goblin Translator flavor and permutation correctness (Goblin Translator part 7) ([#2961](AztecProtocol/aztec-packages#2961)) ([737f17f](AztecProtocol/aztec-packages@737f17f)) * Linking errors ([#3004](AztecProtocol/aztec-packages#3004)) ([388a47b](AztecProtocol/aztec-packages@388a47b)), closes [#2969](AztecProtocol/aztec-packages#2969) ### Bug Fixes * Fix clang-16 check ([#3030](AztecProtocol/aztec-packages#3030)) ([7a5a8b3](AztecProtocol/aztec-packages@7a5a8b3)) * Fix docusaurus yellow paper build ([#3063](AztecProtocol/aztec-packages#3063)) ([db54c1f](AztecProtocol/aztec-packages@db54c1f)) * Run deploy step for mainnet fork ([#3052](AztecProtocol/aztec-packages#3052)) ([9b6be22](AztecProtocol/aztec-packages@9b6be22)) * Try fix publish bb ([#3036](AztecProtocol/aztec-packages#3036)) ([51248b5](AztecProtocol/aztec-packages@51248b5)) * Unboxing - nargo.toml injection of "-" for "_" ([#3018](AztecProtocol/aztec-packages#3018)) ([83d6c51](AztecProtocol/aztec-packages@83d6c51)) ### Miscellaneous * **acir_tests:** Add script to regenerate double_verify_proof inputs ([#3005](AztecProtocol/aztec-packages#3005)) ([9c4eab2](AztecProtocol/aztec-packages@9c4eab2)) * Add portal contract option to deploy subcommand of aztec-cli ([#3032](AztecProtocol/aztec-packages#3032)) ([546b410](AztecProtocol/aztec-packages@546b410)) * Fix `pedersen_compress_with_hash_index` c_bind function ([#3054](AztecProtocol/aztec-packages#3054)) ([a136f6e](AztecProtocol/aztec-packages@a136f6e)) * Msg sender is 0 when no entrypoint is called ([#3024](AztecProtocol/aztec-packages#3024)) ([53c6680](AztecProtocol/aztec-packages@53c6680)), closes [#2949](AztecProtocol/aztec-packages#2949) * Optimize pedersen hash for the common usecase by not allocating when input fits in scratch space ([#3056](AztecProtocol/aztec-packages#3056)) ([a0d290d](AztecProtocol/aztec-packages@a0d290d)) * Proxy redundant `hash` methods ([#3046](AztecProtocol/aztec-packages#3046)) ([df389b5](AztecProtocol/aztec-packages@df389b5)) * Remove "non-core artifact" nargo generated files ([#3026](AztecProtocol/aztec-packages#3026)) ([03ebb8e](AztecProtocol/aztec-packages@03ebb8e)), closes [#2977](AztecProtocol/aztec-packages#2977) * Remove `pedersen_buffer_to_field` from c_bind ([#3045](AztecProtocol/aztec-packages#3045)) ([de7e63b](AztecProtocol/aztec-packages@de7e63b)) * Remove pedersen hash oracle ([#3023](AztecProtocol/aztec-packages#3023)) ([0e6958c](AztecProtocol/aztec-packages@0e6958c)) * Remove plookup pedersen methods from c_bind namespace ([#3033](AztecProtocol/aztec-packages#3033)) ([a8ea391](AztecProtocol/aztec-packages@a8ea391)) * Rename pedersen typescript methods to be called `hash` instead of compress ([#3047](AztecProtocol/aztec-packages#3047)) ([2f7cc5f](AztecProtocol/aztec-packages@2f7cc5f)) * Run check rebuild on boxes ([#3000](AztecProtocol/aztec-packages#3000)) ([c503d91](AztecProtocol/aztec-packages@c503d91)) * Same prettier in boxes and everywhere else ([#3025](AztecProtocol/aztec-packages#3025)) ([0769d20](AztecProtocol/aztec-packages@0769d20)), closes [#2978](AztecProtocol/aztec-packages#2978) </details> <details><summary>barretenberg.js: 0.12.0</summary> ## [0.12.0](AztecProtocol/aztec-packages@barretenberg.js-v0.11.1...barretenberg.js-v0.12.0) (2023-10-26) ### ⚠ BREAKING CHANGES * remove plookup pedersen methods from c_bind namespace ([#3033](AztecProtocol/aztec-packages#3033)) ### Miscellaneous * Proxy redundant `hash` methods ([#3046](AztecProtocol/aztec-packages#3046)) ([df389b5](AztecProtocol/aztec-packages@df389b5)) * Remove `pedersen_buffer_to_field` from c_bind ([#3045](AztecProtocol/aztec-packages#3045)) ([de7e63b](AztecProtocol/aztec-packages@de7e63b)) * Remove plookup pedersen methods from c_bind namespace ([#3033](AztecProtocol/aztec-packages#3033)) ([a8ea391](AztecProtocol/aztec-packages@a8ea391)) * Rename pedersen typescript methods to be called `hash` instead of compress ([#3047](AztecProtocol/aztec-packages#3047)) ([2f7cc5f](AztecProtocol/aztec-packages@2f7cc5f)) </details> <details><summary>barretenberg: 0.12.0</summary> ## [0.12.0](AztecProtocol/aztec-packages@barretenberg-v0.11.1...barretenberg-v0.12.0) (2023-10-26) ### ⚠ BREAKING CHANGES * remove plookup pedersen methods from c_bind namespace ([#3033](AztecProtocol/aztec-packages#3033)) ### Features * Added correctness tests for several small relations in Goblin Translator (Goblin Translator part 8) ([#2963](AztecProtocol/aztec-packages#2963)) ([4c83250](AztecProtocol/aztec-packages@4c83250)) * Correctness tests for decomposition and non-native field relations (Goblin Translator Part 9) ([#2981](AztecProtocol/aztec-packages#2981)) ([cdc830d](AztecProtocol/aztec-packages@cdc830d)) * Enable sol verifier tests in ci ([#2997](AztecProtocol/aztec-packages#2997)) ([058de1e](AztecProtocol/aztec-packages@058de1e)) * Goblin Translator flavor and permutation correctness (Goblin Translator part 7) ([#2961](AztecProtocol/aztec-packages#2961)) ([737f17f](AztecProtocol/aztec-packages@737f17f)) ### Bug Fixes * Fix clang-16 check ([#3030](AztecProtocol/aztec-packages#3030)) ([7a5a8b3](AztecProtocol/aztec-packages@7a5a8b3)) ### Miscellaneous * **acir_tests:** Add script to regenerate double_verify_proof inputs ([#3005](AztecProtocol/aztec-packages#3005)) ([9c4eab2](AztecProtocol/aztec-packages@9c4eab2)) * Fix `pedersen_compress_with_hash_index` c_bind function ([#3054](AztecProtocol/aztec-packages#3054)) ([a136f6e](AztecProtocol/aztec-packages@a136f6e)) * Proxy redundant `hash` methods ([#3046](AztecProtocol/aztec-packages#3046)) ([df389b5](AztecProtocol/aztec-packages@df389b5)) * Remove `pedersen_buffer_to_field` from c_bind ([#3045](AztecProtocol/aztec-packages#3045)) ([de7e63b](AztecProtocol/aztec-packages@de7e63b)) * Remove pedersen hash oracle ([#3023](AztecProtocol/aztec-packages#3023)) ([0e6958c](AztecProtocol/aztec-packages@0e6958c)) * Remove plookup pedersen methods from c_bind namespace ([#3033](AztecProtocol/aztec-packages#3033)) ([a8ea391](AztecProtocol/aztec-packages@a8ea391)) </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:
Checklist:
Remove the checklist to signal you've completed it. Enable auto-merge if the PR is ready to merge.