bounty: migrate to arkworks ecosystem #13
Labels
bounty 🏴☠️
Closing this rewards a bounty!
discussion 💭
Needs discussion or decisions
help wanted 🆘
Extra attention is needed
priority-high 🔥
High priority tasks
Bounty description
This bounty is to replace three crates in the
edge-prover
that are effectively deprecated or are causing additional friction. The overarching goal is to improve the cleanliness of theedge-prover
codebase. A successful PR should net remove lines of code, reduce glue code inedge-frontend
, and lose zero functionality. Performance is less of a worry, though a successful PR should also be able to provide changes in performance numbers.Implementation requirements
Note, this issue is marked with the discussion label, and as such we expect some back and forth discussion on changes for a solution to this issue. Nonetheless, here are the requirements as we have them today.
ff
withark-ff
ff
is a great crate, but if you look at its history, it is stale and has not seen changes in a while (until VERY recently). See here. Amazingly, the last update was March 9th 2025, but prior to that it was more than two years before a change. Also, other crates such as those to do with ACIR primarily useark-ff
.bellpepper
withark-r1cs
bellpepper
is a nice crate, but it has also been abandoned. It's a bit more complex than what we need as well. Theark-r1cs
alternative is a bit more simple.custom-constraints
crate.halo2curves
withark-ec
halo2curves
and the ark ecosystem would be a bit dirty and unnecessary. We should migrate to the ark ecosystem entirely by this point, so we may as well drop off thehalo2curves
.Overall, this gives us a chance to work with the arkworks ecosystem which has no FFI as far as I know it. It also is being worked on actively, albeit maybe a bit slowly. Furthermore, and this is important, we can use sonobe as a reference point since they did everything there using the arkworks ecosystem.
Bonus features
There is more that can be done, and the emphasis is entirely on code quality and minimization. It does not directly have to do with this migration, but doing a migration as large as this opens up a good opportunity to do larger scale refactoring. To that end, here are some other generic features of this bounty:
edge-prover
codebase (based off of Arecibo) has a fairly tangled web of traits. It makes navigating and working in the repo challenging. In fact, this can really make the Rust analyzer choke.FastSerde
trait and implemented it where needed. I'm curious if this is necessary. Arkworks offers its ownCanonicalSerialize
in theark-serialize
crate. Also, there isrkyv
for zero-copy serialization. An issue (bench:rkyv
as a (de)serializer #14) proposes benching these implementations together. I would love to see which comes out fastest (most importantly in the WASM context) so that we can potentially drop in a more general serialization library and remove the need forFastSerde
(again, if benchmarks demonstrate this is a good idea).Resources
Criteria
For timely submissions of bounties that meet the implementation requirements, a bounty of at least $2500 will be awarded to the contributor. Additional bounty amounts are available and will be rewarded based on the following criteria:
Note: This is Pluto's largest bounty offering yet. This is a serious chance to make progress in folding backends for ZKPs.
The text was updated successfully, but these errors were encountered: