-
Notifications
You must be signed in to change notification settings - Fork 103
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: biggroup handles points at infinity (#6391)
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>
- Loading branch information
Showing
26 changed files
with
885 additions
and
173 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.