Addresses in Penumbra are diversified payment addresses as in Zcash Sapling but with an additional key for FMD support. For each spend key, there are many possible diversified payment addresses, all of which share viewing keys. Each address consists of three components:
- a diversifier , an 11 byte random number
- a transmission key , a point on the
- a compact flag key , a point on the
The diversifier is an 11 byte random number. From we compute a diversified basepoint :
The function is Group Hash which produces a point on the
decaf377 curve that we use as a generator. Every diversifier will produce a valid generator.
Next we derive the transmission key by multiplying the diversified basepoint by the incoming viewing key :