Interep (by PSE)

AbstractInterep provides an Anti-Sybil service. It uses data from Twitter, Github and Reddit to score and classify identities. And later organize these identities in groups based on an entity that provides identities. Serve as a mild tool for creating identities but is not a full solution.
Year
Link to the paperhttps://interep.link/
Relevance scoreVery relevant
Quality scoreN/A
LabelsImplementationsPossible tool in larger solutionSybil resistance insightsWeb2 to Web3 data transfer

Interep is an Anti-Sybil as a Service project.

For Interep, reputation is key to building trust in a system and it can often be used as a guarantee of authenticity.

Giving people the opportunity to export their reputation across platforms (e.g. social networks) without exposing their personal data would expand the compounding benefits of trusted human interactions across the web, while making it much more difficult to create fake accounts.

Interep provides special groups that can be used by DApps or services to verify users' reputations without exposing their identities. Users can join these groups based on their Web2 reputation (e.g Twitter groups) or via other specific user properties. Interep only checks if the users met the criteria to join the groups, without storing any sensitive data. In order to join groups each user must create a unique identifier using an Ethereum account and Semaphore. Semaphore, then, allows users to prove that their identifier is part of a specific group.

Semaphore is a zero-knowledge protocol that allows you to cast a signal (for example, a vote or endorsement) as a provable group member without revealing your identity. Additionally, it provides a simple mechanism to prevent double-signaling. Use cases include private voting, whistleblowing, anonymous DAOs and mixers.

Interep consists mainly of four components:

Reputation

Calculating reputation is not an easy task, at least as far as social networks are concerned. Some parameters are easier to fake and others do not offer an objective representation of the user's reputation. Our methods try to select the most suitable parameters and calculate a score that falls into one of the following categories (or reputation levels): goldsilverbronze. Parameters such as followerslikesstars can then be used to obtain a score that can best represent the authenticity of a user.

Github parameters

Levels

Reddit parameters

Levels

Twitter parameters

Levels

Groups

Groups are sets of users organized in Merkle trees, and users can join this groups based on their reputation. So users can prove that they belong to a group using zero-knowledge and Semaphore

There are different Group Types, these are defined by identities providers, i.e. the services from which the information necessary to certify a certain reputation or certain properties is obtained.

Interep generate identities with Semaphore, and then a reputation service takes care of adding the commitments in the Merkle tree associated with a certain group.

OAuth

Users who have Reddit, Twitter or Github accounts can access Interep with OAuth authentication. Interep will then be able to obtain the parameters needed to calculate their reputation on the platform, and depending on this reputation users will be able to join, and then possibly leave, the related Interep groups.

Flow

  1. The user logins to one of our supported OAuth providers and Interep calculates their reputation on that platform;
  1. the user connect their Metamask wallet;
  1. the user generates an identity commitment for the OAuth provider;
  1. the user joins or leaves the group related to their reputation on the platform where they are authenticated.

POAP

Interep allows POAP badge holders to join groups related to the events of the badges held, in order to allow them to prove anonymously that they participated in an event.

Flow

  1. The user connect the Metamask wallet;
  1. if the user has participated in one or more of the events supported by Interep then they can select the event related to the group they wish to join;
  1. the user generates an identity commitment for the POAP provider;
  1. the user joins the Interep group or leaves it if they have previously joined.

Semaphore

In order to join a Semaphore group, a user must first create a Semaphore identity. A Semaphore identity contains two values generated with the identity:

A Semaphore group contains identity commitments of group members. Example uses of groups include the following:

A Semaphore group is an incremental Merkle tree, and group members (i.e., identity commitments) are tree leaves. Semaphore groups set the following tree parameters:

Generate a proof off-chain

To generate a proof, pass the following properties to the generateProof function: