The Sismo protocol revolves around the notion of Groups of accounts. An account is the pair of an account identifier (e.g an Ethereum address) and a value.
A Group of accounts bundles accounts that share some reputational or historical characteristics.
Examples of such groups include:
  • ENS DAO voters. Account values = number of votes
  • Early Ethereum users. Account values = number of transactions made before 2018
  • Accounts with high DeFi reputation. Account values = DegenScore score
  • Early Lens profile minters. Account values = date of minting
  • Gitcoin grant donors. Account values = Number of donations
Anyone can propose a new group. Learn how to make your own with our tutorial Create your ZK Badge in 15 Minutes

Group membership claims

Attesters issue attestations from claims about group membership that are made by users. Groups must be available to the attester.
Group membership claims
Technically, a user claim consist of:
  • A targeted available group identifier ("I own an account that's part of the 'ENS DAO voters' group")
  • A claimed value ("My account has a value of >3; I voted more than 3 times")
  • (Optional) Some arbitrary data ("The group of 'ENS DAO voters' was generated on June 12th, 2022")

Group Generation

Sismo has built an off-chain infrastructure that periodically generates off-chain groups. Groups are bi-dimensional. These off-chain groups are reusable, they can be used to make available groups for several attesters.
The off-chain group of ENS DAO Voters can be made available to several on-chain attesters
Group generation
Every off-chain group has a name and a generation timestamp.
Groups can be combined by creating unions, intersections, and more complex operations. More on groups.
Find the list of all group generators in the Sismo Hub Repository.
We can encode some hashed properties in the available group identifiers such as availableGroupIndex = hash(groupIndex, generationTimestamp).
Copy link
On this page
Group membership claims
Group Generation