-
Notifications
You must be signed in to change notification settings - Fork 163
Open
Labels
T-designType: Discussion over API/implementation design and/or research associatedType: Discussion over API/implementation design and/or research associateddiscussionDiscussion that may not have an actionDiscussion that may not have an action
Description
Recently I'm working on a project which involved both halo2curves and arkworks.rs.
I found that the serialization of bn254 curve point like G1 are different in these two projects.
when serializing, halo2curves add the negative sign as the 6th bit of last bytes, and point of infinity as the 7th bit. see
halo2curves/src/derive/curve.rs
Line 138 in a3f15e4
fn to_bytes(&self) -> Self::Repr { |
while arkworks.rs does the opposite(6th for point of infinity, 7th for negative sign). see https://github.com/arkworks-rs/algebra/blob/860a986360a1deb19a4d06b991a1a700d34b1298/ec/src/models/short_weierstrass/serialization_flags.rs#L7
I had dealt the subtle difference in my project.
However, I wonder if there exists a common standard for (de)serialization Field and Curve Point?
If there isn't, I wonder how could we change the situation, and unify the serialization in many other zk projects and make proof parsing more portable?
CPerezz, huitseeker and davidnevadoc
Metadata
Metadata
Assignees
Labels
T-designType: Discussion over API/implementation design and/or research associatedType: Discussion over API/implementation design and/or research associateddiscussionDiscussion that may not have an actionDiscussion that may not have an action