Anonymous instant chat application using RLN

This document aims to describe the full technical specification for the chat application using RLN and InterRep. We will describe in detail the full data flow in every component of the chat, as well as the technologies and libraries that will be used.

General Overview

The goal of this project is to develop a spam resistant instant messaging application for private and anonymous communication. It must have the following general properties:

However, there are a few use cases where not all properties will hold, since the general functionality of the chat would be to support different types of rooms - public, private and 1-1 rooms. The anonymity property won't apply to the 1-1 chat rooms, while the privacy property won't apply to the public chat rooms. On the other hand, the spam resistance will be applied to all types of chat rooms, as the key property of the entire application.

To prevent the spamming problem, social reputation will be used as a collateral by using the InterRep architecture for linking a social network profile with the user credentials (identity commitment). This kind of bonding enables few security properties:

InterRep is a service that allows users to link their social media account (ex. Twitter, Github etc.) with an Ethereum address in an anonymous way, and become part of a Semaphore group based on specified criteria (ex. Twitter follower count). The messaging application will rely on the already implemented InterRep service on Kovan network to continuously sync the registered identities and store them locally, in order for the registered users in InterRep to be able to create chat rooms, and chat!

The following diagram shows a general picture of entire chat application that we will technically deep dive in the following sections, but will give a general description in this section.

                                                                                         General Architecture

                                                                                     General Architecture