-
Notifications
You must be signed in to change notification settings - Fork 322
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: enable honk_recursion through acir #6719
Conversation
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Proof generationEach column represents the number of threads used in proof generation.
L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.
Stats on running time collected for app circuits
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction size based on fee payment method | Metric | | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's just make an issue for having a better strategy to distinguish between recursive verifiers now that we have proofs of varying size. We will need some kind of circuit constant as it needs to be part of the circuit definition. We could probably add some constant recursion separator to the recursive aggregation opcode.
…t instead of a plonk one
…tocol/aztec-packages into lx/enabling-honk-recursion-acir
…tocol/aztec-packages into lx/enabling-honk-recursion-acir
# Construct and verify a MegaHonk proof for a single arbitrary program | ||
RUN FLOW=prove_and_verify_mega_honk ./run_acir_tests.sh 6_array | ||
# Construct and verify a UltraHonk proof for all ACIR programs using the new witness stack workflow | ||
RUN FLOW=prove_and_verify_ultra_honk_program ./run_acir_tests.sh | ||
# Construct and verify a MegaHonk proof on one non-recursive program using the new witness stack workflow |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# Construct and verify a MegaHonk proof on one non-recursive program using the new witness stack workflow | |
# Construct and verify a UltraHonk proof on one non-recursive program using the new witness stack workflow |
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oops forgot to fix this. Oh well
# Construct and separately verify a MegaHonk proof for all acir programs | ||
RUN FLOW=prove_then_verify_mega_honk ./run_acir_tests.sh | ||
# Construct and verify a UltraHonk proof for a single program | ||
RUN FLOW=prove_and_verify_ultra_honk ./run_acir_tests.sh double_verify_nested_proof | ||
RUN FLOW=prove_and_verify_ultra_honk ./run_acir_tests.sh pedersen_hash |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason this one is pedersen and the other is sha256?
We should add a TODO for bringing back a double_verify_nested_proof
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nah, I was just picking different ones to increase variability. We should be able to bring this back in other PR which adds the verify_honk_proof test program.
We want to be able to verify honk proofs without adding a new opcode. The workaround that this PR introduces is adding a flag that determines whether to create a plonk vs a honk recursion constraint based on which proof system we're using to prove. If we are using ultra honk, we will generate a honk recursion constraint and the same for plonk. This will need to be reverted after the offsite: AztecProtocol/barretenberg#1013. Please read [contributing guidelines](CONTRIBUTING.md) and remove this line.
We want to be able to verify honk proofs without adding a new opcode. The workaround that this PR introduces is adding a flag that determines whether to create a plonk vs a honk recursion constraint based on which proof system we're using to prove. If we are using ultra honk, we will generate a honk recursion constraint and the same for plonk. This will need to be reverted after the offsite: AztecProtocol/barretenberg#1013. Please read [contributing guidelines](CONTRIBUTING.md) and remove this line.
We want to be able to verify honk proofs without adding a new opcode. The workaround that this PR introduces is adding a flag that determines whether to create a plonk vs a honk recursion constraint based on which proof system we're using to prove. If we are using ultra honk, we will generate a honk recursion constraint and the same for plonk.
This will need to be reverted after the offsite: AztecProtocol/barretenberg#1013.
Please read contributing guidelines and remove this line.