Zcash is a Bitcoin fork that is focused on privacy.
History of Zcash started with Zerocoin. Zerocoin’s goal was to bring private payments to the Bitcoin. Zerocash, the successor of Zerocoin, extends it both in terms of privacy and efficiency. Zcash is based on Zerocash, and it has some improvements.
Zcash allows sending coins publicly or privately. When sending privately, a user can hide the sender’s address, the recipient’s address, and the number of coins sent.
In Zcash, there are private and public addresses. Public address works like a normal address. Knowing a public address, one can view its balance and a history of all transactions made by this address. When public address owner will make a transaction, it will become visible on the ledger to everyone.
Private addresses reveal no information to the public at all. Their balances are hidden, so is the history of transactions made by this address. Private addresses are also invisible on the ledger.
As both sender and receiver addresses can be either public or private, there are 4 types of transactions. When public address sends coins to another public address, it is a “normal”, public transaction. When a private address sends coins to another private address, it is a private transaction, where nothing except the anount of fees is visible on the blockchain. When a public address sends coins to a private address, it is a shielding transaction. When a private address sends coins to a public address, it is a deshielding transaction.
In fact, each transaction can contain any amount of inputs and outputs, and each input and each output can be either private or public. For example, a transaction can contain 3 public and 2 private inputs, and 4 private outputs. In these case, 3 public addresses and their sending value will be publicly visible, but not the total sending value and the destination.
Even though private addresses hide all the information about them, other network participants can still tell whether they are valid or not. Zcash achieves that with zero-knowledge proofs. In general, using ZK proof, one can verify the property of something without being exposed to it. In Zcash, nodes can verify that an address has coins and is valid to send them without being able to see the balance of that address or the recipient of the money.
To prevent double spending of transparent, or public, addresses, there is a UTXO-based model, similar to Bitcoin. If the address is in UTXO, it can be spent. To prevent double spending of shielded, or private, addresses, Zcash uses nullifiers. A nullified transaction is like a slaked stamp. If the nullifier is publicly revealed for a given address, that coins on this address are considered spent.
Zcash users can also include short messages in transactions. These messages are encrypted and invisible to the public. Only the sender, receiver and those who have the view key can see the content of the message. It can be used to store refund address, the purpose of payment, and other sensitive information.
- September 9, 2016: First (beta) release on Github. github.com
- October 28, 2016: Network launch. blog.z.cash
- March 17, 2017: Announcement of Zcash Foundation. blog.z.cash
- May 22, 2017: Partnership with J.P.Morgan. The goal of the partnership is to enhance the privacy of Quorum, enterprise-ready distributed ledger. blog.z.cash