-
Notifications
You must be signed in to change notification settings - Fork 615
feat: Zw/goblin avm tests #12904
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: Zw/goblin avm tests #12904
Changes from 52 commits
35475e2
8cb78b5
7b80a03
850db1b
ca6da54
a6f4335
78c9b26
1e1668f
96cedff
2dcde30
6be66d3
0a5ee12
f841ba0
45c060f
4959284
267d8ad
a9f0629
197cf5d
6365a91
4379bfb
95d3816
3d7bc01
555c705
dc50c48
dd65108
3951df8
eecc633
cc675dd
928c8bc
d4386eb
3d0f504
ccb5630
cbee911
8b82854
bb07083
af268a0
5eaabf0
9492122
2447934
0f66a40
dd40b1c
e050056
1e7d991
f9a4c10
042d8eb
cb0eb92
98c4759
9c5bb95
dc84f4e
df8517e
33ce5f0
7155b0f
1f0c4b3
46c7525
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,6 +4,9 @@ namespace bb::stdlib::recursion::honk { | |
|
|
||
| /** | ||
| * @brief Runs the Goblin recursive verifier consisting of ECCVM, Translator and Merge verifiers. | ||
| * // TODO(https://github.com/AztecProtocol/barretenberg/issues/1309): Implement correct pairing point aggregation. | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No meaningful changes here just highlighting yet another place where pairing point aggregation is missing. |
||
| * Method needs to accept an input agg object, aggregate the pairing points from both translator and merge, then return | ||
| * the updated agg object. | ||
| */ | ||
| GoblinRecursiveVerifierOutput GoblinRecursiveVerifier::verify(const GoblinProof& proof) | ||
| { | ||
|
|
@@ -15,8 +18,7 @@ GoblinRecursiveVerifierOutput GoblinRecursiveVerifier::verify(const GoblinProof& | |
| TranslatorVerifier translator_verifier{ builder, | ||
| verification_keys.translator_verification_key, | ||
| eccvm_verifier.transcript }; | ||
|
|
||
| translator_verifier.verify_proof( | ||
| [[maybe_unused]] auto translator_pairing_points = translator_verifier.verify_proof( | ||
| proof.translator_proof, eccvm_verifier.evaluation_challenge_x, eccvm_verifier.batching_challenge_v); | ||
|
|
||
| // Verify the consistency between the ECCVM and Translator transcript polynomial evaluations | ||
|
|
@@ -35,7 +37,7 @@ GoblinRecursiveVerifierOutput GoblinRecursiveVerifier::verify(const GoblinProof& | |
|
|
||
| MergeVerifier merge_verifier{ builder }; | ||
| StdlibProof<Builder> stdlib_merge_proof = bb::convert_native_proof_to_stdlib(builder, proof.merge_proof); | ||
| merge_verifier.verify_proof(stdlib_merge_proof); | ||
| [[maybe_unused]] auto merge_pairing_points = merge_verifier.verify_proof(stdlib_merge_proof); | ||
| return { opening_claim, ipa_transcript }; | ||
| } | ||
| } // namespace bb::stdlib::recursion::honk | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -20,10 +20,12 @@ template <typename Curve> struct aggregation_state { | |
| { | ||
| return P0 == other.P0 && P1 == other.P1; | ||
| }; | ||
| template <typename BuilderType = void> | ||
|
|
||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just making a general improvement here. The template param was not needed. |
||
| void aggregate(aggregation_state const& other, typename Curve::ScalarField recursion_separator) | ||
| { | ||
| if constexpr (std::is_same_v<BuilderType, MegaCircuitBuilder>) { | ||
| using Builder = typename Curve::Builder; | ||
|
|
||
| if constexpr (std::is_same_v<Builder, MegaCircuitBuilder>) { | ||
| P0 += other.P0 * recursion_separator; | ||
| P1 += other.P1 * recursion_separator; | ||
| } else { | ||
|
|
@@ -36,10 +38,11 @@ template <typename Curve> struct aggregation_state { | |
| } | ||
| } | ||
|
|
||
| template <typename BuilderType = void> | ||
| void aggregate(std::array<typename Curve::Group, 2> const& other, typename Curve::ScalarField recursion_separator) | ||
| { | ||
| if constexpr (std::is_same_v<BuilderType, MegaCircuitBuilder>) { | ||
| using Builder = typename Curve::Builder; | ||
|
|
||
| if constexpr (std::is_same_v<Builder, MegaCircuitBuilder>) { | ||
| P0 += other[0] * recursion_separator; | ||
| P1 += other[1] * recursion_separator; | ||
| } else { | ||
|
|
@@ -74,6 +77,7 @@ template <typename Curve> struct aggregation_state { | |
| }; | ||
| return witness_indices; | ||
| } | ||
|
|
||
| void assign_object_to_proof_outputs() | ||
| { | ||
| P0 = P0.reduce(); | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,3 @@ | ||
| if(NOT DISABLE_AZTEC_VM) | ||
| barretenberg_module(vm sumcheck stdlib_honk_verifier) | ||
| endif() | ||
| barretenberg_module(vm sumcheck stdlib_honk_verifier stdlib_goblin_verifier) | ||
| endif() |
Uh oh!
There was an error while loading. Please reload this page.
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.
Leaving it as a TODO to actually enable in ACIR (via
create_avm_recursion_constraints_goblin)the new algorithm implemented in this PR.