Applied Zcash

Basic

Watch-only keys

A server that receives payments needs a viewing key only. The viewing key shows the payments and makes new addresses. The spending key stays offline.

Use

Mechanism

seed ──ZIP 32──→ spending key ──→ full viewing key ──→ incoming viewing key
                  spend             see in and out        see in
                                    make addresses        make addresses

Each key comes from the key on its left. The derivation goes in one direction only. Thus, each step removes a power:

KeySpendSee payments inSee payments outMake addresses
Spending keyYesYesYesYes
Full viewing key (UFVK)NoYesYesYes
Incoming viewing key (UIVK)NoYesNoYes

ZIP 316 encodes a viewing key as a unified key, like a unified address. A UFVK starts with uview1. A UIVK starts with uivk1. On Testnet, the prefixes end in test1.

Select the smallest key for each task:

  1. Keep the seed and the spending key in an offline wallet or a hardware wallet.
  2. Give the shop server the UIVK. The server makes addresses and finds payments.
  3. Give an auditor the UFVK. The auditor also sees the payments out of the account.

Limits

Demo: one seed, three keys

The demo uses the orchard and zcash_address crates, compiled to WebAssembly. It derives the keys of account 0 on Testnet from the seed. It then makes address 0 two times: from the spending key, and from the UIVK only. The first seed is the seed of the demo shop on the other basics pages.

WARNING: Type only demo seeds here. A seed gives full control of its funds. Keep real seeds in a wallet.

Keys

The WASM module is loading.