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

Noir-friendly UltraPlonk changes #113

Merged

Conversation

zac-williamson
Copy link
Contributor

Description

Several changes to UltraPlonk to make proofs more amenable to be verified by a smart contract.

Linearisation trick has been removed from base UltraPlonk. Adds unnecessary complexity
TurboPlonk fixed-base Pedersen gate has been removed from UltraPlonk. We only added it for backwards-compatibility with TurboPlonk in case we upgraded Aztec Connect to UP. Given that is redundant, the gate adds unnecessary complexity. Ideally we move forward by standardising on the (much simpler) UltraPlonk Pedersen hash
UltraPlonk uses plookup Pedersen by default, but remains backwards-compatible with TurboPlonk Pedersen hash by using StandardComposer's fallback methods for create_fixed_group_add_gate, create_fixed_group_add_gate_init, create_fixed_group_add_gate_final. These methods have been moved out of StandardComposer and into a stdlib::pedersen_gates class to prevent code duplication.
Copied @dbanks12 barretenberg CMake changes from PR #56 (to more easily build key/proof generation scripts in aztec-verifier-contract-tests)
Added code to generate UltraPlonk verification keys

Checklist:

  • I have reviewed my diff in github, line by line.
  • Every change is related to the PR description.
  • I have linked this pull request to the issue(s) that it resolves.
  • There are no unexpected formatting changes, superfluous debug logs, or commented-out code.
  • There are no circuit changes, OR specifications in /markdown/specs have been updated.
  • There are no circuit changes, OR a cryptographer has been assigned for review.
  • I've updated any terraform that needs updating (e.g. environment variables) for deployment.
  • The branch has been rebased against the head of its merge target.
  • I'm happy for the PR to be merged at the reviewer's next convenience.
  • New functions, classes, etc. have been documented according to the doxygen comment format. Classes and structs must have @brief describing the intended functionality.
  • If existing code has been modified, such documentation has been added or updated.

…fied by a smart contract.

Linearisation trick has been removed from base UltraPlonk. Adds unnecessary complexity
TurboPlonk fixed-base Pedersen gate has been removed from UltraPlonk. We only added it for backwards-compatibility with TurboPlonk in case we upgraded Aztec Connect to UP. Given that is redundant, the gate adds unnecessary complexity. Ideally we move forward by standardising on the (much simpler) UltraPlonk Pedersen hash
UltraPlonk uses plookup Pedersen by default, but remains backwards-compatible with TurboPlonk Pedersen hash by using StandardComposer's fallback methods for create_fixed_group_add_gate, create_fixed_group_add_gate_init, create_fixed_group_add_gate_final. These methods have been moved out of StandardComposer and into a stdlib::pedersen_gates class to prevent code duplication.
Copied @dbanks12 barretenberg CMake changes from PR [REPLACED] Move README.md into cpp and add a simple top-level one #56 (to more easily build key/proof generation scripts in aztec-verifier-contract-tests)
Added code to generate UltraPlonk verification keys
removed unused `generalized_permutation_verifier_settings`
/**
* @brief Create a unrolled manifest object
*
* @note UP rolled/unrolled manifests are the same. Difference between regulur && unrolled Prover/Verifier is that
Copy link
Contributor

Choose a reason for hiding this comment

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

regulur -> regular

@codygunton codygunton changed the base branch from zw/stdlib-dynamic-array-updated to master March 7, 2023 14:33
@codygunton codygunton changed the base branch from master to zw/stdlib-dynamic-array-updated March 7, 2023 14:34
@Rumata888 Rumata888 merged commit 1acfb2c into zw/stdlib-dynamic-array-updated Mar 8, 2023
@Rumata888 Rumata888 deleted the zw/ultra-changes-for-noir-updated branch March 8, 2023 18:31
Rumata888 pushed a commit that referenced this pull request Mar 18, 2023
* Several changes to UltraPlonk to make proofs more amenable to be verified by a smart contract.

Linearisation trick has been removed from base UltraPlonk. Adds unnecessary complexity
TurboPlonk fixed-base Pedersen gate has been removed from UltraPlonk. We only added it for backwards-compatibility with TurboPlonk in case we upgraded Aztec Connect to UP. Given that is redundant, the gate adds unnecessary complexity. Ideally we move forward by standardising on the (much simpler) UltraPlonk Pedersen hash
UltraPlonk uses plookup Pedersen by default, but remains backwards-compatible with TurboPlonk Pedersen hash by using StandardComposer's fallback methods for create_fixed_group_add_gate, create_fixed_group_add_gate_init, create_fixed_group_add_gate_final. These methods have been moved out of StandardComposer and into a stdlib::pedersen_gates class to prevent code duplication.
Copied @dbanks12 barretenberg CMake changes from PR [REPLACED] Move README.md into cpp and add a simple top-level one #56 (to more easily build key/proof generation scripts in aztec-verifier-contract-tests)
Added code to generate UltraPlonk verification keys

* bonk

* removed composer tests that use now-deleted fixed_group gates for standard composer

* fixed wasm build error

* fixed ultra recursive verifier to not use fixed base widget.

removed unused `generalized_permutation_verifier_settings`
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.

2 participants