Zcash is a crypto-currency that uses complex and cutting edge cryprographic protocols along with a widely distributed network of computers to encrypt transactions so that third parties can not see who is sending, who is receiving, or even know the amount of Zcash that was sent.
Unlike any other crypo-currency, Zcash has a unique method of writing transactions on the blockchain by utilizing two different types of addresses:
- Transparent (T addresses) work just like Bitcoin; the transaction details can be seen by anyone on the public blockchain.
- Shielded (Z addresses) are what makes Zcash special. You can send and receive Zcash privately without the details being accessible by 3rd parties. Only you and the person receiving the funds will know.
So how is Zcash able to use Shielded addresses to write the transaction details onto the blockchain without anyone knowing the details? By using Zero Knowledge Proofs; I’ll let Zcash Company explain:
“Zero knowledge proofs are a scientific breakthrough in the field of cryptography: they allow you to prove knowledge of some facts about hidden information without revealing that information. The property of allowing both verifiability and privacy of data makes for a strong use case in all kinds of transactions, and we’re integrating this concept into a block chain for encrypting the sender address, the recipient address, and the amount. A block chain that encrypts transaction data (making it private) and lacks zero-knowledge proofs also lacks the assurance that all the transactions are valid. This is because the nodes in the network can’t determine whether the sender really had that money or whether they previously sent it to someone else, or never had it in the first place. The encrypted data becomes unverifiable by network nodes.
In Zcash, we use a particular type of zero-knowledge proof called zk-SNARKs (or “zero-knowledge succinct non-interactive arguments of knowledge”). Within a Zcash transaction, there may exist a string of data that the sender of a transaction provides –the “zero-knowledge proof”– along with the encrypted transaction data which proves properties of the encrypted data cryptographically, including that the sender couldn’t have generated that string unless they had ownership over the spending key and unless the input and output values are equal. The proof also guarantees creation of a unique nullifier which is used to mark tokens as spent, when they are, in fact spent. This allows for verification that the transaction is valid, while preserving privacy of the transaction details.”
-From the Zcash FAQ page.
The official Zcash 1.0 User guide at https://github.com/zcash/zcash/wiki/1.0-User-Guide is a great place to jump in and get familiar with running Zcash. The Zcash client provided by Zcash company is a complete package that will let you run a full Node, Mine with your CPU (if you choose), and also has a built in Wallet.
If you are interested in a lot more technical details about how the math behind Zcash works you can have a look at he the Protocol Spec , stop by the Official Zcash Website , and drop by our Developers page.
You can dive deeper into Zcash, Zero Knowledge Proofs and zkSNARKS by watching the videos below.
Zcash started life back in 2013 as a project known as Zerocoin. The Zerocoin project was the work of Matthew Green, Ian Miers, Christina Garman, Aviel D. Rubin who were at The Johns Hopkins University Department of Computer Science, Baltimore, USA.
The Zerocoin project was designed to address the biggest problem with Bitcoin: its lack of privacy.
Matthew, Ian, Christina, and Aviel’s Zerocoin project paper is summarized as this: “Bitcoin is the ﬁrst e-cash system to see widespread adoption. While Bitcoin offers the potential for new types of ﬁnancial interaction, it has signiﬁcant limitations regarding privacy. Speciﬁcally, because the Bitcoin transaction log is completely public, users’ privacy is protected only through the use of pseudonyms. In this paper we propose Zerocoin, a cryptographic extension to Bitcoin that augments the protocol to allow for fully anonymous currency transactions. Our system uses standard cryptographic assumptions and does not introduce new trusted parties or otherwise change the security model of Bitcoin. We detail Zerocoin’s cryptographic construction, its integration into Bitcoin, and examine its performance both in terms of computation and impact on the Bitcoin protocol.” (1)
This original Zerocoin project was covered by the Press as an “Add-On” to Bitcoin: “Called Zerocoin, it’s a cryptographic add-on to Bitcoin that allows for transactions which cannot be linked together. The key is that it does this without introducing any new centralised elements into the network or using laundering, whereby coins are spent through intermediaries to hide the root purchaser’s wallet address.” (2) and was heralded as a solution to “Fulfill the dream of truly Private payments” which “If adopted by enough of the Bitcoin network, Zerocoin’s inventors believe it could become a fundamental upgrade to Bitcoin’s code, integrating itself into the currency and solving what many see as serious privacy flaws in Bitcoin’s current implementation” (3)
This work then lead to a collaboration in 2014 between the original Zerocoin researchers at John Hopkins University and cryptographers at MIT, The Technion, and Tel Aviv University who together were able to improve upon Zerocoins design by making it more efficient and more anonymous.
“With the new Zerocash protocol, unlike the old Zerocoin protocol, users can make direct payments to each other with a vastly more efficient cryptographic protocol that also hides the amount of the payment, not just its origin.” (4) This new protocol by Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer, and Madars Virza produced a coin which would no longer be an “Add-On” to the original Bitcoin but instead would be a new full-fledged digital currency known as Zerocash.
It is not known exactly when the Zerocash team began collaborating with Zooko and his team from Least Authority to transition Zerocash into Zcash but the very first issue listed on the Zcash Github dates to November 2014 (5) and Zookos first public mention of the collaboration publicly is in May of 2015. (6)
Zooko Wilcox, the entire team from Zerocash, and Engineers: Nathan Wilcox, Daira Hopwood, Sean Bowe, Taylor Hornby, Jack Grigg and Maureen Walsh along with a set of Advisors: Gavin Anderesen, Vitalik Buterin, Andrew Miller, Arthur Breitman, and Joseph Bonnaeu (7) worked diligently to bring out the first public Version (1.0) of Zcash.
The Teams successfully launched Zcash on October 28, 2016
(5) https://github.com/zcash/zcash/issues/1 (11/25/14)
(6) https://leastauthority.com/blog/a_bug_in_libsnark.html (5/16/15)
-History copyright 2017 Gibson Ashpool