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

feat: Encapsulated UltraHonk Vanilla IVC #10900

Merged
merged 10 commits into from
Jan 2, 2025
Merged

feat: Encapsulated UltraHonk Vanilla IVC #10900

merged 10 commits into from
Jan 2, 2025

Conversation

codygunton
Copy link
Contributor

This adds a class that does IVC proving via recursion for the UltraHonk proof system.

@codygunton codygunton self-assigned this Dec 19, 2024
Copy link
Contributor

@ledwards2225 ledwards2225 left a comment

Choose a reason for hiding this comment

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

Seems fine, just a few questions/comments. I'm still skeptical that something like this is useful since it doesn't seem like there's a way for an external verifier to know about the verifiers being appended in the backend but maybe there's some way to make it work. If there is some way to make it work then it seems we should be able to do the same for Aztec..

* between circuits. Generates arbitrary return data for each app/kernel. Sets the kernel calldata and
* secondary_calldata based respectively on the previous kernel return data and app return data.
*/
class MockDatabusProducer {
Copy link
Contributor

Choose a reason for hiding this comment

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

This is just copied from its other location yeah? maybe you meant to do something with it but for now it should just be deleted?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks, deleted


HonkProof UltraVanillaClientIVC::prove(CircuitSource<Flavor>& source, const bool cache_vks)
{
for (size_t step = 0; step < source.num_circuits(); step++) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this CircuitSource interface meant only for testing or are you imagining that you'd have some version of the class that would be loaded up with acir bytecode in actual usage?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah I think this is an interface that also works for processing ACIR one bytecode/partial witness pair at a time (for memory efficiency).

@codygunton codygunton merged commit fd5f611 into master Jan 2, 2025
22 checks passed
@codygunton codygunton deleted the cg/ivcu branch January 2, 2025 15:11
TomAFrench pushed a commit that referenced this pull request Jan 3, 2025
🤖 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 -&gt; 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 -&gt; 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).
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Jan 4, 2025
🤖 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 -&gt; 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 -&gt; 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).
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