Master Viewing Key
252-bit integer enabling linker creation for ZK proofs and transaction auditability without granting spending authority
Overview
The Master Viewing Key (MVK) serves two critical functions in Umbra:
- Linker Creation - Required to generate the linkers necessary for valid ZK proofs when spending UTXOs
- Transaction Decryption - Enables decryption of transaction history for auditability
The MVK provides view-only access-an auditor with the MVK can see transaction history but cannot spend any funds. However, without the MVK, even the owner cannot spend their UTXOs because linker creation requires the MVK.
Technical Specification
| Property | Value |
|---|---|
| Type | Integer |
| Bit Length | Strictly 252 bits |
| Field | Must fit within BN254 scalar field |
| Constraint | Exactly 252 bits (not 253, not 256) |
Why 252 Bits?
The 252-bit constraint is an implementation detail required by the ZK circuit design.
Inside the circuit, we perform a limbwise representation equality check to verify the MVK. This check requires the value to be represented in a specific number of limbs (smaller chunks), and the 252-bit constraint ensures:
- The value fits cleanly into the limb structure
- No overflow occurs during limbwise comparisons
- The equality check can be performed efficiently within the circuit
This is a practical constraint arising from how large integers are handled inside ZK circuits on the BN254 field.
Purpose
Linker Creation for Spending
The MVK is essential for creating linkers - encrypted metadata attached to transactions. Without valid linkers, ZK proof generation fails and spending is impossible.
This means the MVK is not just for viewing - it's required for spending. Even if you have the Shielded Spending Key, you cannot spend UTXOs without the MVK.
Transaction Viewing Key Derivation
The MVK enables granular auditability through a hierarchical derivation of Transaction Viewing Keys (TVKs). This allows you to share viewing access for specific time periods without exposing your entire transaction history.
Derivation Structure
TVKs are derived through a chain of hashes, where each level takes the previous key and hashes it with a time component:
Hash Function
The TVK derivation uses the Poseidon hash function over the BN254 scalar field with the S-box exponent as the non-linear component:
Poseidon is chosen for its:
| Property | Benefit |
|---|---|
| ZK-Friendly | Efficient to verify inside zero-knowledge circuits |
| Algebraic Structure | Native to the BN254 field used throughout Umbra |
| Low Constraint Count | Minimal proving overhead |
| S-box | Provides sufficient non-linearity while remaining efficient |
Derivation Formula
The derivation follows a recursive pattern where each time-scoped key is derived from its parent using Poseidon:
Level 1 - Yearly TVK:
Level 2 - Monthly TVK:
Level 3 - Daily TVK:
Level 4 - Hourly TVK:
Level 5 - Minute TVK:
Level 6 - Second TVK:
Example: Deriving a Monthly TVK for March 2025
To derive the TVK for March 2025:
- Start with MVK: Your root Master Viewing Key
- Derive Yearly TVK:
- Derive Monthly TVK:
The resulting can decrypt all transactions from March 2025, but cannot decrypt:
- Transactions from any other month in 2025
- Transactions from any other year
- The MVK itself (hash functions are one-way)
Hierarchical Properties
| Property | Description |
|---|---|
| One-Way | Given a TVK, you cannot derive its parent (MVK or higher-level TVK) |
| Downward Derivation | Given a TVK, you can derive all its children (more granular time scopes) |
| Time-Scoped Access | Each TVK grants access only to its specific time period |
| Non-Overlapping | TVKs for different periods cannot derive each other |
Why This Matters
Scenario 1: Tax Auditor
You need to provide transaction records for 2024 to a tax auditor:
- Derive
- Share with the auditor
- Auditor can see all 2024 transactions
- Auditor cannot see 2023, 2025, or any other year
- Auditor cannot derive your MVK
Scenario 2: Monthly Reporting
A compliance officer needs access to January 2025 only:
- Derive
- Derive
- Share with the officer
- Officer can see all January 2025 transactions
- Officer can also derive more granular keys (daily, hourly) for January 2025
- Officer cannot see February 2025 or any other month
Scenario 3: Real-Time Monitoring
A trading desk needs second-by-second visibility for a specific hour:
- Derive the full chain down to the hourly TVK
- Share the hourly TVK
- Recipient can derive minute and second TVKs within that hour
- Cannot see any other hour
Derivation Diagram
Security Properties of TVK Derivation
| Security Property | Guarantee |
|---|---|
| Pre-image Resistance | Cannot derive parent TVK or MVK from child TVK |
| Collision Resistance | Different time inputs produce different TVKs |
| Forward Security | Compromising a TVK doesn't compromise past periods (siblings) |
| Scope Limitation | Each TVK is cryptographically bound to its time scope |
Auditor Delegation
Users can share viewing access at various granularity levels:
| Shared Key | Access Granted | Can Derive | Revocable? |
|---|---|---|---|
| Root MVK | All transactions, all time | All TVKs | No |
| Yearly TVK | All transactions in that year | Monthly, Daily, etc. for that year | No |
| Monthly TVK | All transactions in that month | Daily, Hourly, etc. for that month | No |
| Daily TVK | All transactions in that day | Hourly, Minute, Second for that day | No |
| Hourly TVK | All transactions in that hour | Minute, Second for that hour | No |
Important: Once a key is shared, it cannot be revoked. The recipient permanently has access to that time scope. Share the minimum scope necessary.
Non-Repudiation
The inability to revoke shared keys provides non-repudiation:
- If you share a TVK with an auditor, you cannot later deny having shared it
- The auditor can prove they received legitimate viewing access
- This creates accountability for both parties
Key Generation
The Master Viewing Key can be generated randomly or derived deterministically from a master seed. Both approaches are valid as long as the key is exactly 252 bits and cryptographically secure.
| Method | Description |
|---|---|
| Random | Sample 252 bits from a CSPRNG |
| Deterministic |
All Umbra keys (MVK, Shielded Spending Key, L1 Keypair, and X25519 Keypair) can either be derived from a single master seed or managed as fully independent keys.
MPC Integration
The MVK is bound into the User Commitment Tree-the same tree-based structure described previously that cryptographically binds the L1 Key, Shielded Spending Key, and MVK together into a single commitment.
When registering the User Commitment on-chain, the user also registers a Rescue Cipher encrypted version of the MVK. This encrypted MVK is stored alongside the commitment and provides the Arcium MPC network with access to the viewing key for regulatory compliance purposes.
This design ensures:
| Property | How It's Achieved |
|---|---|
| User Sovereignty | User controls the plaintext MVK |
| Privacy by Default | Only encrypted MVK is on-chain |
| Regulatory Compliance | MPC can decrypt when legally required |
| Cryptographic Binding | MVK is bound to identity via User Commitment |
Summary
| Aspect | Details |
|---|---|
| Type | 252-bit Integer |
| Purpose | Linker creation + transaction decryption |
| Spending Authority | Required for spending (creates linkers) |
| TVK Derivation | Recursive hashing with Year → Month → Day → Hour → Minute → Second |
| Loss Impact | Permanent, irrecoverable fund loss (cannot create linkers) |
| Compromise Impact | Full transaction history exposure (no direct fund theft) |
| Auditor Delegation | Share TVKs with specific time scopes |
| Revocation | Not possible (non-repudiation) |