Sismo Docs

Factory Guide

Create a ZK Badge in 5 Minutes
In this guide, we will learn how to create a ZK Badge from start to finish using the Sismo Factory. Anyone can design, set eligible users for, and request to deploy a ZK Badge within five minutes.
At the end of this guide, we will have a ZK Badge for friends of the Sismo protocol—derived from Twitter, GitHub, and Ethereum accounts. After a short verification process, this ZK Badge will be deployed on our chain(s) of choice and be available on the main Sismo app.

Design your Badge

First and foremost, we need to give our ZK Badge a name and description. This information will identify our ZK Badge to our intended users.
Next, we need to give our ZK Badge an identifying image. We will click ‘Open SVG editor’ to design our ZK Badge’s appearance. Alternatively, we can click ‘Upload .svg’ to upload an existing file that conforms to Sismo’s style guidelines.
After designing our image, we click ‘Save SVG and continue’.

Set group of eligible users

Now that our ZK Badge has been designed, we need to set our group of eligible users. Adding a group of eligible users makes it possible for our ZK Badge to be minted by its intended owners.
To add eligible users, we click ‘Add eligible accounts’.
After doing so, it is possible to add accounts using three different methods:
If we manually upload a list of accounts, we upload a JSON file containing our list of eligible users. For our Sismo Frens ZK Badge, we want to add Twitter, GitHub, and Ethereum accounts owned by Sismo core team members. To do so, we enter the platform name accompanied by the appropriate account names and click ‘Add’.
If we add eligible accounts from data providers, we select the desired data provider and the type of data we want to use. We want to make it possible for all Sismo followers on Lens to mint our Sismo Frens ZK Badge. To do so, we select ‘Lens’ from the list of data providers, select ‘Get followers of’, enter Sismo’s lens profile identifier then finally click ‘Add’.
If we add eligible accounts from existing Badges, we simply select the desired Badge from the menu or search for it in the search bar. We want all Sismo Contributor ZK Badge holders to be able to mint our Sismo Frens ZK Badge. To do this, we simply search for the Badge, select it, and press ‘Add’.
After adding eligible accounts using the three different methods, we have our final group of eligible users. All members of this group will be able to mint the Sismo Frens ZK Badge once it has been deployed.
Alternatively, developers can fetch eligible accounts programmatically by following this 15-minute tutorial!

Group update frequency

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

Eligibility description

Eligibility descriptions explain the criteria users must meet to mint our Badge. There are two descriptions—a short one-liner for summary purposes and full technical specifications.

Add public information

At this stage, we can link a public Twitter and GitHub account to our Badge, as well as a public website. This information tells users who to contact for maintenance purposes and lets others find out more about our Badge.

Fund relayer and deploy Badge

Once all required information has been entered, we can click ‘Request to deploy’. This will open a window to select which chains to deploy our Badge on, fund Sismo’s relayer, and request to deploy our Badge.
Sismo uses a relayer to pay for user fees and increase user privacy. For now, Badge creators must fund the relayer before deploying their Badge.
The first step is to select which chains to deploy our ZK Badge on. We want the Sismo Frens ZK Badge to be available on testnets (default), Gnosis Chain, and Polygon, so we select those chains.
Next, we must choose the maximum number of Sismo Frens ZK Badges that can be possibly minted. By selecting ‘100k’ on the slider, we determine that eligible users will only be able to mint a total of 100,000 Sismo Frens ZK Badges. As our Badge only has 38801 eligible users, 100,000 is more than enough for every user to mint a Badge, even after weekly group updates.
Finally, we have to deposit enough ETH to cover our Badge’s relayer fees. These fees are calculated using the mean gas price on our selected chain, converted to ETH. As we have selected to deploy on Polygon and Gnosis Chain, our relayer fees are calculated using the mean gas price on those chains over the last month.
In addition to relayer fees, we have to reserve our Badge’s unique tokenID. All Badges are part of the same contract, and each has a tokenID. When paying this fee, we reserve our own unique tokenID that exists on all available chains—incentivizing us to create a high-quality and Sybil-resistant Badge.
After clicking ‘Deposit’, we are redirected to our wallet of choice to deposit the calculated relayer fees. Once the fees have been deposited, we submit a pull request to the Sismo core team to deploy our Sismo Frens ZK Badge.
You can see all live pull requests here:

Verification Process

Once we submitted our pull request, it will be checked by the Sismo core team within 48 hours.
To get verified, our Badge must:
  • Be written in the English language
  • Not contain obscene content
  • Not contain copyrighted material
  • Not impersonate others or have otherwise malicious intent
In the event our Badge does not pass verification, all relayer fees will be refunded to the original address.
Your Badge will be available on once it has been successfully deployed.

Getting Curated

All Badges deployed on the Sismo protocol have the potential to be curated by Sismo governance. By getting our Sismo Frens ZK Badge curated, it would be visible to more users and verified as a top-tier Badge.
To get curated, our Badge must:
  • Be of sufficient quality
  • Be aligned with Sismo’s values
  • Have compliant artwork
  • Make minting privacy tradeoffs transparent
  • Have at least 20 eligible users
Holders of the Sismo Contributor ZK Badge can take part in the governance process and suggest Badges for curation.