According to Coinbase's interview with Mina's CEO (about ZK-SNARKs), a high school student named Evan first learned about Bitcoin in 2011, and he thought the blockchain technology behind Bitcoin was very powerful and fascinating. In particular, some of the underlying algorithms and consensus mechanisms (proof-of-work (pow)). Back in time, Evan had graduated from Carnegie Mellon University and went on to do a master's degree in robotics. Then I met a high school classmate by chance, and that's how Evan created Coda Protocol.
Why create Coda Protocol? If you want to be a member of the chain, you have to run a whole node, here refers to the heavy node, one point is that you have to download the whole blockchain, the data may be hundreds of gigabytes, and with more and more transactions, the data will only get more and more, so you need to create Coda.
Just to be very brief, what Coda is. A neat blockchain that compresses blocks to the extreme.
What is the purpose of blockchain? It proves to us that there is a certain state in the world, which may be good or bad, but everyone can see it, and no one can completely control this state. This is what I think is good about blockchain. At this point, the question becomes, why do we have to prove that n blocks are so long, and is there some way to compress this. There must be a zero-knowledge proof to create a database current state proof while keeping the size very, very small.
A proof is just constant size and only a few kilobytes, so once you have it, you don't need to download the entire blockchain. You only need to save the current state of the database and proof that the database is what you want it to be.
So let's dig a little deeper into ZK-SNARKs, and to use a colloquial analogy, if you want to run a calculation, in general, if you want to know the result of running it, you have to run it, okay, when we type in, wait, see the result, great.
Zero-knowledge proofs, one thing that's different is that you don't have to run the program yourself, someone else can run the program, someone gives you random proofs on the Internet, and these proofs are the same as the proofs you get by running the program yourself. So this is great because with blockchain, you don't have to run a calculation that checks the entire blockchain, you just check the zero-knowledge proof that represents that calculation.
Or how do I prove that I've met Elon Musk, Elon Musk sends a tweet, or I send a picture of the two of us, making sure the picture is real. But if you believe that the photo is real, you believe that I met Elon Musk, that's zero knowledge proof, you don't have to see that I met Elon Musk, because Elon Musk can send a tweet or I can send a photo to prove that it's true.
Imagine that if we were to add new data to the blockchain, we would have to recalculate the proof, which would be a headache. Because when the blockchain runs for enough time, the entire computation is massive. So you need a way to do a constant amount of work every time you update your blockchain, and that's where recursion comes in. Recursion is also very useful doge in algorithms.
references:
https://www.theblockbeats.info/news/26092