SNARKs are often seen as a magical panacea to “solve” scaling. While SNARKs can provide incredible benefits, the limitations need to be acknowledged as well — SNARKs can’t solve the existing bandwidth constraints that blockchains are facing today.
This article is meant to demystify SNARKs by giving a (relatively) simple overview of what they can and can’t do for blockchains. We’ll look at how its functionality in relation to blockchains can be concisely summarized as Non-Interactive Witness Aggregation (NIWA). If you understand how Bitcoin works, you’ll be able to understand this article.
It should be noted that SNARKs are still very much an area of active research. Many SNARK variants either aren’t efficient enough to prove complex statements, have proof sizes that are impractically large, or require a trusted setup. That said, a lot of progress has been made over the years, and it’s expected that we’ll continue to see improvements in the coming decade. This article is written in anticipation of such improvements, even if it may not be practical today.What is a SNARK?
A SNARK is a construction that allows you to efficiently validate a result, given a rule set and a starting point. The inputs that led to the result are not revealed (“zero knowledge”). Confused already? This simple chess example will explain.
- Rules: The chess rule set - Start: Starting position A of the board - Result: New position B of the board
The regular way of proving that the game validly transitioned from position A to B is to simply reveal all the moves and checking whether they were valid. SNARKs can do the same thing, but better:
- The set of moves does not have to be revealed (private, less data) - Verification is more computationally efficient
There is one caveat — SNARKs tend to be computationally expensive to create. This can however still be worthwhile in systems w...