As more and more people embraced Bitcoin and the amazing technology that makes it work, they have also discovered some of its most important pitfalls. One of them is the concept of a completely anonymous transaction. While Bitcoin is often thought of as “anonymous”, it is actually just a “pseudonym” as transactions for each Bitcoin address are tracked on the public blockchain. However, there are other cryptocurrencies that have been able to develop blockchains that ensure total confidentiality in their protocols. One of these cryptocurrencies is Zcash, which uses a revolutionary implementation of privacy called zkSNARK.
In this article, we’ll take a look at the basics of zkSNARKs, how they hide privacy, and how they will develop in the future.
Zero knowledge of it
ZkSNARKs are based on a relatively recent cryptographic principle called zero proof of knowledge. In the initial academic document who theorized the Zero Knowledge protocols, they were defined as:
“A zero-knowledge protocol is a method by which one party (the Prover) can prove to another party (the verifier) that something is true, without revealing any information other than that that specific statement is true.”
So, essentially, zero-knowledge proof can allow a person to prove that they know something secret without revealing what that secret is. This has important implications for many situations where we need to exchange a secret but cannot fully trust the party to which we are sending this information.
For example, think about how your online passwords work. When you insert your password on a website, that password is sent to the server and stored in a hashed form. While hashes attempt to hide the password, in the hands of a knowledgeable hacker, a hash can be just as dangerous as plain text. Therefore, you are giving a secret to a website and relying on the site’s purported reliability to protect it. Wouldn’t it be much safer if you could demonstrate your knowledge of the password by solving crypto proof?
This is exactly how zero-knowledge proofs work and they are especially important in cryptographic privacy protocols. You want to be able to prove to the party you’re doing a transaction with that you actually hold the private key to your wallet without actually revealing that private key. The theory is that for a zero-knowledge proof to be valid, it must meet the following requirements:
- Completeness: If the entry is true, the proof will always return “true”.
- Solidity: If the entry is false, you cannot trick the zero-knowledge evidence to return “true”.
- Zero-Knowledge: The verifier learns nothing more than if the statement is true
Now that we’ve laid the groundwork for zero-knowledge proofs, let’s take a look at how it got incorporated into zkSNARKS.
zkSNARK and Blockchains
ZkSNARKs expand on the mathematical theory of zero-knowledge proofs and allow them to be used in blockchains with reduced computational complexity. “ZkSNARKs” stands for Zero Knowledge Succinc Non Interactive Argument of Knowledge. Yes, that’s a mouthful, but let’s break it down word by word.
- Zero-Knowledge: Explained above
- Succinct Can be checked very quickly
- Not interactive: A proof where only one message can be sent from the prover to the verifier. There is no need to send back and forth messages.
- Knowledge argument: The Prover can convince the Verifier that the information exists and that he is the only person who can access this information without revealing the said information.
In regular transactions, when a payment is sent from one party to the other, the details of that payment are visible to all nodes in the network. This includes all transaction inputs and outputs that contain information about public addresses and amounts. However, with an unconscious transaction, the only information that can be gleaned is that a transaction has taken place. There is no information about the sender, recipient or amount. Below is a simple visual representation of how Zero Knowledge Transaction works in a blockchain protocol.
Another term for these transactions is a “protected transaction”. ZkSNARKs are used to prove that the conditions for a valid transaction have been met without revealing anything. The sender of this transaction will need to build proof that shows the following:
- Input values are equal to output values
- The sender has indeed control of the private keys of the wallet.
- There is a cryptographic link between the private spend key and the transaction signature. This will eliminate the possibility that a third party can tamper with the transaction.
Of course, this is the basic theory behind zkSNARKS and the zero knowledge proofs. Further examination would require an understanding of advanced computational mathematics and cryptography (mathematics of the moon according to Vitalik Buterin).
zkSNARKS in use
Since zkSNARKs have such a big impact on cryptocurrencies, they are already in use on a number of channels and are being considered by others. More specifically, they were popularized for their use in the Zcash protocol.
Zcash is one of the most popular cryptocurrencies in the world with a current market capitalization of $ 4.3 billion. There have also been a number of Zcash forks and Forks forks. For example, you have Zclassic which is a fork of Zcash. Zclassic also spawned two of its own forked coins in ZenCash and Bitcoin Private. Both of these chains use zkSNARKs for their protected transactions. Then there are also the ambitions of the second most valuable cryptocurrency, Ethereum, to include zkSNARK in their protocol. This will come as part of their Metropolis upgrade which will include a number of features such as proof of stake.
Support for zk-SNARK is a key feature of Ethereum’s roadmap
– Vitalik “Do not give ETH” Buterin (@VitalikButerin) February 3, 2017
Currently, the computational complexity involved in generating many of these proofs is quite high. This limits their application in many other potential use cases. Yet, as more work is done on this and computing power increases, we’ll likely see similar technology in a number of privacy-dependent applications.
One of the most important concerns with zero-knowledge blockchains is that they have to rely on some “master key”. Without a doubt, having an active master key for a blockchain worth billions is a big deal. It is a shadow that has remained on the Zcash blockchain since its inception. Although the ZCash team have claimed to have destroyed the master key during their Zcash ceremony, there is still a risk that it may have been leaked or someone has a copy of it. However, there may soon be an alternative to this in the form of another unique adaptation called “zkSTARK”. The main advantage of this technology over zkSNARKs is that it would not have to rely on a master key or public key cryptography. All they would need is a simple algorithm to work. zkSTARKs could also be much more efficient in terms of the computing power required to complete the proofs. The technology is still in its infancy and is still the subject of research by many cryptographers. It would be interesting to see how the technology evolves over the next few years.
Bitcoin was developed for a number of reasons, one of which was to restore personal financial control back to individuals. Another of the most important considerations was the holder’s privacy. But as the adoption of cryptocurrency has grown, governments and agencies also have the ability to meticulously track these transactions on the very public blockchain.
With technology such as zkSNARKs, however, such transactions will be protected and the parties will remain completely anonymous. Many other applications will also benefit from these technological advances. While the technology is still new and questions remain, the demand for a truly private cryptocurrency cannot be ignored.