Skip to content

Latest commit

 

History

History
152 lines (109 loc) · 8.54 KB

README.md

File metadata and controls

152 lines (109 loc) · 8.54 KB
description cover coverY layout
Sovereign identity aggregator and crypto-native SSO
.gitbook/assets/Gibook Banner1_1900x400.png
0
cover title description tableOfContents outline pagination
visible size
true
full
visible
true
visible
true
visible
true
visible
true
visible
true

What is Sismo?

Sismo leverages zero-knowledge proofs (ZKPs) and privacy-preserving technologies to enable users to aggregate their identities and selectively disclose personal data to applications.

By using Sismo Connect, an easy-to-integrate single sign-on (SSO), applications can now obtain personal data that was previously inaccessible, while respecting user privacy.

Sismo Connect aims to replace non-sovereign SSOs such as Google Connect and improve limited SSOs such as Wallet Connect.

Sismo: Personal Data Aggregation and Selective Disclosure

Data Vault: Sovereign Identity Aggregator

Users aggregate their identity by adding Data Sources to their private, local and sovereign Data Vault.

The Data Vault currently supports the following types of Data Sources: Ethereum wallets, GitHub, Twitter or Telegram accounts. Users can generate ZK proofs from their Data Sources, enabling them to reveal data to applications in a sovereign way.

What a Data Vault looks like

{% hint style="success" %} You can create your own Data Vault and start aggregating your identity here. {% endhint %}

Sismo Connect: The Crypto-Native SSO

Sismo Connect is a crypto-native single sign-on (SSO) for onchain and offchain apps. Sismo Connect makes it easy for developers to access personal data without infringing on user privacy by requesting and verifying ZK proofs.

{% hint style="success" %} Experience Sismo Connect on the Demo App Store! {% endhint %}

Integration is simple with just a few lines of code: import the front-end package or React button to make Sismo Connect requests, and verify proofs in your back end/smart contracts using Sismo’s Solidity or TypeScript package.

With Sismo Connect, applications can request data from multiple sources at once. There are two types of requests that can be made:

  • Authentication: ZK proof of Data Source ownership (e.g. Ethereum wallets, GitHub, Twitter or Telegram accounts).
  • Disclosure of anonymized personal data: ZK proofs of Data Source inclusion in a specific Data Group (e.g. GR15 contributor).

{% hint style="info" %} Data Groups are sets of Data Sources in which each Data Source has an associated value. {% endhint %}

Concrete examples Data Groups and ZK proofs you can request from users
{ // "Stand With Crypto" NFT Minters Data Group
  "0xa2bf1b0a7e079767b4701b5a1d9d5700eb42d1d1": "2", // minted 2 NFTs
  "0xd03ad690ed8065edfdc1e08197a3ebc71535a7ff": "4", // minted 24 NFTs
  "0x70ddb5abf21202602b57f4860ee1262a594a0086": "21",// minted 21 NFTs
  "0x0e440bd9798ad22cb8fd6f1a433f2f16e8786770": "3", 
  "0x1e8cbbbfb827785ecc23dd0426a8907c7cdcca3a": "3",
  "0x4101ec64896fa8afda5be145b6321275bb375fe0": "3",
  "0x600f9faa8a2d39a710b28e2d0ec8a5dacc12b00f": "11",
  "0xc643c9411a6b489e9833b16631140f42bbfcb6d1": "2",
  "0x750f565251228a561d8ce8cceb03731a7a2430f8": "2",
  "0x2245be89fc8fab94ed982e859aa3212a4e4eb7e5": "14",
  [...]
}
  • All owners of these wallets can generate a ZK proof attesting that they are part of this group
  • The owner of 0x70ddb5abf21202602b57f4860ee1262a594a0086 can generate a ZK proof attesting that they are part of this group with a value > 10 (e.g, minted more than 10 NFTs)
  • The owner of 0xa2bf1b0a7e079767b4701b5a1d9d5700eb42d1d1 can generate a ZK proof attesting that they are part of this group with a value = 2 (e.g, minted exactly 2 NFTs)
{ // Sismo Community Data Group, created by Sismo
  // It regroups all community members, organized in 3 levels
  // level 1 = supporter, level 2 = contributor, level 3 = builder
  "0x32108e5f09f0df35aefc2ef4c520bbd06a57dae5": "2", // level 2 
  "0x53deea1808b6d2b8681241e3857b6c6ed1e7e103": "1", // level 1
  "0x1c494f1919c1512ebe74a5dcc17dac9a64069023": "2", // level 2
  "dhadrien.eth": "3", // level 3
  "github:yum0e": "2",
  "github:leosayous21": "2",
  "telegram:sampolgar": "2",
  "telegram:zpedro": "2",
  "twitter:wojtekwtf": "3",
  "twitter:albiverse": "3",
  [...]
}
  • All owners of these wallets can generate a ZK proof attesting that they are part of this group
  • The owner of dhadrien.eth can generate a ZK proof attesting that they are part of the group with a value > 2 (e.g, community member with level > 2)
  • The owner of @wojtekwtf on Twitter can generate a ZK proof attesting that they are part of the group with a value = 3 (e.g, community member with level 3)

Examples of Data Groups:

Data Group Examples Members (Data Sources) Value for each Data Source
"Stand With Crypto" NFT Minters Wallets of minters Number of NFT minted
Gitcoin Passport Holders Wallets of Gitcoin Passport holders Sybil-resistant score
Sismo Hub GitHub Contributors GitHub accounts of contributors to sismo-core/sismo-hub repo Number of contributions
ENS DAO Voters Wallets of voters in ENS DAO Number of votes
Sismo Community Members Wallets, GitHub, Telegram and Twitter accounts of all people that helped Sismo Level of their contributions (1, 2 or 3)

{% hint style="info" %} Anyone can create a new Data Group. {% endhint %}

Broken linkBuild with Sismo Connect.png
https://apps.sismo.ioAppStore.png
https://case-studies.sismo.ioCase Studies.png

Case Study: Sybil-Resistant Airdrop from Privately Aggregated Data

SafeDrop is a Sybil-resistant and privacy-preserving ERC20 airdrop that distributes $AIR tokens to users proportionally based on their reputation, aggregated from diverse sources of data (EVM wallets, Telegram, Twitter and GitHub accounts).

By integrating Sismo Connect, SafeDrop users can generate a ZK proof to establish ownership of the data that makes them eligible for the airdrop. No connection between these accounts and the airdrop destination address is ever made.

{% hint style="success" %} Read the full case study here. {% endhint %}

{% hint style="info" %} Learn how to build the Sybil-resistant airdrop here. Alternatively, check out the onchain boilerplate. {% endhint %}