Arkworks

arkworks on GitHub

Small start

My first contribution to arkworks was improving the documentation of finite fields. Many public structs and traits were at that time without any description and it was difficult, especially for newcomers to the arkworks ecosystem like myself, to grasp the complexity, let alone use the APIs. One had to resort to reading the source code!

Later I added doctests (a code example included in the documentation of that item, which actually executes when you cargo test) and fixed some CI jobs, so that the repo appeared all nice and green.

Bugs

As you’re writing documentation, and especially doctests, you are likely to come upon edge cases. I did just that, and fixed a couple of bugs t, like #358 or #366. As with most well-hidden bugs, these mostly required in-depth understanding of the algorithm involved and all the possible scenarios. For example, the first one mentioned works fine in case where the second coefficient of the quadratic extension field was 0, and the first was a square root in the base field, but would return an incorrect result if the first coeff was not a square root in base, but only in the extension field. I’ve also added an accompanying regression test here.

Feature fun

Later on, as I’ve gained a familiarity with the arkworks ecosystem, I got involved in adding new features as well as improving the API to be more user friendly and to make better use of the newest and greatest Rust features.

Some examples of refactorings I’ve done include: SquareRootField & Field unification, Refactoring the MSM interface or introducing an explicit cofactor clearing method (for which I’ve also added a ~5x improvement to one of the curves).

Some notable features I contributed to:

I am one of the official library maintainers. This entails PR reviews, direction setting and release management.