Sismo Docs
Search…
⌃K
Links

Prove with Sismo

Frictionless and privacy-preserving logins
Sismo’s ultimate aim is to facilitate frictionless and privacy-preserving logins across web3 via Prove with Sismo.
Whether enhancing existing login infrastructures or accessing applications with one-time logins, Prove with Sismo gives users a seamless UX when proving facts about their identities. With the click of a button, users can leverage the accounts imported into their Sismo Vault to access particular applications or services.
Sign-In with Ethereum (SIWE) gives users sovereign data ownership yet fails to address privacy concerns. With ZK Badges resembling privacy-preserving web3 cookies, Prove with Sismo ensures that users only share necessary information instead of their entire web3 history.
As Sismo is an entirely modular protocol, it can be integrated into any application. In this regard, Prove with Sismo can become the new standard for decentralized, frictionless, and privacy-preserving logins.
You can see Prove with Sismo in action at zkdrop.io

On-chain apps

Prove with Sismo can be integrated with on-chain applications to provide users with a seamless login experience—a process made simple with the Sismo Solidity library. For example, users can access gated services such as zkdrop.io via an integrated ‘Prove with Sismo’ button.

Single transaction flow

zkdrop.io facilitates privacy-preserving airdrops on-chain. Users can connect to the app and prove their eligibility by minting a ZK Badge and receiving an airdrop in a single transaction.
The single transaction flow integrates the Sismo Solidity Library. You can find zkdrop.io's contract as an example here.
In this flow, users are redirected to the Sismo app after clicking ‘Prove with Sismo’. However, instead of minting the Badge, they only generate the proofs necessary to do so.
After returning to the gated application, they make a transaction to submit the required proof. This proof is then forwarded to the relevant Sismo attester—simultaneously minting a Badge and granting access to the airdrop.
The single transaction flow provides a frictionless UX—benefitting both users and the application itself. It is best demonstrated with the Mergooor Pass—an NFT that allows Ethereum Merge contributors to access upcoming web3 events. After connecting to the app, users make a single transaction to simultaneously mint a ZK Badge proving their eligibility, and claim a Mergooor Pass.

Dual transaction flow

Alternatively, users can access gated on-chain applications with two transactions. When clicking ‘Prove with Sismo’, the user is redirected to the Sismo app, where they mint a Badge. After the user receives the Badge from the relevant attester, they can send an additional transaction to access the Badge-gated on-chain application.
The dual transaction flow is easier to integrate from a developer's perspective yet requires additional input from the user. However, both of the flows described provide a frictionless UX for on-chain applications.

Off-chain apps

In addition to on-chain applications, Prove with Sismo can be integrated with off-chain applications. For example, a web3 community could have an off-chain merch store only accessible to verified community members.

Enhanced SIWE flow

If an off-chain application has already integrated Sign-In with Ethereum (SIWE), it can easily enhance its existing login infrastructure by integrating Prove with Sismo.
When clicking ‘Prove with Sismo,’ users are redirected to the Sismo app—where they mint the required Badge. Once the off-chain app has verified ownership of the newly minted Badge, it grants access to the gated service.

No Badge flow

Off-chain applications can also accept zero-knowledge proofs directly instead of the Badges that represent them. In this flow, the user clicks the ‘Prove with Sismo’ button and generates a ZKP after being redirected to Sismo. This ZKP is then accepted as proof by the off-chain application’s backend.
Namely, the off-chain application must integrate Sismo’s verifier code into its backend. If the app wants to limit its services to a single ZK proof, it must also store Sismo’s nullifier—which associates the user’s address with the proof in question.
Both of the outlined flows provide off-chain applications with a way to enhance privacy and UX for their users.