ZK proofs, but for dummies

Apr 23, 2024

“Blockchain” is a word you’ve probably heard and read many times if you’ve arrived at this post, and it’s also likely that you’ve heard little about “ZK proofs.”

These are two tools that, since I understood them, blew my mind, and now I want to share my two years of research in blockchain with my three (yes, just getting my feet wet) months in ZK proofs so that you can save all that with a 3-minute read with some memes to break up the seriousness.

For some time now, I’ve been reading about everything that exists on ZK proofs applied to blockchain and I consider it to be a tool that has such an impact on the blockchain that it will revolutionize the entire ecosystem.

What is a ZK proof or zero-knowledge proof?

Let’s start with the basics, a ZK proof, the term comes from Zero Knowledge proof (ZKP), zero-knowledge proof, it is defined as “A proof in which we demonstrate that something is true without giving more information beyond that precisely that statement is true”…

We’re about to understand this better.

ZKP is a mathematical tool that was invented in 1985, it’s not something new, but its conjunction with blockchain is what reveals its true potential.

The simplest explanation of a ZKP is to imagine that we want to prove to someone that we know the password that opens a lock without telling them what the lock’s key is. We simply grab the lock and open it without the other person seeing the password. By showing the person the open lock, we demonstrate with total certainty that we know how to open it and in the process we didn’t give them any extra information.

Congratulations!! If you understood the example you already understood what a ZKP is (when simplifying complex concepts there may be certain things that are not 100% exact at a formal level, but this is a blog for beginners on the subject, ZKP geeks abstain), let’s see why it is so important.

For that we will have to review a little about what blockchain is and why it is important.

Does blockchain matter?

Since the internet was born, people started interacting with each other without knowing each other. “Don’t talk to strangers on internet” our parents told us, “Don’t buy online, they’re going to steal your card” some said with fear. Little by little, fears were lost when we discovered how easy it was to interact with others through this medium. If we had to define the internet in a single and super simplified sentence we could say that “it is a system that allows people to connect all over the world”

This system gave rise to thousands of applications, connecting everyone we could share information (Wikipedia), talk to each other (Social networks), commercialize products (E-Commerce).

One of the most impactful applications of the internet was to connect banking entities. Banks could have a database where they stored the balance of their customers, if someone wanted to send money to a person at a distance, a bank simply communicated with another and the balance of the customers who made the transfer was modified, this brought about digital money.

Banks are a third party that we choose to trust to mediate a transaction with another person. In summary, the internet allowed us to create a global communication system, that communication was used for infinite functionalities.As globalization increased we began to interact with people we did not know or trust, this led to scams and different types of problems.

How could we trust someone from whom we have no information to back them up?.

That’s where a new technology appears, the Blockchain. I’m not going to go into technical details as I didn’t for the internet, but if we have to summarize its function in a simple way we can say that “It is a system that allows people to interact securely, without the need for those who are part of the interaction to trust each other”, this is called “trustless” interactions.

So the blockchain is a reliable third party that mediates interactions, similar to what we had said about banks, right? That’s why the first application of this technology was cryptocurrencies, a form of monetary exchange without banking entities in between.

How does the blockchain make us trust other people? To achieve a reliable system all the necessary information for the interaction is published and open to the public, we all see all the information (for example the balance of our account and our transaction history, if the interaction is monetary).

We interact with it through virtual wallet addresses, everyone can see the information associated with each wallet. This means that blockchain is not an anonymous technology, but it is pseudonymous, that is, if our person is associated with any of those addresses everyone can know all the interactions we had.

That in my opinion is an incomplete system, we can’t expect this system to be massively used being that it has even less privacy than a bank (if we insist in the example of monetary interactions).

So, we reach one of the most important conclusions “The blockchain is a tool that allows trustless interactions which is a feature, but it does this by decentralizing information and making it visible to the public which is a bug”

One of the greatest technologies has a bug that nobody is talking about.

How could we fix this bug? How could we make people interact with each other, trusting the other, but without giving away all their information? It reminds me a bit of the definition we gave of ZKPs.

What if instead of creating an open banking system, where everyone sees everyone else’s balances and transactions to ensure we have the money we want to transfer, we create a closed system, where to transfer money to someone we generate a ZKP that we indeed have enough money to make the transfer. In that case, we are not giving more information to the blockchain than it needs, and the transaction does not need to be visible to everyone, because we trust the ZKP system.

In summary, “The combination of the internet with blockchain along with ZKPs allows us to generate secure interactions between people, without human intermediaries, in a reliable and anonymous way.”

Now, with this combination, blockchain technology is a complete tool, without bugs, that comes to change the current paradigm and how we think about human relationships today.

Examples of ZKP applications in blockchain technology:

  • ZK rollups: An L2 scalability system where transaction validation is done through a ZKP, which gives the L1 blockchain a faster, safer, and anonymous way to execute transactions.
  • Anonymous voting system: You can verify that a certain proposal has x number of votes, without showing who voted for each proposal.
  • Private smart contracts: Although it’s something new and there’s still a lot to explore, we might interact with a smart contract through a ZKP, which would make the code secret, but we can still trust it through a system of several zero-knowledge proofs.
  • Banking reputation system: If you want to build a reputation system, you must observe all the transaction history of a person. If a ZKP is carried out that validates certain parameters that credit a reputation, we can obtain this score without having to show all our transaction history.

Conclusion

Personally, I believe that this technology is not being given enough importance in the Web3 field. Cuando comencemos a ver nuevas aplicaciones y utilidades ZK siendo construidas alrededor de esto, veremos la enorme explosión que ha estado gestándose durante los últimos meses

For now, the path continues to be to study and learn because…

Thank you for reading! If you liked the blog, I invite you to follow me on Twitter @Franactis and share it with anyone you think might be interested. You can also read this blog post in Spanish HERE.