-
Notifications
You must be signed in to change notification settings - Fork 108
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
Milestone
Comments
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.
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
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.
The text was updated successfully, but these errors were encountered: