Summing up this week the progress was not much in code, but had a lot of meetings and discussions with @mamy & @zahary on how should the banderwagon be structed and added to the constantine. This is because the banderwagon is not a different curve rather like a scheme built over bandersnatch to solve the problem of cofactor-4. So the curve equation and all the other constants of the underlying is curve is same as that of bandersnatch.

After establishing consensus regarding how this should be structured inside of constantine. The following was decided : -

  • The banderwagon should be a scheme built over bandersnatch.
  • But the banderwagon should be a separate curve in constantine, with the same parameters as that of bandersnatch.
  • The functions that are different from bandersnatch should be implemented in banderwagon, as function overrides.

Now according to this I added the curve in curves_declaration.nim. But while testing these out I realized that

  • toHex() function is not working for the points on the curve.
  • upon further research I found out that the toHex() function is not implemented for the points on the curve type
    • twisted edwards affine points
    • twisted edwards projective points

So after realizing this that without this I won’t be able to test out the functions that I will be implementing in banderwagon. So I started working on implementing the toHex() function for the points on the curve. I started with the affine points and then moved on to the projective points. During this conversion of points from affine to projective needed to be altered as the implementation was not satisfactory. So finally I completed this and raised my first PR to constantine. This PR have been reviewed by @mamy and merged with ergonomic: 100 tag. I was kinda happy about this, I don’t know why haha.


Have a look at the issue
The merged PR

Now I am working on the equality check and other functions for banderwagon and will be raising a PR for this soon.