Back to projects

Miden-Zcash

Zcash-Miden wallet, 2 Network same wallet

$500
Total awarded
Miden-Zcash
Ayush
Builder
TypeScript

Awards

The problem it solves

Unified wallet experience

Users need separate wallets and keys for Miden and Zcash, adding friction and security risk.

Enables Miden accounts to sign Zcash transactions directly in the Miden Browser Wallet. Zcash keys are derived from Miden private keys using HKDF and BIP32, so users can:

  • Send and receive Zcash using their existing Miden account
  • Avoid managing separate Zcash keys
  • Sign transparent and shielded (Sapling) transactions from one interface

Privacy-preserving transaction auditing

Shielded transactions are private, making auditing difficult.

A client-side block explorer lets users decrypt and view their own shielded transactions using viewing keys. All decryption happens in the browser—transaction data never leaves the device. Users can:

  • View their complete shielded transaction history
  • Audit private transactions without compromising privacy

Use cases

  • Miden users who want Zcash functionality without additional wallet setup
  • Users who need to audit shielded transactions for compliance
  • Developers building applications requiring both Miden and Zcash capabilities
  • This reduces complexity, improves security through unified key management, and enables private transaction auditing without sacrificing privacy.

Challenges we ran into

Miden private key export and security

The Miden wallet requires user confirmation to export private keys. We needed to:

  • Request keys only when needed for Zcash operations
  • Clear keys from memory after use
  • Handle cases where users deny key export

So, Implemented MidenKeyBridge to request keys on-demand, cache derived Zcash keys (not Miden keys), and zero out private keys immediately after derivation.

Key derivation integration

  • Deriving Zcash keys from Miden keys required:
  • Ensuring deterministic derivation across sessions
  • Handling different Miden account formats
  • Maintaining network separation (testnet vs mainnet)
  • Solution: Used HKDF-SHA256 with network as a domain separator, and standardized the derivation path to ensure consistency.

Wallet integration

Integrating Zcash into the existing Miden wallet UI required:

Adding Zcash functionality without disrupting existing flows

  • Managing state between Miden and Zcash modules
  • Handling account switching

So, Created an integration layer that initializes Zcash when needed and syncs with Miden account changes.

Gallery