🕵️ZK / Privacy Preservation
While all badge collections on the BitBadges blockchain are public, the system provides several features and methods to preserve privacy in various contexts. This document outlines these privacy-preserving features and their applications.
By leveraging these privacy-preserving features, you can create systems that respect user privacy while still benefiting from the transparency and immutability of the BitBadges blockchain. Always consider the specific privacy requirements of your use case and implement the most appropriate combination of these features.
Attestations
Attestations are an off-chain feature that allows issuers to cryptographically sign messages, store them via BitBadges or self-host, and generate proofs of their validity.
Key Points:
Primarily used for credentials
Issuer generates and distributes credentials
Holders can generate proofs of validity for verifiers
Zero trust involved in the verification process
Proof of Knowledge for Approval
Certain secrets can be configured to perform on-chain actions:
Solve a zero-knowledge proof for approval
Insert a secret code for approval
Natively supported actions: ZK Proofs, codes, etc.
Custom implementations possible with CosmWasm
Privatizing Core Details
While some details are always public on the blockchain, you can configure them to minimize information leakage.
Blank Metadata
Create a collection with generic, placeholder metadata
Balances remain public, but the collection's purpose is obscured
One-Time Use Only Addresses
Create/issue collections using unique, one-time use burner addresses
Receive badges with unique, one-time use burner addresses not linked to other activities
Gated / Hidden Balances
Use "Private" or "None" balances standard (balance type = "Non-Public")
Allows secret definition of badge ownership
Public information: metadata, etc.
Ownership information: dependent on the issuer
Zero Knowledge Proof of Ownership
Prove criteria fulfillment without revealing identity:
Agree on a snapshot of collection balances or address list between prover and verifier
Prover demonstrates ownership of a private key for an address in the snapshot
Prover's identity remains concealed
Example Implementation
For a ZKP example proving address membership in a set of Ethereum addresses, see:
addr_membership.circom
pubkey_membership.circom
Available at: https://github.com/personaelabs/spartan-ecdsa
Last updated