Factory Guide: Create a Data Group in 5 Minutes

Non-developer tutorial

This tutorial will show you how to create a Data Group from start to finish using the Sismo Factory.

At the end of this tutorial, you will have a Group of Twitter, GitHub, Telegram and Ethereum accounts. After a short automatic verification process (under 15 minutes), this Data Group will be deployed on our chain(s) of choice and be available for a Sismo Connect app 🙌

If you are a developer and want to build your own customizable Data Group, go check out this tutorial. It will also explain all the steps of the creation process.

Don't hesitate to join our Dev Telegram and ping us during a hackathon. We would love to talk to you and meet you there. All new Data Groups under 100k accounts are automatically deployed.

What are Data Groups?

Data Groups are set of Data Sources with each an associated value:

  • Web2 Data Sources: Twitter, GitHub, Telegram

  • Web3 Data Sources: Ethereum addresses, ENS, Lens handles

Here's an example of what a Group looks like:

 {
  // Sismo Community Group made of multiple types of accounts
  // full group: https://sismo-prod-hub-data.s3.eu-west-1.amazonaws.com/group-snapshot-store/0xd630aa769278cacde879c5c0fe5d203c/1687260637.json
   ...
   "0xb08db4cd36b0309c069f515ced754205912a707a": "2",
   "0xf1fc0b43f8fd0e8b8fce983732d48925148438c1": "2",
   "twitter:robsvensek": "3",
   "twitter:PN79161154": "3",
   "github:leosayous21": "2",
   "github:mme022": "2",
   "dhadrien.eth": "2",
   "telegram:dhadrien": "3",
   ...
 }
  

Data Group Use-Cases

A Data Group can be used for a Sismo Connect app

Let's take the proof-of-humanity Group as an example and look at these use cases:

Sismo Connect app

Here is an instance of a Sismo Connect App that has been implemented using the proof-of-humanity Group:

This Sismo Connect App allows you to gate contents/features of your app to Proof of Humanity registrants without revealing the registered addresses.

After this tutorial, you will be able to use your Group for a Sismo Connect app.

Tutorial use case

In this tutorial, we will create a group composed of:

  • Sismo Lens Followers 🌿

  • Sismo EthCC Booth attendees 💜

  • Sismo contributor Level 3 🔨

  • Some Sismo core team members 🎭

Creation of the Group

Group creation page

First, go to the Factory (in Data Group section): https://factory.sismo.io/groups-explorer

Next, you will have to sign in to the factory with your Ethereum address. To do this click on the login button at the top left corner and sign the message.

Once you are logged in, click on Create new Data Group (red box):

Create the Group

Let's build our Group now 🧑‍💻

Title

First, you need to define a name for your Group: in our case, we will take the name "sismo-supporters"

List of the Data Sources

After doing so, it is possible to add accounts using three different methods:

There are 3 different ways to define the data of a Group Generator, you can use:

  • A defined list of Data Source ("By uploading a list of accounts")

  • Data Providers : function that allows fetching Data Sources ("From data providers")

  • Already existing Groups ("From data group")

For our case we need 3 main things:

  • Define the Sismo core team members

To do this, go to the "By uploading a list of accounts" section, and put your list of Data Source.

Here are the different formats of Data Sources you can use:

  • Ethereum addresses (e.g. "0x123...456":"1")

  • ENS (e.g. "sismo.eth":"1")

  • Lens handles (e.g. "sismo.lens":"1")

  • GitHub accounts (e.g. "github:leosayous21":"1")

  • Twitter accounts (e.g. "twitter:leosayous21":"1"

  • Telegram accounts (e.g. "telegram:pelealexandru":"1"

Here we will add some of the Sismo core team members:

Here we can see that the 7 accounts have been found (blue box). Then click on the Add button (red box) in order to add these accounts to the group.

If you need to import a huge number of Data Sources, you can also directly import them through a json file by clicking on Replace json button (green box)

For our case, we didn't specify the value of each account, so they will all have a value of 1. But you can define the value you want for each account if desired.

For example, different values can be used for voting power:

  • "1" --> gives you 1 voting power

  • "2" --> gives you 50 voting power

  • "3" --> gives you 500 voting power

  • Get the list of sismo.lens Lens followers

To do this, you need to use a Data Provider, so we select the "From Data Providers" section. Then we choose the Lens Provider and use the getFollowers() function:

You need to enter the Lens profile we want to fetch the followers from (sismo.lens) as argument.

Next, by clicking on the Add button (red box), you will know if the Lens profile exists and how many followers they have.

After this, you can click on the second Add button (red box) in order to add these Lens accounts (sismo.lens followers) to the group.

If you are a developer and want to build your own Data Provider, go check out this tutorial. It will explain all the steps of the creation process.

To get the holders of this POAP, we will use the Poap Provider:

With the same logic as before, by clicking on the Add button, we will add the holders of the POAP to the list of Data Sources.

To do this, you have to go to the "From data group" section and search for the group you want to use, for our case, we want to get the sismo-contributors-tier3-builders:

So you can select it and click on the Add button.

Finally, that is what you should get at the end:

We will have a total of 15750 accounts in our group (blue box), however, this number will have increased since the creation of this tutorial.

Update frequency

After finalizing our list of Data Source, we can select how often this group is updated. For our Sismo Supporter Group, we select ‘Weekly’ from the drop-down menu. This means that users who become a Sismo Contributor level 3 or follow Sismo on Lens after our Group is created can still become eligible after the weekly update.

Don't hesitate to join our Dev Telegram and ping us during a hackathon to ask for a custom Data Group update.

Description

Next, you will have to add 2 descriptions:

  • a one-line description that explains briefly what your Group is composed of

  • a technical description that lists the different requirements for a data source to be part of the Group

Deploy your Group

Before deploying your group, please be sure to:

  • Have texts written in the English language

  • Not have obscene content

  • Not impersonate others or have otherwise malicious intent

After having completed the captcha, click on the "Request to deploy":

You will be redirected to the Group Explorer Page:

We can see that now your Group request is in waiting for approval (red box) and a few time after in Deploying.

Once you submit your Group, it will be automatically accepted and deployed on all supported chains in ~20 minutes if it contains less than 100k accounts in it.

Don't hesitate to join our Dev Telegram and ping us during a hackathon to ask for help or for a custom group update. We would love to talk to you and meet you there.

If you Group consist of more than 100k accounts then the Sismo Team will have to approve the Group before deploying it. So don't hesitate to send your PR there as well, we will quickly review and merge it (usually under 30 minutes). During hackathons, we are committed to quickly reviewing any new Data Group pull request.

So a few time after your Group will be in deployment and it will be displayed as Deployed.

You have finally created your first Group through the Factory, congrats! 🎉

You can now use it to create a Sismo Connect app via the Factory.

You can also click on the 🔽 icon in order to display more information on your group, including the GitHub Pull Request associated with your Group creation.

For this tutorial, you can find the generated PR here.

If you have any questions or you need help regarding your Group creation process, do not hesitate to join ou Discord and ask us in the #general-support or our Dev Telegram. We will be glad to answer you 🤗

Last updated