Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
There was a problem hiding this comment.
Pull request overview
Adds increment-and-check map-to-curve gadgets (from the referenced paper) for short Weierstrass curves, with both emulated and native implementations, plus tests/benchmarks and a dependency bump to support required crypto primitives.
Changes:
- Introduces a generic emulated
maptocurvepackage supporting X-increment and Y-increment for BN254, secp256k1, and P-256 (incl. Cardano solver path). - Adds native Y-increment gadgets for Grumpkin (over BN254) and BLS12-377 (over BW6-761), including hint plumbing and basic tests/benchmarks.
- Updates
go.mod/go.sum(notablygnark-crypto) to pull in required functionality.
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| std/algebra/native/maptocurve_grumpkin/maptocurve.go | Native Grumpkin Y-increment gadget (constraints: curve equation + k range). |
| std/algebra/native/maptocurve_grumpkin/hints.go | Hint to search k ∈ [0,256) and compute cube root witness. |
| std/algebra/native/maptocurve_grumpkin/maptocurve_test.go | Satisfiability + benchmark harness for the native gadget. |
| std/algebra/native/maptocurve_grumpkin/doc.go | Package documentation / compilation curve notes. |
| std/algebra/native/maptocurve_bls12377/maptocurve.go | Native BLS12-377 Y-increment gadget (over BW6-761 scalar field). |
| std/algebra/native/maptocurve_bls12377/hints.go | Hint to search k ∈ [0,256) and compute cube root witness. |
| std/algebra/native/maptocurve_bls12377/maptocurve_test.go | Satisfiability + benchmark harness for the native gadget. |
| std/algebra/native/maptocurve_bls12377/doc.go | Package documentation / compilation curve notes. |
| std/algebra/emulated/maptocurve/maptocurve.go | Generic emulated Mapper implementing X-increment and Y-increment gadgets. |
| std/algebra/emulated/maptocurve/hints.go | Emulated hints for BN254, secp256k1, and P-256 (x/y increment). |
| std/algebra/emulated/maptocurve/maptocurve_test.go | Satisfiability tests + benchmarks for emulated gadgets. |
| std/algebra/emulated/maptocurve/doc.go | Package-level documentation describing both methods and tradeoffs. |
| go.mod | Bumps deps (incl. gnark-crypto) needed for curve operations/solvers. |
| go.sum | Corresponding checksum updates. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Description
Add increment-and-check map-to-curve gadgets for short Weierstrass curves, implementing the constructions from https://eprint.iacr.org/2026/590.pdf.
Two methods are provided:
N.B. Currently
go.modpoints to the commit Consensys/gnark-crypto@2c33f2d. We need to change that once that PR get merged.Packages
std/algebra/emulated/maptocurve/Generic emulated map-to-curve for any supported curve;
std/algebra/native/maptocurve_grumpkin/Native y-increment for Grumpkin (y² = x³ − 17), compiled over BN254.
std/algebra/native/maptocurve_bls12377/Native y-increment for BLS12-377 (y² = x³ + 1), compiled over BW6-761.
Constraint counts
Type of change
How has this been tested?
All tests verify circuit satisfiability via
test.CheckCircuit(both Groth16 and PLONK backends):TestXIncrementEmulatedBN254— x-increment on BN254TestXIncrementEmulatedSecp256k1— x-increment on secp256k1TestXIncrementEmulatedP256— x-increment on P-256TestYIncrementEmulatedBN254— y-increment on BN254TestYIncrementEmulatedSecp256k1— y-increment on secp256k1TestYIncrementEmulatedP256— y-increment on P-256 (Cardano solver)TestYIncrement(maptocurve_grumpkin) — native y-increment on GrumpkinTestYIncrement(maptocurve_bls12377) — native y-increment on BLS12-377How has this been benchmarked?
Checklist:
golangci-lintdoes not output errors locallyNote
Medium Risk
Adds new constraint gadgets and solver hints for map-to-curve, which affect cryptographic correctness and circuit soundness despite being additive. Also bumps
gnark-cryptoand tweaks generated field/vector code, which could change arithmetic behavior if regressions slip in.Overview
Adds new increment-and-check map-to-curve gadgets for short Weierstrass curves.
Introduces
std/algebra/emulated/maptocurvewithMapper.XIncrementandMapper.YIncrement, backed by registered solver hints that searchk∈[0,256)and return witnesses for BN254, secp256k1, and P-256 (including Cardano-based cubic solving for P-256).Adds native
YIncrementgadgets for BLS12-377 and Grumpkin (both hint-driven), plus corresponding tests/benchmarks. Updates generatedtinyfieldcode to addCbrt/Cube, modernizes some loops/types, and switches vector async decoding tognark-crypto/parallel. Dependency versions are bumped ingo.mod/go.sum(notablygnark-cryptoandx/sync).Reviewed by Cursor Bugbot for commit cb97775. Bugbot is set up for automated code reviews on this repo. Configure here.