Sismo

AbstractSismo is a modular protocol issuing ZK Badges for reputation portability and aggregation.
Year
Link to the paperhttps://www.sismo.io/
Relevance scoreVery relevant
Quality scoreN/A
LabelsCentralized/permissionedImplementationsPossible tool in larger solution

Sismo is a protocol for the creation of zero-knowledge attestations. More specifically, a proof (zero-knowledge or not) is submitted by a user to an attester. The attester verifies the proof and certifies its validity (on a registry and by minting a soulbound token), so that other parties can trust the user’s claim without needing to formally verify the proof themselves.

As an example, Alice can prove that she voted in a DAO vote, without revealing what she voted for.

Built on four modular concepts:

  1. Groups of Accounts (Available Data): Data source for attestations
  1. Attesters (Smart Contracts): Issuers of attestations
    1. Verify Request
    1. Build Attestations
    1. Generate Attestations
  1. Attestations Registry (Smart Contract): Store of attestations
    1. Attestations Collection
    1. Registry Governance
  1. Badges (ERC1155): Non Transferrable Token (aka soulbound) representation of attestations

Let us explain each of the concepts in more detail.

Groups of accounts:

In this context, an account is a pair (account ID, value). Examples of groups:

Attesters issue attestations from claims about group membership that are made by users. (Example: I made more than 50 transactions on Ethereum before 2018)

How are groups generated?

Attesters:

Attesters are core smart contracts of the Sismo protocol. They are in charge of verifying user requests and issuing attestations.

Available groups: A group is said to be available for an attester when the attester has access to on-chain data in the specific format that it requires. This enables the attester to validate user claims.

User request: a user makes a claim about his belonging to a group. Then he requests (by sending his claim and a proof of his claim) an attestation from the attester, to be sent to a certain address (in form of an SBT)

What can proofs be in this context?

Remark: all the proofs implemented so far are Merkle proofs!

Once the proof submitted by the user is verified, the attester will build an attestation in the Attestation Registry.

Attestation registry:

The Attestations Registry is the main smart contract of the Sismo protocol; it's in charge of recording all attestations issued by authorized (by Sismo governance) issuers. Attestations are grouped into Collections.

The Attestations Registry is split into Attestations Collections. A collection bundles owners that share some historical or reputation characteristics.

Authorized issuers:

Badges

Badges are non-transferable (aka soulbound) ERC1155 tokens, received by a user after an attestation is issued in the Registry.

Remarks

We looked into Sismo in order to “get off-chain data on chain in a private and verifiable manner”. Analysis of Sismo’s approach:

In conclusion, proofs are trustless, but an honest group member may not be able to generate a proof under Sismo censorship or malfunction.

Another concern to point out is users selling zk-badges to accounts that they do not own. This concern has been pointed out by Evin McMullen from Disco during this talk.