๐Ÿ‘ฉโ€๐Ÿ’ป
Galactica Network Dev Documentation
  • ๐Ÿ“™Galactica Network Overview
  • ๐ŸงฌGalactica Concepts
    • โ›“๏ธBlockchain Base
    • ๐ŸงพZero-Knowledge KYC
      • Holder Commitment
      • DApp specific HumanID
      • Verification SBT
      • KYC Guardian
      • Galactica Investigation Module
      • Privacy Precautions
    • ๐ŸŒŸReputation
    • ๐Ÿ›‚Contingent Transactions
  • โš™๏ธGalactica Components
    • ๐ŸฆŠGalactica Snap for Metamask
    • ๐ŸŒณRoot Contracts
  • ๐Ÿ—๏ธBuilding a Galactica DApp
    • Example DApps
      • Compliant ERC20
      • Cypherbook
      • Compliant DEX
      • Sybil resistant airdrop
    • Front End
      • Guided Example
        • Connect to Galactica Snap
        • Prepare ZK proof generation
        • Generate and submit ZK proof
        • Handle Verification SBTs
      • Galactica Snap JSON-RPC API
    • Smart Contracts
    • Custom Zero Knowledge Disclosures
  • ๐Ÿ“Guardian Guide
    • Setup to become a Guardian
    • Create and issue ZK certificate
      • ๐ŸชชzkKYC (GIP-1)
      • Arbitrary ZK data certificate (GIP-2)
      • X/Twitter ZK certificate (GIP-3)
      • REY X/Twitter Score ZK certificate (GIP-4)
      • Decentralised Exchange (DEX) ZK certificate (GIP-5)
      • Centralised Exchange (CEX) ZK certificate (GIP-6)
      • Telegram ZK certificate (GIP-7)
  • โ›๏ธValidator Guide
    • ๐Ÿ”งInstallation
    • ๐Ÿ”—Become a Validator
    • ๐Ÿš€galacticad CLI Usage Cheat Sheet
    • ๐Ÿ”’Security Best Practices
  • ๐ŸงชTestNet: Reticulum
    • Release Notes
  • ๐ŸงชDevNet: Andromeda
    • Release Notes
  • ๐Ÿ“ŽChangelog
Powered by GitBook
On this page
  • Purpose
  • Technical Implementation
  • How to obtain it

Was this helpful?

  1. Galactica Concepts
  2. Zero-Knowledge KYC

Holder Commitment

A cryptographic commitment by a user to link a zkCert to an account.

PreviousZero-Knowledge KYCNextDApp specific HumanID

Last updated 7 months ago

Was this helpful?

Purpose

ZkCertificates, such as ZkKYC, belong to individual people. Only they can use it on-chain with the blockchain account they control. Guardians who issued a ZkCertificate should not be able to track this usage to preserve the user's privacy.

The holder commitment is the field in each ZkCertificate that implements this purpose. It has the following properties:

  • Link ZkCertificate to an account owning it. Only this account can authorize using the ZkCertificate.

  • Cryptographically hide this link, so that on-chain activity can not be associated with personal data known by the guardian issuing it.

  • Ensure that certificate correctness is verifiable in a zero-knowledge circuit.

  • Be deterministic for recovery from a user's mnemonic phrase.

Technical Implementation

The holder commitment of an account is defined by

holderCommitment=poseidonHash(eddsaSignature(poseidonHash(publicKey)))holderCommitment = poseidonHash( eddsaSignature ( poseidonHash (publicKey)))holderCommitment=poseidonHash(eddsaSignature(poseidonHash(publicKey)))

The result is a 256-bit unsigned integer in the Poseidon modulo field. The public key and the private key used for signing are generated according to the EdDSA standard.

How to obtain it

Users can generate the holder commitment in the Galactica Snap for Metamask. It holds the account's keys which are derived from the users main seed phrase, the one from setting up Metamask, not from imported (hardware-) wallets. We are going to add an option to generate it from a hardware wallet in the future when is available in Metamask.

After generating the holder commitment, the Snap also attaches a public ECDSA encryption key to the resulting file. We call this file, which contains both an encryption key and the holder commitment as The Holder Commitment File. User sends the holder commitment file to the guardian, so the latter can encrypt the generated zkCert with the provided encryption key.

๐Ÿงฌ
๐Ÿงพ
this feature