iden3.io

Identities of the future run on iden3

@identhree

Introducing - TrustCommunity -  an experimental identity app for Devcon V

Posted by Sacha Saint-Leger on September 30, 2019

Without a powerful sense of community, even the best laws and institutions will remain a dead letter.

— Benjamin Disraeli

A glimpse into the future of identity applications

Iden3 is teaming up with DeversiFi to create an experimental app for our technology at this year’s devcon.

This app, while very much a bare-bones prototype, will allow us to showcase a subset of two of our fundamental goals:

  1. BabyJubJub based identities: the identities created in this app will be entirely owned and controlled by the user/creator as opposed to a third-party —  note however that, in this early prototype, they are just a basic key-pair. While they are as simple as they possibly can be to enable the application, they are are subset of more complete iden3 self-sovereign identities.

  2. Zero-knowledge use case: the app will allow users to experiment with zero-knowledge proofs to prove claims without revealing any information other than the validity of the claim. This is an important building block towards iden3 identities that are private by design.

Let’s dig into some of the details.

High-level overview

Each participant will be able to create a BabyJubJub based identity. Once they’ve created their identity, they’ll be able to connect with other identities.

Note that at this stage we are using a centralized server to allow users to connect with each other. We realize this isn’t ideal, but it’s what we could manage given the time available to create this application.

Once connected, participants be able to play a game, earn some tokens, and share networking information.

At the end of the game, the central server will send participants a claim confirming they took part and highlighting their performance.

Participants will then be able to use this claim to send a zero-knowledge proof of their performance to a Ethereum-based verifier contract in exchange for some tokens.

Sharing of information

The app will include an option for participants to share a string of text upon connecting with each other — this could be a twitter or telegram account for example (note that this information is stored locally on the participant’s device and will not be transferred to a server).

The hope is that they will keep this information after devcon.

Gamification

To make things interesting the application will include a prisoner’s dilemma type of game.

Players will have access to a live reward feed, showing the reward that they stand to get when connecting with another player (assuming both connect honestly).

This reward will go up and down depending on how many people are connecting at that time: the fewer people connecting, the higher the reward, and vice-versa. Rewards will take the form of Nectar tokens.

Upon connection, players will have a window of 30 minutes in which they can choose to betray their counter-party.

Neither player will be able to see if the other has betrayed them until the half-hour is up.

The rules of the game are as follows:

😇😇 If both parties cooperate — in other words neither party chooses to betray the other — both will earn the advertized reward at the end of the half-hour.

😇😈 If only one party betrays, the betrayer stands to make more than if she had behaved cooperatively, and the cooperative player loses money.

😈😈 Finally, if both parties betray, both stand to lose money (x percent of their current wealth).

Zero-knowledge use case

At the end of the game, users will receive a claim from the application server highlighting how well they performed and confirming that their digital identity is indeed part of the network.

They can then use this claim to receive Nectar tokens — the amount subject to how well they performed — without revealing the identity they are using.

They do this by generating a zero-knowledge proof (zkSNARK) that proves that they control the private key of the identity linked to the claim they received from the application server along with the Ethereum address they would like to send the reward to.

For the 🤓 among you, we’ll be using a BabyJubJub elliptic curve for all the signatures. For more about why BabyJubJub is optimal for zkSNARK operations, see this excellent post.

Once the proof is sent to the smart contract that has the tokens in question, the reward will be sent to the specified address.

For many participants, this will be their first time interacting with a zero-knowledge proof. This is something we are really excited about!

Note that participants will have to wait until three weeks after devcon to send the proof and receive the reward.

For updates, follow us on twitter.

What do we hope to get out of this

A chance to test our technology and receive feedback from members of the community.

Familiarize the community with the potential of zero-knowledge proofs and the beauty of self-sovereign identity concepts.

Create lasting connections between people and by doing so hopefully increase the sense of trust within the community. Last, but not least, we hope to add to the fun 😊.