Try   HackMD

ZK-Groups vs Interep

Target audience

Specific target audience

In both cases, the main goal is to provide APIs for developers to enable them to integrate anonymity sets and build privacy-based applications. Specifically, the main target audience for both projects are therefore developers. However, in both cases the target audience changes depending on the components.

As we'll see in the Infrastructure section, there's a main component that is the back-end with the APIs (which already includes all the features), and optional add-ons that extend the back-end, abstract the APIs and actually have different targets: end-users or generically project teams.

General target audience

Broadly speaking, Interep was designed as an anti-Sibyl system based on Semaphore reputation groups. The main audience are web3 enthusiasts who intend to use and export web2 reputation to blockchain. The goal of ZK-Groups is even more ambitious, the idea being to offer a more generic infrastructure to allow people to create their own groups, adaptable to many more use cases. The audience can also be governments, international institutions, non-profit organization and associations.

Infrastructure and technologies

Their infrastructure is similar, they both have:

  • A client app: front-end targeted to end-users: people can use it to join groups, but devs can also choose to onboard that flow in their own application with the APIs (e.g. ZKitter has its own flow to allow people to join Interep reputation groups). This component is thus optional.
  • A back-end which provides APIs targeted to developers: APIs in Interep are used to add members to the existing groups based on their reputation and to fetch groups' data: member lists, merkle proofs etc. APIs in ZK-Groups are used to create groups, add/remove/update members, and to fetch groups' data.

But ZK-Groups has also an additional component:

  • Dashboard: what is commonly referred to as the back-office. It allows teams (i.e. developers but possibly also other team members such as PO or sys admins) to manage their groups. Even this component is actually optional, because with the APIs devs can do everything.

Interep uses Next.js and it is currently hosted on DigitalOcean. The front-end cannot be separated from the back-end, and self-hosting is possible but not very easy. Interep can be considered as a ready-to-use cloud service.

ZK-Groups uses NX and Nest.js, it is structured as a monorepo and each component is completely separate from the others. In addition, each component can be dockerized and self-hosted. There will be a cloud service, similar to Interep and probably hosted on AWS, but it will also be possible to self-host it with Docker and a few commands.

In essence, ZK-Groups aims to be a more professional solution that can be used in production in different contexts (similar to Github Enterprise).

Interep could be built on top of ZK-Groups. It could self-host a specific version of ZK-Groups dedicated to reputation groups and focus on thresholds and dev tools rather than infrastructure.

Scope

Interep initially included only OAuth groups (i.e. based on Github/Twitter/Reddit parameters), and then started to expand to include other types of groups: email domain-based groups, Telegram groups, and POAP groups, with the goal of having a set of groups that allows the people in them to prove with as much certainty as possible that their identity is authentic without revealing any data about it. Interep therefore focuses on off-chain reputation groups.

ZK-Groups, on the other hand, aims to cover as many types of groups as possible, which can be broadly categorised into permissioned and permissionless groups. Permissioned groups are those where an admin decides who to add to a group and how. Permissionless groups are those where users themselves can join groups based on certain attributes they have. They can both be on-chain and off-chain.

In the first version of ZK-Groups there will be:

  • Permissioned off-chain groups: someone creates a generic group and uses magic links to allow specific users to join their group.
  • Permissioned on-chain groups: same as above, but groups are on-chain and magic links could also be verified on-chain.
  • Permissioned off-chain reputation groups: someone creates a reputation group with their own thresholds and uses magic links to allow specific users to join their group, but only if they meet the right requirements (e.g. enough stars on Github).
  • Permissionless off-chain reputation groups: same as above, but in this case anyone who meets the requirements can join the group.
  • Permissionless on-chain groups: someone creates an open on-chain group which requires some on-chain attributes to be accessed (e.g. certein amount of ethers or NFT/SBT ownership).

Furthermore, whereas Interep has fixed reputational thresholds (e.g number of Github stars to join a group) decided by the Interep team itself, ZK-Groups lets those who create the groups decide their own thresholds.

tags: zk-groups