Transaction Lifecycle
Encrypted Balance Claim
Protocol for claiming encrypted balances using nullifier hashes, claim linkers, and zero-knowledge proofs
Protocol Description
A claim transaction publishes a nullifier hash , a claim linker hash , and a ZK-proof .
Nullifier Hash
The nullifier hash prevents double-spending. It is derived from the secret nullifier of the commitment being spent.
Nullifier Properties
- Double-Spend Prevention: Ensures each commitment can only be spent once
- Secret-Based: Derived from the private nullifier
- Public Verification: Can be publicly verified without revealing the nullifier
- Uniqueness: Each commitment has a unique nullifier
Claim Linker Hash
The claim linker hash allows a viewer with the claim's ITK to link the claim action to the specific commitment that was spent.
Linker Components
- ITK: Individual Transaction Key for claim
- Commitment Index: (the index/ID of the commitment being spent)
- Purpose: Enables authorized viewers to link claims to specific commitments
Claim Statement
The ZK-SNARK proof attests that the prover knows a private witness for a set of public inputs.
Public Inputs
- The Merkle tree root
- The nullifier hash
- The claim linker hash
- The on-chain commitment to the Umbra MVK
- The claim
Private Witness
The secret details of the commitment being spent:
- - commitment secrets and Merkle proof path
- The corresponding Umbra secret key
- The Umbra MVK
Proof Demonstrates
- Ownership: The prover knows the secrets for a valid commitment at index in the Merkle tree
- Nullifier Correctness: The public corresponds to the secret nullifier
- MVK Knowledge: The public is a valid commitment to the private MVK,
- ITK Derivation: The key was correctly derived from and the public claim
- Linker Integrity: The public claim linker hash was correctly computed using the derived and the private commitment index
Security Analysis
Security Proof: Claim Security
Assumptions: The ZK-SNARK system is zero-knowledge and sound; the smart contract correctly enforces nullifier uniqueness.
Argument:
- Anonymity: The zero-knowledge property of ensures the proof reveals no information about which specific commitment is being spent.
- Double-Spend Prevention: The soundness of the proof ensures a user must reveal the correct for the commitment they are spending. The contract will reject any previously seen .
- Linker Privacy & Integrity: The claim linker is a PRF output and appears random. The soundness of the proof ensures that the public is correctly tied to the specific, confidential commitment index being spent.
Claim Process
Prerequisites
- MVK Registration: The Umbra MVK must be registered on-chain
- Valid Commitment: Must have a valid commitment in the Merkle tree
- Merkle Proof: Must have a valid Merkle proof path to the commitment
Transaction Components
- Nullifier Hash: Public proof of spending authorization
- Claim Linker: Links claim to specific commitment (for authorized viewers)
- ZK Proof: Proves ownership and validity without revealing secrets
- Merkle Proof: Proves commitment exists in the tree
On-Chain Verification
- Nullifier Uniqueness: Contract checks that hasn't been used before
- Proof Validity: Verifies the ZK-SNARK proof
- Merkle Tree: Validates the Merkle proof path
- MVK Commitment: Verifies the MVK commitment matches
Properties
Anonymity Properties
- Unlinkable: Claims cannot be linked to deposits without the ITK
- Zero-Knowledge: Proof reveals no private information
- Random Appearance: Linker hash appears random to observers
- Selective Disclosure: Only authorized parties can link transactions
Security Properties
- Double-Spend Prevention: Nullifier system prevents double-spending
- Ownership Proof: ZK proof proves ownership without revealing secrets
- Integrity: Ensures claim corresponds to valid commitment
- Binding: Commits to specific commitment index privately
Compliance Properties
- Audit Trail: Provides cryptographic audit trail for authorized parties
- Regulatory Support: Enables compliance with regulatory requirements
- Selective Disclosure: Allows disclosure to authorized entities
- Transaction Monitoring: Supports transaction monitoring capabilities