-
Notifications
You must be signed in to change notification settings - Fork 256
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
Fields are Groups #507
Comments
We can move |
@Pratyush @mmagician what do you think of the above?
One example where this is useful is this generic sumcheck argument; https://github.com/arkworks-rs/gemini/blob/main/src/herring/ |
I'll look at the actual code later, the idea seems reasonable though 👍🏼 |
What's the difference between EDIT: That is, do we ever instantiate |
Hey, thanks for taking a look! Yes, all field extensions are not of prime order, so making them |
removed some code not useful at this stage (implementation of |
That's a good point, makes sense. In that case it might make sense to remove |
mmh |
Why do you need a scalar field for operations? Group operations only require Do sumcheck arguments require composite-order groups? |
bump! @Pratyush @mmagician |
Hm my main worry is just that we don't have a way to define a Scalar* |
* Add AdditiveGroup trait + Field: AdditiveGroup. This trait now integrates ZERO, double, double_in_place, and negate. Fix doctests accordingly (#507) * Fix disambiguation of what is a ScalarField in bench-templates. Remove `ScalarField` from `CurveGroup` --------- Co-authored-by: Pratyush Mishra <pratyushmishra@berkeley.edu>
* Add AdditiveGroup trait + Field: AdditiveGroup. This trait now integrates ZERO, double, double_in_place, and negate. Fix doctests accordingly (arkworks-rs#507) * Fix disambiguation of what is a ScalarField in bench-templates. Remove `ScalarField` from `CurveGroup` --------- Co-authored-by: Pratyush Mishra <pratyushmishra@berkeley.edu>
A lot of cryptographic schemes (some IBEs, ABEs, hash proof systems, and sumcheck arguments [BCS]) use the abstraction of "modules". Arkworks currently has a nice abstraction,
Group
, that essentially implements the operations that we would expect from a module: this is already satisfied in pairing-friendly curves byG1
,G2
, andPairingOutput
.It'd be really nice if also field implemented this abstraction, so to make possible the realizations of such schemes without having wrappers around the structures. To avoid confusion and lock-out of features of the multiplicative group, perhaps consider renaming
Group
intoAdditiveGroup
?. Here's a possible sketch of the steps to achieve this:Group
s are additiveGroup
: this can be first perhaps done in ark-ec with a blanket implementation, to avoid moving code around (hoping this does not break anything)Group
definition into ark-ff for the small operations, and re-assing group-specific methodsGroup
intoAdditiveGroup
?The text was updated successfully, but these errors were encountered: