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: recursive verifier for decider and last folding proof #9626

Merged
merged 16 commits into from
Nov 5, 2024

Conversation

maramihali
Copy link
Contributor

@maramihali maramihali commented Oct 31, 2024

Construct the hiding circuit, which recursively verifies the last folding proof and the decider proof in Client IVC and amend the e2e prover accordingly. The ClientIVC proof becomes a mega proof for the hiding circuit and a goblin proof which simplifies the work required to transform this in a zero knowledge proof.

// these public inputs by turning proof into witnesses and calling set_public on each witness
auto num_public_inputs = static_cast<uint32_t>(static_cast<uint256_t>(proof.mega_proof[1]));
vinfo("Number of public inputs BEFORE subtracting stuff in mega proof: ", num_public_inputs);
num_public_inputs -= bb::AGGREGATION_OBJECT_SIZE; // don't add the agg object
Copy link
Contributor Author

@maramihali maramihali Nov 4, 2024

Choose a reason for hiding this comment

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

My understanding is that, at least atm, there are no DATABUS commitments anymore at this stage

@maramihali maramihali self-assigned this Nov 4, 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.

Looks great, just a couple of minor things. Love how this is actually seems to be a nice simplification

@maramihali maramihali enabled auto-merge (squash) November 5, 2024 16:52
@maramihali maramihali merged commit d7ee6e5 into master Nov 5, 2024
68 checks passed
@maramihali maramihali deleted the mm/hiding-circuit branch November 5, 2024 17:46
Maddiaa0 pushed a commit that referenced this pull request Nov 6, 2024
Construct the _hiding_ circuit, which recursively verifies the last
folding proof and the decider proof in Client IVC and amend the e2e
prover accordingly. The ClientIVC proof becomes a mega proof for the
hiding circuit and a goblin proof which simplifies the work required to
transform this in a zero knowledge proof.
@arielgabizon
Copy link
Contributor

There might be a need to add some kernel-circuit specific stuff. E.g. to check the final stack (inside the public input of the last kernel circuit instance) is empy as done in the seal circuit here:
https://hackmd.io/h0yTcOHiQWeeTXnxTQhTNQ?view#Completing-the-IVC-Seal-Circuit

@maramihali
Copy link
Contributor Author

Thanks, created an issue for this! AztecProtocol/barretenberg#1156

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.

3 participants