zkVMs: The Next Evolution in Virtual Machines
Featuring three must-know zkVMs, the difference between SNARKs and STARKs, and different Instruction Set Architectures.
Once upon a time, someone decided to append "zk" to "VM" and created the first zkVM.
Okay, forget that. zkVMs are much more than just two words combined; they represent a new wave of virtual machines.
First things first, it's important to understand what a virtual machine is. Think of a virtual machine as a specialized computer designed for executing smart contracts. Each blockchain has one, just like each human has a brain. Well, sort of lmao.
There are many different types of virtual machines, each with its own attributes or benefits.
zkVMs are a unique variation specifically built to integrate zero-knowledge proofs. These are proofs that allow one party to prove to another party that a statement is true without revealing any specific details about the statement itself. Learn more here.
In practice, zkVMs allow developers to build applications just as they do with traditional virtual machines, but with the added benefit of generating zk-proofs for everything happening within their application. And all of this is done without the need for developers to learn the complex process of generating these proofs—the virtual machine handles it for them. Cool, right?
It's like adding a topping to your waffle to enhance its flavor. It's still a waffle, but with something extra.
Okay, now that you know what a zkVM is, your next question might be: “Who’s building that?” We’ve picked three examples: Jolt by A16Z, Risc0 from RiscZero, and SP1 from Succinct. We know there are many others, but we need to keep this article below 5 minutes, innit?
At first glance, these zkVMs might seem quite similar. However, if you dig a bit deeper, you'll find they each have unique features and differences. Let’s start.
Different virtual machines support different programming languages. For example, the EVM supports Solidity and Vyper, the MoveVM supports Move, and the SVM supports Rust. You already know that.
While our three selected projects—Jolt, Risc0, and SP1—all offer support for Rust, Risc0 and SP1 go a step further by also supporting Go, C, and C++.
This isn't extremely fancy, but it can be a significant advantage in onboarding more developers to use your virtual machine.
There are two main proof systems: SNARKs and STARKs. Jolt uses the first one, while Risc0 and SP1 use the second.
Here's a simple analogy to understand the difference:
Imagine you and your friend need to prove you can build a cool LEGO castle without showing the actual castle.
Your friend uses SNARKs. She has a special stamp that proves she can build the castle. She shows this tiny stamp to a teacher who knows the secret code to verify it. The teacher looks at the stamp and says, "Yes, this proves you can build the castle!" The stamp is very small and quick to check, but you need the teacher and the secret code to understand it.
You use STARKs. You write down detailed instructions on how to build the LEGO castle. Anyone can read your instructions and see that you know how to build it. It takes longer to read, but anyone can verify it without needing a special teacher or secret code.
Both systems have their strengths.
SNARKs are compact and quick to verify, like the small stamp the teacher checks.
STARKs are transparent and decentralized. Anyone can verify them without special knowledge, and they're scalable since many people can check the instructions at once.
Ooof, pretty intense right? Just remember that both are cool and have different strengths.
Onto the next topic: the Instruction Set Architecture, or ISA. The ISA defines the rules and operations that smart contracts and transactions can perform within a virtual machine. Think of it as the foundation, shaping how projects distinguish themselves in terms of usability, speed, or customizability.
This is comparable to how a city's traffic rules shape the flow of vehicles on its streets. Similarly, the ISA shapes the behavior and functionality of smart contracts within the virtual machine.
Jolt uses its in-house ISA, aptly named Jolt, which is optimized for high performance and ease of use. Risc0 leverages RISC-V, promoting better interoperability between different blockchain networks and virtual machines, while also allowing developers to code in Rust, Go, and C. Succinct’s SP1 employs Valida, which enables high performance, enhanced security, and customizability.
Here again, each architecture has different strengths and offer different benefits.
You’ve got it—the zkVM field is quite crowded, and for good reason. zk-proofs have the potential to become a significant revolution. Don’t just take my word for it—Vitalik himself has highlighted their potential! Jolt, Risc0, and SP1 all offer great potential with unique features suited to different needs, not to mention the many other players in this vast space. Will zkVMs rule the world? Only time will tell.
Disclaimer: This content is presented to you on an “as is” basis for general information and educational purposes only, without representation or warranty of any kind. It should not be construed as financial, legal or other professional advice, nor is it intended to recommend the purchase of any specific product or service. You should seek your own advice from appropriate professional advisors. Digital asset prices can be volatile. The value of your investment may go down or up and you may not get back the amount invested. You are solely responsible for your investment decisions and Crypto Made Easy is not liable for any losses you may incur. This material should not be construed as financial, legal or other professional advice.
Love the analogy to explain the difference between SNARKS and STARKS