Header image is a monochromatic artificially generated piece of art created by
Show full collectionPosted on
“zk-SNARK” stands for “zero-knowledge succinct non-interactive argument of knowledge.”
Sounds like lots of meaningless words huh?
Let's break it down.
First of all, zk-SNARKs are a type of zero-knowledge proof.
But, what the f*ck is a zero-knowledge proof?
A zero-knowledge proof is a cryptographic technique, where one party (The Prover) can prove that a specific statement is true to the other party (The Verifier) without disclosing any additional information.
The very term "zero knowledge" derives from the fact that no ("zero") information about the secret is revealed, but the second party (called "Verifier") is (rightfully) convinced that the first party (called "Prover") knows the secret.
So what does an application of this look like?
Let's imagine you have the formula to turn water into wine. You basically have one of Jesus' superpowers.
So you want your friend to give you his last water bottle so you can turn it into wine.
Your friend wants wine more than water but he's scared you may be lying to steal his water bottle.
With zero-knowledge proofs, you could prove to your friend you actually can turn water into wine without showing him the secret formula.
This is called a zero-knowledge proof of knowledge, an interactive protocol in which the prover succeeds in "convincing" a verifier that it knows something.
Now, what is a zk-SNARK?
A zk-SNARK is a type of zero-knowledge proof that has 3 core characteristics.
why are zk-SNARKs important?
zk-SNARK's has a tremendous amount of applications in the blockchain space like enhanced privacy for transaction data, private smart contract logic, or even compliance.
For example, an exchange could prove to regulators that they are solvent (more assets than obligations) without revealing anything about the assets.
There are so many new and exciting applications for zk-SNARKS but the biggest one I can think of is helping layer one blockchains like ethereum scale through transaction validation.
So today I'm going to give a high-level overview of how you could use the edge zk-SNARK proving system Halo 2 inspired partly by the proving systems PLONK and Sonic to validate transactions on a Rollup to decongest Layer one blockchains.
But before we do that, let's recap what a blockchain is.
In a nutshell: A blockchain is just a chain of proofs.
Proofs that a block containing transactions was mined ("validated") correctly and every proof is "chained" to the next block, hence the word "Block-chain".
The problem is: Decentralized blockchains have a lot of demand for that block-space and get congested easily.
Rollups/Sequencers powered by Halo 2 could leverage the computational power of their nodes and distribute work, such that each node could compute a portion of the submitted transactions, designate a node to gather the results, merge them, create a new block on the rollup, and eventually post a proof of that block on the L1.
Just that little proof will need to be Settled on the L1.
I will say it again:
Zero-knowledge Rollups could batch transactions, create a proof for all of them and then settle that proof on the L1.
What you have left is a chain of proofs (blocks) as you normally do but inside those blocks, you will have proofs of batched transactions (whole blocks that have been mined outside the layer one blockchain).
You can even improve efficiency through recursion, which involves aggregating multiple proofs into a single, smaller proof.
Can you imagine anon? What the possibilities and applications this will enable?
zk-SNARKS are game changers and we are just getting started.
Special thanks to Lankshman Sankar from Personae Labs prev: Research & Development at the Ethereum Foundation for an amazing convo/proofread/review.