The names of the milestones are the names of Saturn's first 7 largest moons, from smallest to largest.
The goal of the first milestone is to have a functioning first infrastructure with minimal functionality. Admins should manage their permissioned groups with a simple dashboard and the backend service should provide read-only APIs to generate Merkle proofs or to get group information (e.g. name, size, members). There will be only two components initially: dashboard and API service.
Github Milestone: https://github.com/privacy-scaling-explorations/zk-groups/milestone/1
Admins should sign-in with Twitter, Reddit or Github (SSO). A session remains active so that they can log-in automatically next times.
In this first version of the dashboard admins should be able to see the list of the existing groups, and filter or search for specific groups. They should also be able to see their own groups, create new permissioned groups and add or remove members.
There will be many types of groups. In this iteration groups should be permissioned (only admins can add or remove members) and they shouldn't have any constraints (admins can add anyone).
Once admins can create groups and they are saved on MongoDB, the backend service should provide APIs to:
The storage should be optimized to allow Merkle proofs to be calculated efficiently.
Dashboard and API service should be dockerized, so that they can easily be deployed to the cloud (i.e. AWS) and everyone can self-host them.
The goal of the second milestone is to provide more options for creating groups. Admins should be able to create reputation groups and define their own reputation thresholds, and users should join these groups with a simple client application with SSO. Admins should also be able to create on-chain groups using the Semaphore contracts.
Github Sprint Board: https://github.com/orgs/privacy-scaling-explorations/projects/18/views/4
Github Milestone: https://github.com/privacy-scaling-explorations/zk-groups/milestone/2
Users will be able to authenticate with Twitter, Reddit, and Github so that ZK-Groups can calculate their Web2 reputation based on parameters and thresholds decided by the admin of the group.
Users will be able to join reputation groups with a simple application where they will need to authenticate with Twitter, Reddit or Github. They will also be able to join the permissioned groups with a magic link created by the admins, which can only be used once. This application should also show the list of available reputation groups.
When admins create a permissioned group they generate a magic link with an invitation code that can only be used once by users who receive the link.
ZK-Groups will allow admins to create on-chain permissioned groups with Metamask and the Semaphore.sol
contract on the Dashboard. Admins will manually add/remove/update members.
A ZK-Groups contract will also be created and it will be used to save the Merkle roots of the off-chain permissioned groups, which will then allow members of off-chain groups to verify their zero-knowledge proofs in that contract.
Additional group filters and sorting will be added to the Dashboard.
The third milestone will finally concern polishing and documentation of the project. New JavaScript libraries could also be built to improve DevEx. After deploying the infrastructure on AWS a blogpost could be published to announce the first stable version of ZK-Groups.
zk-groups