Zero-Knowledge Proofs & zkVMs
Zero-knowledge proofs (ZKPs) and zero-knowledge virtual machines (zkVMs) are an essential part of our verifiable computing strategy. They allow us to prove that a computation was performed correctly without revealing the actual computation or its inputs.
How Zero-Knowledge Proofs Work
At the core of most ZKPs is a process called arithmetization. This involves translating a program’s computation into a series of mathematical equations typically over finite fields or polynomial rings. The prover can then show that these equations are satisfied, without revealing the actual inputs or intermediate values.
The details of this transformation depend on the specific ZK proof system (e.g., SNARKs or STARKs) and the cryptographic primitives it relies on.
What Makes zkVMs Different?
A zkVM is a special kind of ZK system that runs entire programs inside a virtual machine. Unlike traditional ZK systems, which require manual arithmetization, zkVMs automate that step. They accept programs written in high-level languages and compile them down to arithmetic circuits internally.
This abstraction makes it much easier to verify real-world programs in a zero-knowledge context even if those programs weren’t originally built with verifiability in mind.
Why zkVMs Matter to Proof of Proof
zkVMs play a critical role in the Proof of Proof framework for two main reasons:
Working with existing high-level languages: Many of the formal systems we use weren’t designed with zero-knowledge in mind. They're implemented in high-level languages and frameworks like K. zkVMs offer a way to integrate these systems into zero-knowledge workflows without major rewrites.
Shared goals and architecture: Like zkVMs, our Proof of Proof system focuses on verifying arbitrary programs in arbitrary languages. Both systems aim to turn computation into verifiable proofs. That means techniques and optimizations from zkVMs often apply directly to what we’re building.
Last updated