Understanding Blockchain Zero-Knowledge Proofs for those of us living with brain fog
If you've been keeping up with the latest in cryptocurrency, you've probably heard of blockchain zero-knowledge proofs. But what are they? And why are they important?
If you've been following the development of privacy in blockchain, you may have heard people like Vitalik Buterin talking about something about zk-SNARKs, ZK-Proofs, and so on. A quick google search will tell you that ZK-SNARK stands for cryptographic proof called Zero-Knowledge Succinct Non-Interactive Argument of Knowledge... and that's quite a mouthful.
Since we've all been dealing with brain fog since Covid-19, I thought I would try and simplify the concept of understanding Zero-Knowledge Proofs in blockchains.
Let's ask a simple question.
What is a blockchain zero-knowledge proof?
A blockchain zero-knowledge proof is a type of cryptographic proof that allows someone to prove that they know a certain piece of information, without revealing what that information is.
This ensures privacy and security in blockchain transactions, by allowing users to verify that they have the required information.
In short, zero-knowledge proofs allow for transactions to be verified without revealing any information about the transaction itself.
It is a huge breakthrough for privacy and security.
How do blockchain zero-knowledge proofs work?
At a high level, blockchain zero-knowledge proofs work by allowing one party (the "prover") to prove to another party (the "verifier") that they know something without revealing the data to the blockchain.
The prover creates a mathematical relationship between the thing they are trying to prove and a publicly available value, known as a commitment.
The verifier needs a proof that the commitment is valid.
The verifier can be certain that the prover knows the underlying data without actually seeing it.
By creating a mathematical relationship between the thing that is being proven and a publicly-available value (known as a "commitment"), the prover then provides the verifier with a proof that shows that the commitment is valid. And the verifier can be certain that the prover knows the underlying data without actually seeing it.
A verifier wants to know if a prover knows the answer to a math problem. The prover creates a commitment by hashing the answer to the math problem. The prover then provides the verifier with a proof that shows that the commitment is valid. Because the commitment is public, the verifier can be sure that the prover knows the answer to the math problem without actually seeing it.
By providing a way to verify information without revealing the underlying data, they can help us to check our work and make sure that we're on the right track.
How can blockchain zero-knowledge proofs help?
Think about it this way: when you make a purchase with your credit card, the merchant can see your name, address, and credit card number. They can also see how much money you have in your account. With a zero-knowledge proof, only the fact that you have enough money to make the purchase is revealed – nothing else.
This has major implications for security and privacy. For example, if you're making an online purchase from a new or untrusted merchant, you might not want to reveal your credit card number.
With a zero-knowledge proof, you can still make the purchase without revealing any sensitive information.
Similarly, if you're sending money to someone overseas, you might not want them to know how much money you have in your account. With a zero-knowledge proof, the recipient would only be able to verify that the amount is correct, not the balance of your account.
What's more, because they are based on cryptographic principles, they can also help to ensure the privacy of our data.
This is important not only for our own personal privacy, but also for keeping sensitive information safe from hackers and other malicious actors.
Why are blockchain zero-knowledge proofs useful?
Blockchain zero-knowledge proofs can be a helpful tool.
Zero-knowledge proofs allow for verification of data without revealing the actual data.
It's useful in situations where data needs to be verified but not revealed. There's a number of useful applications:
Private Transactions - Private transactions are transactions that are not published to the blockchain. Private transactions provide confidentiality, which is useful in applications where parties do not wish to reveal their transaction details.
Secure Scalability - Zero-knowledge proofs provide us the ability to accommodate growth in the number of users and transactions and helps to protect against unauthorized access, use, disclosure, interception, or destruction of data.
Fraud Detection - Zero-knowledge proofs help with fraud detection by allowing a user to prove that they have not tampered with a piece of data, without revealing the data itself.
All of this means that a user can prove that they have not altered a transaction, for example, without revealing the details of the transaction to anyone else.
This technology is already being used by some companies. The cryptocurrency Zcash is based on zero-knowledge proofs, and it's been used to create encrypted databases and secure cloud storage. But there's optimism that we can use this type of approach to help secure transactions on smart-contract based blockchains, too.
A ZK-proof rollup is a type of smart contract on the Ethereum blockchain that allows for the validation of data without the need for a full history of the data. This can be used to reduce the amount of data that needs to be stored on-chain, or to allow for private data to be stored off-chain.
Zero-knowledge proofs are a powerful tool that can be used to improve the security and efficiency of Ethereum and other EVM blockchains. Roll-ups are one way that these improvements can be implemented, and they are likely to play an important role in the future development of these platforms.