# zerocash notes, and highlights

## zerocoin drawbacks
zerocoin isn't used in daily transaction due to performance limitations, but rather for anonymization, or laundrying coins through decentralized mix. performance bottleneck is that redeeming zerocoins requires double-discrete-logarithm proofs of knowledge which have size that exceeds 45kb, and 450ms to verify(at the 128-bit security level), it uses fixed denominations, can't pay in zerocoin directly, provides anonymity for the original address only.

# minting
minting coin $c := ((a_{pk}, PK_{enc}), v, \rho, r, s, cm)$ is:
$$tx_{mint}:=(v,k,s,cm)$$
$$cm :=COMM_{s}(v||k)$$
$$a_{pk} :=PRF_{a_{sk}}^{addr}(0)$$
$$k:=COMM_{r}(a_{pk}||\rho)$$

# spending
Spending the coin c:
$$tx_{spend}:=(cm,sn,\pi)$$
$$sn:=PRF_{a_{sk}}^{sn}(\rho)$$

### pouring
pouring $coin^{old}$ into $coin_1^{new}$, $coin_2^{new}$. with $v^{old}=v_{pub}+v_1^{new}+v_2^{new}$ as follows:
$$tx_{pour}:=(rt,sn^{old},cm_1^{new},cm_2^{new},\pi_{pour}, enc_{pk_{enc,1}^{new}}(C_1),enc_{pk_{enc,2}^{new}}(C_2)$$
$$C_i=(v_i^{new},\rho_i^{new},r_i^{new}, s_i^{new})$$
$\pi_{pour}$ is the pouring sk-snark proof of the spending/pouring process.
address for each participant is the pair $(addr_{pk}, addr_{sk})$, $addr_{pk}=(a_{enc},pk_{enc})$, $addr_{sk}=(a_{sk}, sk_{enc})$
