-
Notifications
You must be signed in to change notification settings - Fork 380
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: 4-dimensional fake GLV #1296
Conversation
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.
Looks very good. From soundness perspective I only had a question that for GLV+fakeGLV should we also check that s
decomposition to s1
and s2
is correct.
I'll also try to think if there is a nice way to generalize over all supported curves. It also would help for the tests where we have a lot of duplication.
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.
I'm not fully sure about the possible overflow in BLS12-377, but I think with this approach we have a slight problem. Imo it looks good for the emulated 4-dim, but not for 2-chain.
Applied the suggestions and resolved conversations. For BLS12-377, we only use the GLV+Fake-GLV for testing purposes as it is currently more expensive constraint-wise compared to classical GLV. If we do the scalars decomposition check in non-native then definitely way more expensive. |
Thanks for all the changes! All good from my side now. I'll postpone the general interfaces for different curves for a separate PR (#1303) |
Description
https://ethresear.ch/t/fake-glv-you-dont-need-an-efficient-endomorphism-to-implement-glv-like-scalar-multiplication-in-snark-circuits/20394/7
Type of change
How has this been tested?
Correctness tests are implemented in
emulated/sw_emulated/point_test.go
andnative/sw_bls12377/g1_test.go
.How has this been benchmarked?
All benchmarks are in plonkish constraints (scs).
Checklist:
golangci-lint
does not output errors locally