This article is the 34th series of the Sin7y Tech Review and will mainly interpret SuperNova, which is a new recursive proof system for incrementally producing succinct proofs of correct execution of programs on a stateful machine with a particular instruction set.
These seem to be fantastic features. This article will mainly interpret how these features are implemented.
For easy understanding, all interpretations are based on the paper itself.
What is folding?
First, let's look at the definition in the paper:
Image Not ShowingPossible Reasons
The image was uploaded to a note which you don't have access to
The note which the image was originally uploaded to has been deleted
the same size: the size of the input tuples needs to be the same, which also means they correspond to the same computation. The diagram below expresses the folding concept very well (source: ZK Study Club: Supernova (Srinath Setty - MS Research) - YouTube):
Image Not ShowingPossible Reasons
The image was uploaded to a note which you don't have access to
The note which the image was originally uploaded to has been deleted
Each gate's input and output form pairs of (instance, witness), and the same computation represents the same circuit structure and (instance, witness) size.
Represent computation with R1CS
First, let's look at the definition in the paper:
Image Not ShowingPossible Reasons
The image was uploaded to a note which you don't have access to
The note which the image was originally uploaded to has been deleted
m: the number of variables, i.e., the size of vector Z
n: the number of non-zero elements in the matrix
l: the number of public I/Os
A, B, C: coefficient matrices, each corresponds to a calculation
Z.W: private input
Z.x: public I/O
Z.1: constant information
Previously, we mentioned that to achieve the folding scheme, it must be the same computation. This way, the coefficient matrix of the corresponding constraint system (R1CS) remains unchanged, thereby achieving the superposition of two computation instances in the constraint system. Let's try folding:
instances -> 1 instance: We need a random number r, for linear combination, which can come from the verifier or an oracle
Given two instances:
Let
Given two instances:
Therefore, after simple folding, the new instance Z does not satisfy the relation:
Upon careful observation, it can be seen that, apart from the difference in the number of addition terms, some coefficients of the addition terms are also different. Therefore, two elements need to be added: an expansion coefficient and a correction vector
Thus, a relaxed R1CS model is defined as follows: For a native R1CS instance, we have , and for a folded R1CS instance, we have
Continuing from step 5, to make them equal, the following processing is required:
Therefore, the merged R1CS instance satisfies: a. ,for native R1CS instances, it always holds that: $ b.
From the perspective of preventing malicious behavior by the prover and improving verifier succinctness, the following additions are necessary:
Introduce a commitment scheme to ensure the effectiveness of folding.
Delegate the processing of E to the prover, while the verifier only verifies the equivalence under the commitment, achieving succinctness for the verifier. The complete process is depicted in the following diagram: (Source:ZK Study Club: Supernova (Srinath Setty - MS Research) - YouTube):
Image Not ShowingPossible Reasons
The image was uploaded to a note which you don't have access to
The note which the image was originally uploaded to has been deleted
Please note that the verifier needs to perform additional calculations on commitments, which requires the adoption of a commitment scheme that supports homomorphic addition calculations.
NIVC(Non-uniform incrementally verifiable computation), NIVC (Non-uniform incrementally verifiable computation) is a generalization of IVC , as defined in the paper:
Image Not ShowingPossible Reasons
The image was uploaded to a note which you don't have access to
The note which the image was originally uploaded to has been deleted
In the image, the green and red markers represent the following:
Standard IVC: It applies to a single constraint type, such as VDF, where there is only one type of computation.
Non-uniform IVC: It applies to multiple constraint types, such as ZKVM, where different instructions lead to different computations and, therefore, different constraints.
The first recursion approach: without delay. The circuit implements all the verification processes, similar to the recursive structure in Plonky2 and Plonk.
The second recursion approach: part-verify delay. The circuit implements partial verification processes and ultimately achieves one-time verification, as seen in Halo's Accumulator scheme.
The third recursion approach: prover delay. It utilizes the folding scheme to continuously compress instances and generates the proof at the end.
Questions
Is it possible to define a computation that covers all computations? This way, we wouldn't need to separately maintain a running list.
This is the current implementation approach in ZKVM and ZKEVM, where a universal circuit is designed to cover the processing logic for all instructions. However, for specific computations like Keccak and ECDSA, separate sub-circuits are used, similar to the idea of adding a running claim instance in the above-mentioned approaches.
This weekly report aims to provide an update on the latest developments and news related to Sin7y - Ola and zero-knowledge cryptography, which has the potential to revolutionize the way we approach privacy and security in the digital age. We will continue to monitor and report on the latest developments in this field. Please write to contact@sin7y.org if you’d like to join or partner with us.