Tezos_sapling.Core_sigSourceReference specification is version 2020.1.2 https://github.com/zcash/zips/blob/master/protocol/sapling.pdf
Each instance of the Sapling protocol should be identified by a unique string identifier which is used as anti-replay. It should typically contain a chain identifier and the identifier of a smart-contract. *
Spending keys allow to spend and derive viewing keys. It contains key material and information to derive deterministically more spending keys using the zip-32 standard (equivalent of bip-32 for ZCash). See spec section 3.1 *
Viewing keys allow to see incoming and outgoing transactions without giving the ability to spend. Stored in the zip-32 format. *
A Diffie-Hellman key exchange is done between the payer and the recipient to encrypt the ciphertext. This can be done off or on chain. *