Sismo Docs
  • Welcome to Sismo
    • What is Sismo?
  • Build with Sismo Connect
    • Overview
    • Installation
    • Sismo Connect Cheatsheet
    • Tutorials
      • Get Your appId - Create a Sismo Connect App
      • Onchain Tutorial (1/2): Code Your Airdrop Contract With Privately-Aggregated Data
      • Onchain Tutorial (2/2): Deploy Your Airdrop Contract
    • Technical Documentation
      • Sismo Connect Configuration
      • Auths
      • Claims
      • Signature
      • Packages
        • Sismo Connect Client: Request
        • Sismo Connect React: Request
        • Sismo Connect Server: Verify Offchain
        • Sismo Connect Solidity Library: Verify Onchain
    • FAQ
  • Data Groups
    • Overview
    • Tutorials
      • Factory Guide: Create a Data Group in 5 Minutes
      • Sismo Hub Guide: Create Data Groups Programmatically
      • Sismo Hub Guide: Add a Data Provider to the Sismo Factory
    • Sismo Hub
      • Sismo Hub Repository
        • Group Generators
        • Data Providers
        • Data Operators
        • Command Line Interface
      • Accounts Registry Tree
  • Data Vault
    • Overview
    • Vault Identifiers
    • Proving Schemes
      • Hydra-S1
      • Hydra-S2
    • Commitment Mapper
  • Resources
    • Deployed Contract Addresses
    • Sismo API
      • API Links
      • Query From a Client
      • Group
        • Get groups
        • Get group snapshots
      • Common Parameters
      • Advanced Filtering
      • Transaction
  • Links
    • Sismo Landing Page
    • Sismo Factory
    • Sismo App Store
    • Sismo Builder Resources
    • GitHub
    • Discord
    • Twitter
    • Blog
Powered by GitBook
On this page
  • Vault Identifiers
  • Hydra Proof Of Ownership
  • Optional Verifications
  1. Data Vault
  2. Proving Schemes

Hydra-S2

PreviousHydra-S1NextCommitment Mapper

Last updated 1 year ago

The is the second proving scheme in the Hydra family:

  • Hydra = using Hydra Delegated Proof of Ownership via the

  • S2 = single source, version 2: optional verifications and

The proving scheme expands on the and introduces the notion of a Vault Identifier while offering a modular way of creating ZK proofs.

Vault Identifiers

is a new notion introduced with the Hydra-S2 proving scheme. This VaultId is deterministically generated from a vaultSecret and an application identifier (appId) by taking the Poseidon hash of these two values.

This differs from the Proof Identifier used in the Hydra-S1 proving scheme, which functions as a nullifier—preventing the same proof from being used more than once. Meanwhile, a Vault Identifier functions as an anonymous app-specific identifier that can be utilized as an in-app user ID.

Hydra Proof Of Ownership

Hydra Proof of Ownership differs in the Hydra-S2 proving scheme as far as a new Commitment Mapper and new variable when creating commitments are being used. The secret used to generate the commitment for the trusted Commitment Mapper is now the hash of the Vault secret.

also changes in Hydra-S2 as far as a new and a new variable when creating commitments are being used. The secret used to generate the commitment for the trusted is now the hash of the Vault secret and the user secret instead of the user secret only.

Commitment=PoseidonHash(VaultSecret,AccountSecret);Commitment = PoseidonHash(VaultSecret, AccountSecret);Commitment=PoseidonHash(VaultSecret,AccountSecret);

To allow this, we created a new Commitment Mapper, and we ensured that a Data Source can only be added to a single Data Vault, as the commitment is now based on the Vault secret.

Optional Verifications

During the Hydra-S2 proving scheme, it is now optional to prove the following:

  • Any account ownership via Hydra Proof Of Ownership and the new commitment generation

  • Any Registry Tree or Account Tree Merkle Proof of inclusion

  • Any value held by a source of data (Ethereum address, web2 account, etc.)

Hydra-S2 also offers a modular way of generating ZK proofs. Therefore, while obliged users to prove that they own two accounts and that the source account was in a specific (itself in a specific ) with a specific value and checking a nullifier value, we can avoid checking specific constraints in the circuits.

Any generation

Any generation

Hydra-S2 ZK proving scheme
Commitment Mapper
Vault Identifier
Hydra-S1 proving scheme
VaultId
Hydra Proof of Ownership
Commitment Mapper
Commitment Mapper
Hydra-S1
Account Tree
Registry Tree
Vault Identifier
Proof Identifier