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

double_verify_proof and nested variant fail in WASM due to exceeding the memory limit #6672

Open
codygunton opened this issue May 24, 2024 · 1 comment
Labels
C-bb.js Component: bb.js - wrapping bberg in js

Comments

@codygunton
Copy link
Contributor

There is a long lineage here. The nested version has failed for a long time, and the non-nested version began to fail at #6391, which caused the Plonk recursive verifier circuit size to double.

@codygunton codygunton added the C-bb.js Component: bb.js - wrapping bberg in js label May 24, 2024
@github-project-automation github-project-automation bot moved this to Todo in A3 May 24, 2024
codygunton added a commit that referenced this issue May 25, 2024
This PR introdues a stdlib boolean flag into biggroup to track whether
an element is the point at infinity. This is uses to handle edge cases
around the point at infinity in biggroup operations. We now correctly
handle points at infinity under addition and subtraction. The
`batch_mul` method correctly handles points at infinity (at least in
three tested cases) under the Mega arithmetization (though this is not
all that meaningful without a full Goblin proof!). The `wnaf_batch_mul`
method correctly handles points at infinity (at least in three tested
cases) under the Ultra arithmetization, which is the only
arithmetization for which it's implemented.

The PR adds constraints that increase the cost of biggroup operations.
This cases the UltraPlonk recursive verifier circuit size to grow,
crossing a power-of-two boundary. This means that we can no longer
execute two UltraPlonk recursive verifications in WASM due to an
out-of-memory error during provcing key creation. (cf the
`double_verify_proof` tests; note that `double_verify_nested_proof` was
already not available in WASM). Moreover, the PR exposed that noir.js is
not capable of executing proof construction for a circuit of size
$2^{19}$. In response to these two issues, we have disabled tests. We
did this in consulation with @TomAFrench and @vezenovm. 
Related issues:
noir-lang/noir#5106,
#6672.

---------

Co-authored-by: codygunton <codygunton@gmail.com>
AztecBot pushed a commit to AztecProtocol/barretenberg that referenced this issue May 26, 2024
This PR introdues a stdlib boolean flag into biggroup to track whether
an element is the point at infinity. This is uses to handle edge cases
around the point at infinity in biggroup operations. We now correctly
handle points at infinity under addition and subtraction. The
`batch_mul` method correctly handles points at infinity (at least in
three tested cases) under the Mega arithmetization (though this is not
all that meaningful without a full Goblin proof!). The `wnaf_batch_mul`
method correctly handles points at infinity (at least in three tested
cases) under the Ultra arithmetization, which is the only
arithmetization for which it's implemented.

The PR adds constraints that increase the cost of biggroup operations.
This cases the UltraPlonk recursive verifier circuit size to grow,
crossing a power-of-two boundary. This means that we can no longer
execute two UltraPlonk recursive verifications in WASM due to an
out-of-memory error during provcing key creation. (cf the
`double_verify_proof` tests; note that `double_verify_nested_proof` was
already not available in WASM). Moreover, the PR exposed that noir.js is
not capable of executing proof construction for a circuit of size
$2^{19}$. In response to these two issues, we have disabled tests. We
did this in consulation with @TomAFrench and @vezenovm. 
Related issues:
noir-lang/noir#5106,
AztecProtocol/aztec-packages#6672.

---------

Co-authored-by: codygunton <codygunton@gmail.com>
@codygunton
Copy link
Contributor Author

Noting that usage of Plonk is deprecated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bb.js Component: bb.js - wrapping bberg in js
Projects
Status: Todo
Development

No branches or pull requests

1 participant