Skip to content

Noir-friendly UltraPlonk changes#107

Closed
zac-williamson wants to merge 7 commits intozw/stdlib-dynamic-arrayfrom
zw/ultra-changes-for-noir
Closed

Noir-friendly UltraPlonk changes#107
zac-williamson wants to merge 7 commits intozw/stdlib-dynamic-arrayfrom
zw/ultra-changes-for-noir

Conversation

@zac-williamson
Copy link
Copy Markdown

Description

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

  1. Linearisation trick has been removed from base UltraPlonk. Adds unnecessary complexity
  2. 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
  3. 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.
  4. 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)
  5. 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.

(compiles all of bberg into a single library)
…lgorithms

reverted UltraPlonk to use plookup pedersen hash by default

removed Q_FIXED_BASE selector from UltraPlonk

(we added the TurboPlonk pedersen hash gate to UP for backwards-compatibility support in case we upgraded Aztec Connect to use UltraPlonk. As this is no longer a priority we can remove it and simplify the UP Prover/Verifier algorithms)
…rary via pedersen_gates.hpp

This allows us to use the 'generic' implementation of the TurboPlonk pedersen hash for multiple proof systems, not just StandardPlonk.

UltraPlonk now defaults to the fallback constraints in pedersen_gates.hpp when a TurboPlonk-style Pedersen hash is required.
@ludamad ludamad deleted the zw/ultra-changes-for-noir branch February 20, 2026 00:02
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.

1 participant