# What are zkSNARKs? How do they work?

From my brief exposure to the concept, zkSNARKs seems to be a form of zero-knowledge cryptography.

What can zkSNARKs bring to the table for Ethereum?

I have looked at projects like this but still fail to grasp it's applicability to the platform.

I'll not enter on crypto hard details, because I don't know that much about it, and it needs pages and pages to be explained correctly. But let's try it!!!

ZKSnarks also known as: Zero Knowledge Succinct Non-interactive Arguments of Knowledge, are fast computational zero knowledge proofs that allow you to demonstrate things without giving any info and even without any need of an interaction between the proover and the verifier.

Let's see an example.

1. Say that Bob wants to demonstrate to Alex that he knows the answer to some problem.
2. Bob, will receive from a TEE (Trust execution environment) a value S and a CRS.
3. If Bob knows the solution to the problem that Alex is asking for, he will be able to demonstrate the divisibility between several polynomial functions.
4. If he has the correct solution, the output that the pairings subtraction operation realized by the verifier is 1, else 0.

It's so.. soo hard to summarize, but it will look like this:

• Whatever mathematical problem can be summarized on a circuit (compiled C code for example).
• The circuit is transformed on a Quadratic Arithmetic Program(QAP) by extracting it's polynomic functions.
• Which at the same time, can be seen as a Computation Model.

With all of this, we are able to build Snarks, that let us verify a proof without acquiring knowledge of the solution and without interaction between the prover and the verifier.

Here is a visual representation of the math involved:

## Why is all of this interesting to Ethereum?

Because the nodes will be able to verify the correctness of a block (no double spend for example) without knowing any info about it. It's like the dream of a cryptographer, evaluate a statement without knowing any info of it.

Which means that all of the addresses, balance, and much more info will be totally encrypted, but a node can still evaluate (super fast, because snarks are succinct proofs) without knowing any info.

The problem with Snarks and Ethereum is that Snarks work on Zcash because there's only transactions. And it's more simple to implement those Snarks on a blockchain that just supports transactions. But in Ethereum's case, with SmartContracts involved.. it's much more difficult to implement ZKSnarks (i don't know exactly why, but guess there's trouble with the EVM).

Hope it helps, and sorry if it's confusing, but it's hard to explain.

• I'm such a fan of your answers. Keep up the good work :) May 31 '18 at 17:21
• Hahahaha it' because you make good questions!! You deserve good answers :P May 31 '18 at 17:25

zkSNARKs will offer the possibility of private transactions, or confidential transactions.

While the math and the cryptography behind it are quite complex, you can find an overview of it in Ethereum's context in this article written by Consensys.

• Just quite complex? Have you reviewed all of the math and crypto behind them? Because last week a mathematical came to our university to give to some students an in-depth vision of them, and i saw that maths extremely hard. Pairings, elliptic curving, hidings,QAP etc.. I found them so hard to understand perfectly, what's your opinion? May 31 '18 at 17:20
• It's sufficiently complex and advanced for me not to be willing to try to understand it intimately ... unless absolutely necessarily. Difficulty is a relative concept. Once we understand something, it always seems easy. I am sure there are people who consider the math behind zkSNARKs easy. But for those people, the MVC pattern would probably seem difficult to comprehend until they put in the effort to research all the concepts behind it. May 31 '18 at 17:33
• Totally according that, Thanks for sharing your opinion! :) May 31 '18 at 17:36