feat: Use full IPA recursive verifier in root rollup#10962
feat: Use full IPA recursive verifier in root rollup#10962lucasxia01 merged 5 commits intomasterfrom
Conversation
| // final recursion output. | ||
| builder.add_pairing_point_accumulator(current_aggregation_object); | ||
| } | ||
| // TODO(https://github.com/AztecProtocol/barretenberg/issues/1183): This assertion should be true, except for |
There was a problem hiding this comment.
honk_recursion is 2 for the tube, base, merge, block root, block merge circuits, but NOT the root rollup.
This assert previously wasn't true because the root rollup wasn't running the full verifier and therefore still spit out an ipa claim and proof, but now that it does run full verification, it will output nothing.
| size_t idx = 0; | ||
| std::vector<OpeningClaim<stdlib::grumpkin<Builder>>> nested_ipa_claims; | ||
| std::vector<StdlibProof<Builder>> nested_ipa_proofs; | ||
| bool is_root_rollup = false; |
There was a problem hiding this comment.
this bool checks to see if any of the honk recursion constraints set the proof type to be ROOT ROLLUP HONK and that's how we know whether to run the full IPA recursive verifier or not.
| gate_counter.track_diff(constraint_system.gates_per_opcode, | ||
| constraint_system.original_opcode_indices.honk_recursion_constraints.at(idx++)); | ||
| } | ||
| ASSERT(!(is_root_rollup && nested_ipa_claims.size() != 2) && "Root rollup must accumulate two IPA proofs."); |
There was a problem hiding this comment.
just checking to make sure that if its the root rollup, we have 2 nested IPA claims to accumulate
| // do full IPA verification | ||
| auto accumulated_ipa_transcript = | ||
| std::make_shared<StdlibTranscript>(convert_native_proof_to_stdlib(&builder, ipa_proof)); | ||
| IPA<stdlib::grumpkin<Builder>>::full_verify_recursive( |
There was a problem hiding this comment.
if root rollup, run full IPA recursive verifier, otherwise return the ipa claim and proof as output
| // away once all noir programs (e.g. protocol circuits) are updated to use the new pattern. | ||
| if (proof_type_in != HONK && proof_type_in != AVM && proof_type_in != ROLLUP_HONK && | ||
| proof_type_in != ROLLUP_ROOT_HONK) { | ||
| proof_type_in != ROOT_ROLLUP_HONK) { |
| impl Verifiable for PreviousRollupBlockData { | ||
| fn verify(self) { | ||
| impl PreviousRollupBlockData { | ||
| fn verify(self, proof_type_id: u32) { |
There was a problem hiding this comment.
adding an extra argument because this function is shared between the root rollup and the block merge
| self.previous_rollup_data[0].validate_in_vk_tree(ALLOWED_PREVIOUS_CIRCUITS); | ||
|
|
||
| self.previous_rollup_data[1].verify(); | ||
| self.previous_rollup_data[1].verify(PROOF_TYPE_ROOT_ROLLUP_HONK); |
There was a problem hiding this comment.
core change: this is the ROOT_ROLLUP_HONK type
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.69.0</summary> ## [0.69.0](aztec-package-v0.68.2...aztec-package-v0.69.0) (2025-01-03) ### Miscellaneous * Add version number when starting sandbox ([#10935](#10935)) ([c8dcd8f](c8dcd8f)) * Cl/ci3.2 ([#10919](#10919)) ([49dacc3](49dacc3)) </details> <details><summary>barretenberg.js: 0.69.0</summary> ## [0.69.0](barretenberg.js-v0.68.2...barretenberg.js-v0.69.0) (2025-01-03) ### Miscellaneous * Cl/ci3.2 ([#10919](#10919)) ([49dacc3](49dacc3)) </details> <details><summary>aztec-packages: 0.69.0</summary> ## [0.69.0](aztec-packages-v0.68.2...aztec-packages-v0.69.0) (2025-01-03) ### ⚠ BREAKING CHANGES * Switch to using `jsonrpsee` for foreign calls; refactor `run_test`; foreign call layering (noir-lang/noir#6849) ### Features * **docs:** Algolia -> typesense ([#9698](#9698)) ([e082063](e082063)) * Encapsulated UltraHonk Vanilla IVC ([#10900](#10900)) ([fd5f611](fd5f611)) * **LSP:** Suggest trait methods from where clauses (noir-lang/noir#6915) ([dc12c2b](dc12c2b)) * **ssa:** Hoist add and mul binary ops using known induction variables (noir-lang/noir#6910) ([dc12c2b](dc12c2b)) * Switch to using `jsonrpsee` for foreign calls; refactor `run_test`; foreign call layering (noir-lang/noir#6849) ([dc12c2b](dc12c2b)) * Use full IPA recursive verifier in root rollup ([#10962](#10962)) ([37095ce](37095ce)) * Warn on trait method visibility (noir-lang/noir#6923) ([dc12c2b](dc12c2b)) ### Bug Fixes * Bigint builtins are foreigns (noir-lang/noir#6892) ([2d3805a](2d3805a)) * **ci:** Acir bench ([#11021](#11021)) ([9eaa109](9eaa109)) * Consistent file_id across installation paths (noir-lang/noir#6912) ([2d3805a](2d3805a)) * Remove unnecessary cast in bit-shift (noir-lang/noir#6890) ([2d3805a](2d3805a)) * Revert "feat(docs): algolia -> typesense" also fix boxes-test ([#11016](#11016)) ([a1a4d76](a1a4d76)) * Small fixes for sepolia deployments ([#10915](#10915)) ([37d69bf](37d69bf)) * Update prompted foundry install command ([#10995](#10995)) ([cd59f2e](cd59f2e)) * Use explicit read transactions ([#10911](#10911)) ([2a8e01c](2a8e01c)) ### Miscellaneous * Add `Instruction::Noop` (noir-lang/noir#6899) ([2d3805a](2d3805a)) * Add `rollup_root` and `rollup_block_merge` to tracked protocol circuits (noir-lang/noir#6903) ([2d3805a](2d3805a)) * Add if/loop tip (separate from no-predicate [#5657](#5657)) (noir-lang/noir#6806) ([dc12c2b](dc12c2b)) * Add rollup circuits to memory reports (noir-lang/noir#6897) ([dc12c2b](dc12c2b)) * Add spypsy to nightly canary ([#10961](#10961)) ([4dca8f5](4dca8f5)) * Add version number when starting sandbox ([#10935](#10935)) ([c8dcd8f](c8dcd8f)) * Bump rc1 tps ([#11012](#11012)) ([52176f7](52176f7)) * **ci:** Memory reports for execution (noir-lang/noir#6907) ([dc12c2b](dc12c2b)) * Cl/ci3.2 ([#10919](#10919)) ([49dacc3](49dacc3)) * Clean up translator circuit builder function definitions ([#10944](#10944)) ([f6fef05](f6fef05)) * Disable broken honk test ([#11010](#11010)) ([8ad239a](8ad239a)) * Disable tt test ([#10999](#10999)) ([d9d64c3](d9d64c3)) * Document format strings (noir-lang/noir#6920) ([dc12c2b](dc12c2b)) * Fix flake in e2e-block-build ([#11002](#11002)) ([2a2932e](2a2932e)) * Fix mac build ([#10963](#10963)) ([158afc4](158afc4)) * Fix warning (noir-lang/noir#6927) ([dc12c2b](dc12c2b)) * Fix warnings in avm transpiler ([#11001](#11001)) ([07c5b7f](07c5b7f)) * Move implementation of print foreign call into `nargo` (noir-lang/noir#6865) ([dc12c2b](dc12c2b)) * Prover.tomls fix ([#11011](#11011)) ([565a67b](565a67b)) * Redo typo PR by Anon-im ([#11009](#11009)) ([2044c58](2044c58)) * Redo typo PR by Hack666r ([#10992](#10992)) ([018f11e](018f11e)) * Redo typo PR by MonkeyKing44 ([#10996](#10996)) ([faca458](faca458)) * Redo typo PR by panditdhamdhere ([#11026](#11026)) ([8a6de5b](8a6de5b)) * Redo typo PR by petryshkaCODE ([#10993](#10993)) ([0c6a4be](0c6a4be)) * Redo typo PR by VitalikBerashvili ([#10994](#10994)) ([da36da4](da36da4)) * Redo typo PR by whitetechna ([#10997](#10997)) ([89a2bd7](89a2bd7)) * Release Noir(1.0.0-beta.1) (noir-lang/noir#6622) ([2d3805a](2d3805a)) * Remove unused dependency (noir-lang/noir#6922) ([dc12c2b](dc12c2b)) * Replace relative paths to noir-protocol-circuits ([6b34449](6b34449)) * Replace relative paths to noir-protocol-circuits ([11f8a42](11f8a42)) * Use ssa parser in flattening pass tests (noir-lang/noir#6868) ([dc12c2b](dc12c2b)) ### Documentation * Remove links to (outdated) protocol specs ([#10831](#10831)) ([4874d95](4874d95)) </details> <details><summary>barretenberg: 0.69.0</summary> ## [0.69.0](barretenberg-v0.68.2...barretenberg-v0.69.0) (2025-01-03) ### Features * Encapsulated UltraHonk Vanilla IVC ([#10900](#10900)) ([fd5f611](fd5f611)) * Use full IPA recursive verifier in root rollup ([#10962](#10962)) ([37095ce](37095ce)) ### Bug Fixes * Bigint builtins are foreigns (noir-lang/noir#6892) ([2d3805a](2d3805a)) * **ci:** Acir bench ([#11021](#11021)) ([9eaa109](9eaa109)) * Consistent file_id across installation paths (noir-lang/noir#6912) ([2d3805a](2d3805a)) * Remove unnecessary cast in bit-shift (noir-lang/noir#6890) ([2d3805a](2d3805a)) ### Miscellaneous * Add `Instruction::Noop` (noir-lang/noir#6899) ([2d3805a](2d3805a)) * Add `rollup_root` and `rollup_block_merge` to tracked protocol circuits (noir-lang/noir#6903) ([2d3805a](2d3805a)) * Cl/ci3.2 ([#10919](#10919)) ([49dacc3](49dacc3)) * Clean up translator circuit builder function definitions ([#10944](#10944)) ([f6fef05](f6fef05)) * Disable broken honk test ([#11010](#11010)) ([8ad239a](8ad239a)) * Fix mac build ([#10963](#10963)) ([158afc4](158afc4)) * Redo typo PR by Anon-im ([#11009](#11009)) ([2044c58](2044c58)) * Redo typo PR by Hack666r ([#10992](#10992)) ([018f11e](018f11e)) * Redo typo PR by MonkeyKing44 ([#10996](#10996)) ([faca458](faca458)) * Redo typo PR by petryshkaCODE ([#10993](#10993)) ([0c6a4be](0c6a4be)) * Redo typo PR by VitalikBerashvili ([#10994](#10994)) ([da36da4](da36da4)) * Release Noir(1.0.0-beta.1) (noir-lang/noir#6622) ([2d3805a](2d3805a)) </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-package: 0.69.0</summary> ## [0.69.0](AztecProtocol/aztec-packages@aztec-package-v0.68.2...aztec-package-v0.69.0) (2025-01-03) ### Miscellaneous * Add version number when starting sandbox ([#10935](AztecProtocol/aztec-packages#10935)) ([c8dcd8f](AztecProtocol/aztec-packages@c8dcd8f)) * Cl/ci3.2 ([#10919](AztecProtocol/aztec-packages#10919)) ([49dacc3](AztecProtocol/aztec-packages@49dacc3)) </details> <details><summary>barretenberg.js: 0.69.0</summary> ## [0.69.0](AztecProtocol/aztec-packages@barretenberg.js-v0.68.2...barretenberg.js-v0.69.0) (2025-01-03) ### Miscellaneous * Cl/ci3.2 ([#10919](AztecProtocol/aztec-packages#10919)) ([49dacc3](AztecProtocol/aztec-packages@49dacc3)) </details> <details><summary>aztec-packages: 0.69.0</summary> ## [0.69.0](AztecProtocol/aztec-packages@aztec-packages-v0.68.2...aztec-packages-v0.69.0) (2025-01-03) ### ⚠ BREAKING CHANGES * Switch to using `jsonrpsee` for foreign calls; refactor `run_test`; foreign call layering (noir-lang/noir#6849) ### Features * **docs:** Algolia -> typesense ([#9698](AztecProtocol/aztec-packages#9698)) ([e082063](AztecProtocol/aztec-packages@e082063)) * Encapsulated UltraHonk Vanilla IVC ([#10900](AztecProtocol/aztec-packages#10900)) ([fd5f611](AztecProtocol/aztec-packages@fd5f611)) * **LSP:** Suggest trait methods from where clauses (noir-lang/noir#6915) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * **ssa:** Hoist add and mul binary ops using known induction variables (noir-lang/noir#6910) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Switch to using `jsonrpsee` for foreign calls; refactor `run_test`; foreign call layering (noir-lang/noir#6849) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Use full IPA recursive verifier in root rollup ([#10962](AztecProtocol/aztec-packages#10962)) ([37095ce](AztecProtocol/aztec-packages@37095ce)) * Warn on trait method visibility (noir-lang/noir#6923) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) ### Bug Fixes * Bigint builtins are foreigns (noir-lang/noir#6892) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * **ci:** Acir bench ([#11021](AztecProtocol/aztec-packages#11021)) ([9eaa109](AztecProtocol/aztec-packages@9eaa109)) * Consistent file_id across installation paths (noir-lang/noir#6912) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * Remove unnecessary cast in bit-shift (noir-lang/noir#6890) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * Revert "feat(docs): algolia -> typesense" also fix boxes-test ([#11016](AztecProtocol/aztec-packages#11016)) ([a1a4d76](AztecProtocol/aztec-packages@a1a4d76)) * Small fixes for sepolia deployments ([#10915](AztecProtocol/aztec-packages#10915)) ([37d69bf](AztecProtocol/aztec-packages@37d69bf)) * Update prompted foundry install command ([#10995](AztecProtocol/aztec-packages#10995)) ([cd59f2e](AztecProtocol/aztec-packages@cd59f2e)) * Use explicit read transactions ([#10911](AztecProtocol/aztec-packages#10911)) ([2a8e01c](AztecProtocol/aztec-packages@2a8e01c)) ### Miscellaneous * Add `Instruction::Noop` (noir-lang/noir#6899) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * Add `rollup_root` and `rollup_block_merge` to tracked protocol circuits (noir-lang/noir#6903) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * Add if/loop tip (separate from no-predicate [#5657](AztecProtocol/aztec-packages#5657)) (noir-lang/noir#6806) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Add rollup circuits to memory reports (noir-lang/noir#6897) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Add spypsy to nightly canary ([#10961](AztecProtocol/aztec-packages#10961)) ([4dca8f5](AztecProtocol/aztec-packages@4dca8f5)) * Add version number when starting sandbox ([#10935](AztecProtocol/aztec-packages#10935)) ([c8dcd8f](AztecProtocol/aztec-packages@c8dcd8f)) * Bump rc1 tps ([#11012](AztecProtocol/aztec-packages#11012)) ([52176f7](AztecProtocol/aztec-packages@52176f7)) * **ci:** Memory reports for execution (noir-lang/noir#6907) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Cl/ci3.2 ([#10919](AztecProtocol/aztec-packages#10919)) ([49dacc3](AztecProtocol/aztec-packages@49dacc3)) * Clean up translator circuit builder function definitions ([#10944](AztecProtocol/aztec-packages#10944)) ([f6fef05](AztecProtocol/aztec-packages@f6fef05)) * Disable broken honk test ([#11010](AztecProtocol/aztec-packages#11010)) ([8ad239a](AztecProtocol/aztec-packages@8ad239a)) * Disable tt test ([#10999](AztecProtocol/aztec-packages#10999)) ([d9d64c3](AztecProtocol/aztec-packages@d9d64c3)) * Document format strings (noir-lang/noir#6920) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Fix flake in e2e-block-build ([#11002](AztecProtocol/aztec-packages#11002)) ([2a2932e](AztecProtocol/aztec-packages@2a2932e)) * Fix mac build ([#10963](AztecProtocol/aztec-packages#10963)) ([158afc4](AztecProtocol/aztec-packages@158afc4)) * Fix warning (noir-lang/noir#6927) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Fix warnings in avm transpiler ([#11001](AztecProtocol/aztec-packages#11001)) ([07c5b7f](AztecProtocol/aztec-packages@07c5b7f)) * Move implementation of print foreign call into `nargo` (noir-lang/noir#6865) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Prover.tomls fix ([#11011](AztecProtocol/aztec-packages#11011)) ([565a67b](AztecProtocol/aztec-packages@565a67b)) * Redo typo PR by Anon-im ([#11009](AztecProtocol/aztec-packages#11009)) ([2044c58](AztecProtocol/aztec-packages@2044c58)) * Redo typo PR by Hack666r ([#10992](AztecProtocol/aztec-packages#10992)) ([018f11e](AztecProtocol/aztec-packages@018f11e)) * Redo typo PR by MonkeyKing44 ([#10996](AztecProtocol/aztec-packages#10996)) ([faca458](AztecProtocol/aztec-packages@faca458)) * Redo typo PR by panditdhamdhere ([#11026](AztecProtocol/aztec-packages#11026)) ([8a6de5b](AztecProtocol/aztec-packages@8a6de5b)) * Redo typo PR by petryshkaCODE ([#10993](AztecProtocol/aztec-packages#10993)) ([0c6a4be](AztecProtocol/aztec-packages@0c6a4be)) * Redo typo PR by VitalikBerashvili ([#10994](AztecProtocol/aztec-packages#10994)) ([da36da4](AztecProtocol/aztec-packages@da36da4)) * Redo typo PR by whitetechna ([#10997](AztecProtocol/aztec-packages#10997)) ([89a2bd7](AztecProtocol/aztec-packages@89a2bd7)) * Release Noir(1.0.0-beta.1) (noir-lang/noir#6622) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * Remove unused dependency (noir-lang/noir#6922) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) * Replace relative paths to noir-protocol-circuits ([6b34449](AztecProtocol/aztec-packages@6b34449)) * Replace relative paths to noir-protocol-circuits ([11f8a42](AztecProtocol/aztec-packages@11f8a42)) * Use ssa parser in flattening pass tests (noir-lang/noir#6868) ([dc12c2b](AztecProtocol/aztec-packages@dc12c2b)) ### Documentation * Remove links to (outdated) protocol specs ([#10831](AztecProtocol/aztec-packages#10831)) ([4874d95](AztecProtocol/aztec-packages@4874d95)) </details> <details><summary>barretenberg: 0.69.0</summary> ## [0.69.0](AztecProtocol/aztec-packages@barretenberg-v0.68.2...barretenberg-v0.69.0) (2025-01-03) ### Features * Encapsulated UltraHonk Vanilla IVC ([#10900](AztecProtocol/aztec-packages#10900)) ([fd5f611](AztecProtocol/aztec-packages@fd5f611)) * Use full IPA recursive verifier in root rollup ([#10962](AztecProtocol/aztec-packages#10962)) ([37095ce](AztecProtocol/aztec-packages@37095ce)) ### Bug Fixes * Bigint builtins are foreigns (noir-lang/noir#6892) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * **ci:** Acir bench ([#11021](AztecProtocol/aztec-packages#11021)) ([9eaa109](AztecProtocol/aztec-packages@9eaa109)) * Consistent file_id across installation paths (noir-lang/noir#6912) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * Remove unnecessary cast in bit-shift (noir-lang/noir#6890) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) ### Miscellaneous * Add `Instruction::Noop` (noir-lang/noir#6899) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * Add `rollup_root` and `rollup_block_merge` to tracked protocol circuits (noir-lang/noir#6903) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) * Cl/ci3.2 ([#10919](AztecProtocol/aztec-packages#10919)) ([49dacc3](AztecProtocol/aztec-packages@49dacc3)) * Clean up translator circuit builder function definitions ([#10944](AztecProtocol/aztec-packages#10944)) ([f6fef05](AztecProtocol/aztec-packages@f6fef05)) * Disable broken honk test ([#11010](AztecProtocol/aztec-packages#11010)) ([8ad239a](AztecProtocol/aztec-packages@8ad239a)) * Fix mac build ([#10963](AztecProtocol/aztec-packages#10963)) ([158afc4](AztecProtocol/aztec-packages@158afc4)) * Redo typo PR by Anon-im ([#11009](AztecProtocol/aztec-packages#11009)) ([2044c58](AztecProtocol/aztec-packages@2044c58)) * Redo typo PR by Hack666r ([#10992](AztecProtocol/aztec-packages#10992)) ([018f11e](AztecProtocol/aztec-packages@018f11e)) * Redo typo PR by MonkeyKing44 ([#10996](AztecProtocol/aztec-packages#10996)) ([faca458](AztecProtocol/aztec-packages@faca458)) * Redo typo PR by petryshkaCODE ([#10993](AztecProtocol/aztec-packages#10993)) ([0c6a4be](AztecProtocol/aztec-packages@0c6a4be)) * Redo typo PR by VitalikBerashvili ([#10994](AztecProtocol/aztec-packages#10994)) ([da36da4](AztecProtocol/aztec-packages@da36da4)) * Release Noir(1.0.0-beta.1) (noir-lang/noir#6622) ([2d3805a](AztecProtocol/aztec-packages@2d3805a)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Modifies the root rollup circuit to use different recursion proof type, ROOT_ROLLUP_HONK and processing of honk_recursion_constraints, so the backend knows to run the full IPA recursive verifier.
Resolves AztecProtocol/barretenberg#1183.