What you Should Know About zk-SNARK
The story behind the cryptography
As some may know about me I did work as a software developer. I had worked at Microsoft, Cambia Health Solutions and in crypto/blockchain arena on API3, dx_Dao and other projects. One concept I have been curious to explore more is zk_SNARKS. What are they, how is it used, who uses it and so on. This is not a concept I was allowed to work with as a developer as my work was primarily front end work. I dealt with user interfaces and the surrounding functionality. So cryptographic algorithms are not my main expertise in software development. I have opened a whole new area of exploration for myself.
So what is it.
zk-SNARK stands for zero-knowledge proof cryptography. Zk-SNARK is an acronym that stands for Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. A zk-SNARK is a cryptographic proof that allows one party to prove it possesses certain information without revealing that information.
A zero-knowledge proof allows one party to prove to another that a statement is true without revealing what the statement is. In other words the statement can be proven true without revealing information about the statement. Or a transaction happened but without showing what the nature of the transaction was or the content of the transaction. The goal is to prove a statement without leaking extra knowledge or information about the statement.
In computing power terms this is expensive. It takes a lot of energy to implement a zero-knowledge proof cryptographic concept.
What does each part of SNARK mean?
“Succinct” zero-knowledge proofs are executed in milliseconds. Verification happens almost instantaneously. The “non-interactive” part means that just one message is sent from one party to another. Original concepts around zero-knowledge proofs involved several bounces back and forth between one party and the other.
“Arguments of Knowledge” statements are theoretically and computationally true. Proofs reflect true statements. It is computationally not possible to create a non-true, or false, but proofs that are true can be created efficiently through this set of algorithms. This algorithmic system involves three separate algorithms.
History
Alessandro Chiesa co-authored a paper in Januray 2012 and coined the term then. Zero-knowledge proof was invented and developed the following scholars: Shafi Goldwasser, Silvio Mical and Charles Rekkofom, and published them in his article “Knowledge and complexity of interactive proof systems” in 1985. No one person invented this. You could drag this all the way back to original encryption studies during World War II if you felt like it. But that is too far back for our purposes.
i have not found a rational for the creation of zero-knowledge proofs and therefor SNARKS either. It’s out there somewhere. It is useful in blockchain, but to make the argument that zk-SNARKS was created for blockchain is not one I am making. It is used extensively in blockchain and that is what I will cover next.
Blockchain
So why is zk-SNARKS algorithm used in blockchain and by extension cryptocurrency. Well it is used primarily in the crypto world for anonymous transactions. When a transaction is created on a given blockchain such as Ethereum there is evidence right there on ‘chain’ showing the activity. Blockchain and crypto by default is not private it is anonymous. Significant difference between the two.
If a transaction is anonymous it can be traced to the user, but if it is private that is not possible. When you buy or sell something ‘on chain’ it is through a wallet and that wallet has an address which then can be resolved to a user possibly. There are some theoretical ways around this such as using ‘mixers’ to hide your transaction, but in general actions ‘on chain’ are not a secret.
This is where zero-knowledge proofs come to the forefront and make the crypto world private. There are several projects that use some sort of zk-SNARK. I wrote about some of them here. Give it a read if you want a list of privacy coins to investigate.
There are a lot of technical aspects of implementation and proving without direct knowledge I may go into at a later time. I found this an interesting topic and felt like an article could be interesting to write. I may write more about this cryptographic algorithm in the coming weeks as there is a lot of territory to cover here.
Thank for reading.