Deposit and Commitment Creation
Protocol for creating cryptographic commitments, linkers, and zero-knowledge proofs for deposit transactions
Protocol Description
A deposit transaction creates three primary on-chain artifacts: a cryptographic commitment , a cryptographic linker , and a zero-knowledge proof attesting to their consistency.
Commitment Structure
The commitment is a nested hash that binds the user to all public and private details of the deposit.
Commitment Components
- V, I: Version and index parameters
- Inner Hash:
- : Random secret for hiding
- : Nullifier for double-spend prevention
- : Recipient Umbra address (split)
- Public Keys: (depositor's Solana keys)
- Amount: Deposit amount
- Mint Keys: (token mint information)
- Timestamp: (year, month, day, hour, minute, second)
Deposit Linker Hash
The linker hash allows a viewer with the ITK to link a transaction to a recipient.
Linker Components
- ITK: Individual Transaction Key for deposit
- Recipient Address: (same as in commitment)
- Purpose: Enables authorized viewers to link deposits to recipients
Deposit Proof Statement
A ZK-SNARK proof is generated and submitted with each deposit. It proves knowledge of a private witness for a set of public inputs .
Private Witness
Consists only of the secret inputs:
- The Solana MVK
- The recipient Umbra public key
- The random secret
- The nullifier
Public Inputs
Consist of all other transaction parameters:
- The final commitment
- The linker hash
- The on-chain commitment to the MVK
- The timestamp
- The depositor's Solana public key
- The amount
- Other public parameters
Proof Demonstrates
- MVK Knowledge: The public is a valid commitment to the private MVK,
- ITK Derivation: The Individual Transaction Key was correctly derived from and the public
- Linker Integrity: The public linker hash was correctly computed using the derived and the recipient Umbra address
- Commitment Consistency: The public commitment was correctly computed using the same recipient Umbra address that was used to create the linker hash
Security Analysis
Security Proof: Deposit Security
Assumptions: Poseidon is a collision-resistant hash function; the ZK-SNARK system is zero-knowledge and sound.
Argument:
- Commitment Hiding/Binding: The inclusion of the random secret ensures is hiding. Collision resistance ensures it is binding.
- Linker Privacy: is a PRF output keyed by the secret . To an observer, it is indistinguishable from random noise.
- Deposit Integrity: The soundness of the ZK-SNARK guarantees that a malicious depositor cannot create a proof where the linker and commitment are for different recipient addresses.
Properties
Commitment Properties
- Hiding: Random secret prevents commitment revelation
- Binding: Collision resistance ensures commitment binding
- Comprehensive: Includes all transaction parameters
- Verifiable: Publicly verifiable without revealing secrets
Linker Properties
- Private: Only derivable by holders of the ITK
- Consistent: Uses same recipient address as commitment
- Unlinkable: Appears random without the ITK
- Authorized Access: Enables authorized transaction viewing
Proof Properties
- Zero-Knowledge: Reveals no private information
- Sound: Cannot prove false statements
- Consistency: Ensures linker and commitment match
- Verifiable: Publicly verifiable proof validity