Sismo Docs
  • Welcome to Sismo
    • What is Sismo?
  • Build with Sismo Connect
    • Overview
    • Installation
    • Sismo Connect Cheatsheet
    • Tutorials
      • Get Your appId - Create a Sismo Connect App
      • Onchain Tutorial (1/2): Code Your Airdrop Contract With Privately-Aggregated Data
      • Onchain Tutorial (2/2): Deploy Your Airdrop Contract
    • Technical Documentation
      • Sismo Connect Configuration
      • Auths
      • Claims
      • Signature
      • Packages
        • Sismo Connect Client: Request
        • Sismo Connect React: Request
        • Sismo Connect Server: Verify Offchain
        • Sismo Connect Solidity Library: Verify Onchain
    • FAQ
  • Data Groups
    • Overview
    • Tutorials
      • Factory Guide: Create a Data Group in 5 Minutes
      • Sismo Hub Guide: Create Data Groups Programmatically
      • Sismo Hub Guide: Add a Data Provider to the Sismo Factory
    • Sismo Hub
      • Sismo Hub Repository
        • Group Generators
        • Data Providers
        • Data Operators
        • Command Line Interface
      • Accounts Registry Tree
  • Data Vault
    • Overview
    • Vault Identifiers
    • Proving Schemes
      • Hydra-S1
      • Hydra-S2
    • Commitment Mapper
  • Resources
    • Deployed Contract Addresses
    • Sismo API
      • API Links
      • Query From a Client
      • Group
        • Get groups
        • Get group snapshots
      • Common Parameters
      • Advanced Filtering
      • Transaction
  • Links
    • Sismo Landing Page
    • Sismo Factory
    • Sismo App Store
    • Sismo Builder Resources
    • GitHub
    • Discord
    • Twitter
    • Blog
Powered by GitBook
On this page
  • Data Sources
  • Data Groups
  1. Data Groups

Overview

Data Groups and how to create them.

PreviousFAQNextTutorials

Last updated 1 year ago

Data Groups are created via the or by creating a pull request on the .

The Factory is an interface to easily create Data Groups on the Sismo Hub infrastructure.

The Sismo Hub computes Merkle trees of groups, stores them in its database and publishes the Merkle tree roots onchain.

Onchain roots are the source of truth for back ends and smart contracts to verify whether a ZK proof is valid.

Data Sources

Data Sources are the accounts that users aggregate in their Data Vault. Currently supported Data Sources:

  • Ethereum wallets/EVM accounts

  • GitHub accounts

  • Twitter accounts

  • Telegram accounts

From imported Data Sources, Vault owners can generate ZK proofs of:

  • Ownership of a specific Data Source (i.e, authentication)

  • Inclusion of an owned Data Source in a Data Group (and a claim about its value in the group)

Data Groups

Data Groups are sets of Data Sources in which each Data Source has an associated value.

Concrete examples of 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 the group with a value > 10 (e.g, minted more than 10 NFTs)

  • The owner of 0xa2bf1b0a7e079767b4701b5a1d9d5700eb42d1d1 can create a ZK proof attesting that they are part of the group with a value = 2 (e.g minted exactly 2 NFT)

{ // 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 create 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)

Data Group Examples
Members (Data Sources)
Value for each Data Source

Wallets of minters

Number of NFT minted

Wallets of Gitcoin Passport holders

Sybil-resistant score

GitHub accounts of contributors to sismo-core/sismo-hub repo

Number of contributions

Wallets of voters in the ENS DAO

Number of votes

Wallets, GitHub, Telegram and Twitter accounts of all people that helped Sismo

Level of their contributions (1, 2 or 3)

Everything is . Anyone can compute any Data Group.

Take a look at the to see all requests.

open-source
Sismo Connect Cheatsheet

Factory Guide:

Create a Data Group in 5 Minutes

Sismo Hub Guide: Create Data Groups Programmatically

Sismo Hub Guide: Add a Data Provider to the Sismo Factory

"Stand With Crypto" NFT Minters
Gitcoin Passport Holders
Sismo Hub Github Contributors
ENS DAO Voters
Sismo Community Members
Factory UI
Sismo Hub