Problem
UPDATE: This is becoming a waterfall release which keeps getting delayed, which was never the intention. We want to take existing code and cut it into an initial 0.1 release.
We want to publish a release v0.1 for Zerokit with a first ~~mature~~ version of the RLN module.
Before that, it is desirable to clean-up the RLN module library code and implement different optimizations which are already standard in other libraries.
These allow to: make the RLN module more efficient and easily integrable in projects employing the RLN primitive; bring a cleaner code and optimized cross-module primitives (e.g., Merkle trees) to new zerokit modules.
Scope
Release zerokit v0.1 with a RLN module that can replace and improve Kilic's RLN module currently employed by nwaku
.
Must have:
- [x] Sanity check main features included / bug fixes included
-- Err on side of not accepting more scope
- [x] Release branch with release note and tag
- [ ] Announce release on Discord and Twitter
Initial list of issues, many nice to haves that can be dealt with separately:
- [x] https://github.com/vacp2p/zerokit/issues/29
- [ ] Maximize usage of only arkworks dependencies (e.g., replace Semaphore's Field with arkworks Fr, etc.) and remove unnecessary ones (might require adapting/integrating used primitives e.g. Poseidon hash)
- [x] https://github.com/vacp2p/zerokit/issues/35
- [ ] https://github.com/vacp2p/zerokit/pull/44
- [ ] Eventually add/update APIs to address new needs resulting from completions of milestones in the RLN-RELAY track https://github.com/status-im/nwaku/issues/1062 or other tracks:
- [ ] https://github.com/vacp2p/zerokit/pull/45 (contains https://github.com/vacp2p/zerokit/pull/36)
- [ ] Reduce size of compiled libraries (might require partial refactoring of dependencies) https://github.com/vacp2p/zerokit/issues/37
Acceptance criteria
Issues defined in scope addressed.
Risks and uncertainty
Removing some dependencies (e.g. semaphore-rs) might result not trivial, since there might some implementation used across the code base that should be ported to the replacing dependencies.
Out of scope
This milestone's scope requires a RLN module which can replace (in terms of APIs and efficiency) Kilic's RLN module. However, integration of zerokit v0.1 in nwaku is out-of-scope and is tracked in https://github.com/status-im/nwaku/issues/1061.
Notes and links
This first issue partially overlaps with https://github.com/vacp2p/research/issues/127, where a thorough performance analysis of employing Incremental Merkle trees is performed. This milestone will clearly benefit from completion of https://github.com/vacp2p/research/issues/127, and new items will be added to the above issues list to implement any eventual optimization found.
track:zerokit milestone