Zcash: Anonymous transactions solved via Zero-Knowledge proofs
Zcash is a powerful cryptocurrency that conceals both the sender and receiver. In addition to concealing both parties in the transaction, transaction details including the amount sent are completely concealed. This level of anonymity is possible because Zcash doesn’t just include encryption, it adds Zero-knowledge proofs to prove a transaction as valid while maintaining concealment.
Zcash began as a fork of Bitcoin. To many observers, Bitcoin initially seemed to be anonymous. However, that anonymity was put to the test and came up largely lacking. Although it helps to use multiple BTC addresses, there are many issues that come up with Bitcoin’s technology that don’t truly secure concealment for the parties in the transaction. The cryptocurrency community got to work to solve for these issues and came up with a number of approaches and options to add privacy and security to a blockchain.
A few ideas circulated but they all included some degree of flaw. One approach was to restrict read access to the blockchain- this resulted in removing the world from seeing what was on the blockchain, while simultaneously allowing for all blockchain users to see all details. Another way to add privacy and security to the blockchain would be to use confidential transactions. Confidential transactions conceal the amount being transferred. However, this comes up short in utility because additively homomorphic commitments (confidential transactions) do not conceal the sender or recipient.
In order to improve on this limitation, you can consider using one-time use public keys. These keys are only for participants and not for amounts. Using one-time use public keys also creates susceptibility to de-anonymization attacks. A final approach is to use ring signatures. Ring signatures do not conceal the recipient or amount, but they do conceal the sender.
A better approach is required in order to achieve full security in addition to privacy, however, it is very difficult to do both of these items at the same time. Enter Zcash’s Zero-Knowledge proofs. As mentioned earlier, Zero-Knowledge proofs overcome the shortcomings of these other approaches because they are cryptographically secure and they conceal both recipients in a transaction, as well as details (amounts).
Although there are many ways to add elements of security and privacy to blockchains, this often leads to compromise. Zcash avoids compromising security at the expense of privacy and vice versa. Zcash achieves an extremely secure blockchain with uncompromised anonymity via Zero-Knowledge proofs. The Zcash team worked extremely hard to solve the security/privacy challenge and built an incredible open source coin in the process.
There is an item worth considering with Zcash and that is the problem created via trusted setup. Trusted setup is one issue associated with Zcash that we will address in a later article. In short, zkSNARKs are a cryptographic proof that quickly and efficiently verify a transaction. They require a one time setup, and you have to trust that when that one time setup took place, the private keys were destroyed. If those keys are still in existence (highly unlikely) then the entire Zcash blockchain is at risk. The team behind the Zcash trusted setup took many steps to assure that you can in fact “trust” the setup, however, some view blockchain technology as an incredible advancement because as Satoshi Nakamoto designed it, trust is removed from the equation, and Zcash puts trust back in during that set up stage.