Christian Reitwiessner, a team lead at Ethereum, previously wrote a blog post attempting to explain the mysteries of zk-SNARKs. Zero knowledge proofs would allow confidential transactions to occur across the Ethereum network, and zk-SNARKs are how they’d be implemented. But to any outsider (and many insiders) it isn’t obvious how any of that works. Reitwiessner himself stated, “most explanations of zkSNARKs resort to hand-waving at some point and thus they remain something ‘magical,’ suggesting that only the most enlightened actually understand how and why (and if?) they work.”
The idea of zk-SNARKs is that they allow verification of the correctness of computations, without a verifier having to execute those computations, or even learn what was actually executed. Using zk-SNARKs, a verifier can confirm that a computation happened correctly, with ‘zero-knowledge’ of the computation. SNARKs is short for Succinct Non-interactive Arguments of Knowledge, while zk represents ‘Zero-Knowledge.’
Using zk-SNARKs in Ethereum would allow confidential transactions to take place across Ethereum’s public network. This would be a great benefit to blockchain technologies in general, as it would help facilitate integration into current systems. Many businesses have been reluctant to deploy blockchain solutions because of the public nature of a distributed ledger. If enterprises have a way to keep their private information confidential, utilizing Ethereum’s many benefits becomes more possible.
Because the concept of zk-SNARKs could bring change to the Ethereum ecosystem, it’s important that people understand them, rather than see them as something only developers can comprehend. Ethereum founder, Vitalik Buterin, has followed Christian Reitwiessner’s lead and has written a blog post attempting to dive into the math behind zk-SNARKs. He addresses the stigma surrounding the complex math involved in how zk-SNARKs work, and attempts to explain the base level of mathematical knowledge a person would need in order to take a look ‘under the hood’ of zk-SNARKs. Buterin writes:
“There has been a lot of interest lately in the technology [behind] zk-SNARKs, and people are increasingly trying to demystify something that many have come to call ‘moon math’ due to its perceived sheer indecipherable complexity. zk-SNARKs are indeed quite challenging to grasp, especially due to the sheer number of moving parts that need to come together for the whole thing to work, but if we break the technology down piece by piece then comprehending it becomes simpler.
The purpose of this post is not to serve as a full introduction to zk-SNARKs; it assumes as background knowledge that (i) you know what zk-SNARKs are and what they do, and (ii) know enough math to be able to reason about things like polynomials (if the statement P(x) + Q(x) = (P + Q) (x) , where P and Q are polynomials, seems natural and obvious to you, then you’re at the right level).”
If you have looked at Buterin’s example polynomial equation and aren’t running for the hills, then his blog post may be for you. If you don’t immediately pass Buterin’s math knowledge checkpoint, don’t worry as most people won’t. I’m not going to pretend I fully understand how zero knowledge proofs actually work because I don’t. In trying to even partially understand how they work, I’m often left staring at polynomial equations, marveling more at their complexity than actually attempting to grasp them.
What’s good here is how open the developers and coders are being about the ideas they’re working with. Even if they’re using complicated bits of math, layered on top of even more complex concepts, they’re at least attempting to explain how they work. They’re not just asking for blind trust from the uninformed masses, they’re laying out their work for everyone to see. This level of transparency, even regarding technology that’s meant to allow confidentiality, speaks volumes about the openness of the Ethereum ecosystem.
Even if you have zero knowledge of how ‘zero-knowledge’ proofs actually work, you can still benefit from their eventual implementation in Ethereum’s protocol.