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

Handle the aggregation object in ultra_recursive_verifier #1059

Closed
lucasxia01 opened this issue Jul 23, 2024 · 0 comments · Fixed by AztecProtocol/aztec-packages#7582
Closed
Assignees

Comments

@lucasxia01
Copy link
Contributor

Currently, we've only supported aggregation objects through acir_format, which means that ultra circuits written through barretenberg don't handle aggregation objects by default. We need to update the ultra recursive verifier interface so that it can take in an input aggregation object and aggregate with it.

@lucasxia01 lucasxia01 self-assigned this Jul 23, 2024
lucasxia01 added a commit to AztecProtocol/aztec-packages that referenced this issue Jul 29, 2024
…6770)

A step towards addressing (recursive aggregation)
AztecProtocol/barretenberg#1059 and
AztecProtocol/barretenberg#934.

Adds the boolean flag contains_recursive_proof and the vector of indices
recursive_proof_public_input_indices to the proving and (native and
recursive) verification keys. This is setting up aggregation in the
native/recursive verifier that we need for the base rollup and the
solidity verifier.

Also refactors the type of recursive_proof_public_input_indices and
other aggregation objects to be an array instead of a vector.
AztecBot pushed a commit that referenced this issue Jul 30, 2024
…#6770)

A step towards addressing (recursive aggregation)
#1059 and
#934.

Adds the boolean flag contains_recursive_proof and the vector of indices
recursive_proof_public_input_indices to the proving and (native and
recursive) verification keys. This is setting up aggregation in the
native/recursive verifier that we need for the base rollup and the
solidity verifier.

Also refactors the type of recursive_proof_public_input_indices and
other aggregation objects to be an array instead of a vector.
@lucasxia01 lucasxia01 added this to the Honk-Noir integration milestone Aug 2, 2024
AztecBot pushed a commit that referenced this issue Aug 14, 2024
Resolves #1059.

This work updates the recursive verifier to now take in an pairing
aggregation object and also produce one. This object aggregates with the
nested aggregation object (parsed through the public inputs of the inner
proof) and the pairing points produced by KZG. This change is
**inefficient** as every circuit will now also produce an aggregation
object, regardless of whether the circuit does any recursive
aggregation. This adds gates presumably through only the
public_input_delta, but this needs to be double checked.
This also means that for circuits that do k recursive aggregations, we
will be doing 2*k biggroup mul-adds for aggregation, because every inner
proof contains an agg obj. Each mul-add was seemingly costing 130k
gates, so this likely needs to be optimized heavily.

Note that the native honk verifier was **not** updated in this PR. This
will be updated in a future PR, and will likely force many tests (any
test that has a native verify call) to call
`builder.add_recursive_proof(default_agg_obj)`.
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 a pull request may close this issue.

1 participant