LogoLogo
LogoLogo
  • Introduction
    • About Us
    • Notations & Definitions
      • MPC
      • ZK
    • Contribute to this Site!
  • Primitives
    • Multiplication
      • Karatsuba Multiplication
      • Toom-Cook Multiplication
    • NAF (Non-adjacent form)
    • Chinese Remainder Theorem (CRT)
    • Euclidean Algorithm
      • Extended Euclidean Algorithm
      • Binary Euclidean Algorithm
      • Extended Binary Euclidean Algorithm
    • Coding Theory
      • Linear Code
    • Number Theoretic Transform
    • Abstract Algebra
      • Group
        • -Morphisms
        • Batch Inverse
      • Elliptic Curve
        • Weierstrass Curve
          • Coordinate Forms
          • Fast Elliptic Curve Arithmetic and Improved WEIL Pairing Evaluation
        • Edwards Curve
          • Coordinate Forms
          • Twisted Edwards ↔ Short Weierstrass Transformation
        • Batch Inverse for Batch Point Additions
        • Scalar Multiplication
          • Double-and-add
          • GLV Decomposition
        • MSM
          • Pippenger's Algorithm
          • Signed Bucket Index
          • CycloneMSM
          • EdMSM
          • cuZK
        • 2-Chain and 2-Cycle of Elliptic Curves
    • Encryption Scheme
      • ElGamal Encryption
    • Modular Arithmetic
      • Modular Reduction
        • Barrett Reduction
        • Montgomery Reduction
      • Modular Inverse
        • Bernstein-Yang's Inverse
    • Multiset Check
    • Sumcheck
    • Commitment Scheme
      • Fflonk
      • SHPlonk
      • Zeromorph
  • MPC
    • Yao's Garbled Circuits
    • GMW
    • BMR
  • ZK
    • Arithmetization
      • R1CS
      • PLONK
      • AIR
    • Folding
      • LatticeFold
      • Nova
        • Nova over Cycles of Curves
    • Lookup
      • Lasso
      • LogUp-GKR
    • SNARK
      • Groth16
      • HyperPlonk
      • Spartan
        • SPARK
    • STARK
      • Additive NTT
      • Basefold
      • Binius
      • Brakedown
      • CircleSTARK
      • FRI
        • FRI Security Features and Optimizations
      • DEEP FRI
      • STIR
      • WHIR
    • Distributed ZK
      • Ryan's Trick for Distributed Groth16
  • Application
    • zkLogin
    • zkHoldem
    • zkTLS
      • DECO
      • Proxying is enough
  • zkVM
Powered by GitBook
On this page
  • Problem Statement
  • Folding R1CS
  • Standard R1CS
  • An attempt to fold R1CS
  • Relaxed R1CS
  • Folding relaxed R1CS
  • Committed Relaxed R1CS
  • A Folding Scheme for Committed Relaxed R1CS
  • From Folding to IVC
  • IVC over a single curve
  • IVC Verification
  • Conclusion
  • References
Export as PDF
  1. ZK
  2. Folding

Nova

Presentation: https://www.youtube.com/watch?v=dDsAroTRaFI

PreviousLatticeFoldNextNova over Cycles of Curves

Last updated 3 months ago

Problem Statement

How to prove y=F(n)(x)y=F^{(n)}(x)y=F(n)(x)? The naïve approach would be unrolling this into a single circuit and proving with some SNARK. But this would require a lot of memory and the proof is not incrementally updatable. Also, the verifier's time may depend on nnn. To tackle this problem more efficiently, a new approach called incrementally-verifiable computation was introduced in , . In IVC, an augmented circuit is introduced which ensures correct execution of FFF as well as some verifier circuit which can now be used to inductively prove the correct execution of F(n)(x)F^{(n)}(x)F(n)(x).

Folding R1CS

Standard R1CS

Given three m×mm\times mm×m matrices A,B,C\bm{A},\bm{B},\bm{C}A,B,C and public input x\mathsf{x}x, does there exist witness W\bm{W}W such that: AZ∘BZ=CZ\bm{AZ}\circ \bm{BZ}=\bm{CZ}AZ∘BZ=CZ where Z=(W,x,1)\bm{Z}=(\bm{W},\mathsf{x},1)Z=(W,x,1). Here, we use x\mathsf{x}x instead of vector x\bm{x}x for public input since in Nova, it is typically a hash value.

An attempt to fold R1CS

Suppose prover P\mathsf{P}P holds W1\bm{W}_1W1​ and W2\bm{W}_2W2​ and verifier V\mathsf{V}V holds U1=(W1,x1)U_1=(\bm{W}_1,\mathsf{x}_1)U1​=(W1​,x1​) and U2=(W2,x2)U_2=(\bm{W}_2,\mathsf{x}_2)U2​=(W2​,x2​).

  1. Verifier picks random rrr and send it to the prover.

  2. Verifier computes x←x1+r⋅x2\mathsf{x}\leftarrow \mathsf{x}_1 + r\cdot \mathsf{x}_2x←x1​+r⋅x2​ so the folded instance becomes (A,B,C,x)(\bm{A},\bm{B},\bm{C},\mathsf{x})(A,B,C,x).

  3. Prover computes the folded witness W←W1+r⋅W2\bm{W}\leftarrow \bm{W}_1 + r\cdot \bm{W}_2W←W1​+r⋅W2​.

Unfortunately there exists many rrr such that AZ∘BZ≠CZ\bm{AZ}\circ \bm{BZ} \neq \bm{CZ}AZ∘BZ=CZ for Z=(W,x,1)\bm{Z}=(\bm{W},\mathsf{x},1)Z=(W,x,1).

AZ∘BZ=(AZ1∘BZ1)+r2⋅(AZ2∘BZ2)+r⋅(AZ2∘BZ1+AZ1∘BZ2)\bm{AZ}\circ \bm{BZ}=(\bm{AZ}_1\circ \bm{BZ}_1) + r^2\cdot(\bm{AZ}_2\circ \bm{BZ}_2) + r\cdot (\bm{AZ}_2\circ \bm{BZ}_1 + \bm{AZ}_1 \circ \bm{BZ}_2)AZ∘BZ=(AZ1​∘BZ1​)+r2⋅(AZ2​∘BZ2​)+r⋅(AZ2​∘BZ1​+AZ1​∘BZ2​)

This shows 3 issues:

  1. Need to account the cross-term: r⋅(AZ2∘BZ1+AZ1∘BZ2)r\cdot (\bm{AZ}_2\circ \bm{BZ}_1 + \bm{AZ}_1 \circ \bm{BZ}_2)r⋅(AZ2​∘BZ1​+AZ1​∘BZ2​)

  2. Mismatch in coefficient of CZ2:r2⋅CZ2≠r⋅CZ2\bm{CZ}_2: r^2\cdot \bm{CZ}_2 \neq r\cdot \bm{CZ}_2CZ2​:r2⋅CZ2​=r⋅CZ2​

  3. Even Z≠Z1+r⋅Z2\bm{Z}\neq \bm{Z}_1 + r\cdot \bm{Z}_2Z=Z1​+r⋅Z2​ since Z1+r⋅Z2=(W,x,1+r⋅1)\bm{Z}_1 + r\cdot \bm{Z}_2=(\bm{W},\mathsf{x},1+r\cdot 1)Z1​+r⋅Z2​=(W,x,1+r⋅1)

To address first issue, we add error vector E∈Fm\bm{E}\in \mathbb{F}^mE∈Fm which absorbs the cross-terms. To handle the second and third issues, we introduce a scalar uuu, which absorbs an extra factor of rrr in CZ2CZ_2CZ2​ and in Z=(W,x,1+r⋅1)\bm{Z}=(\bm{W},\mathsf{x},1 + r\cdot 1)Z=(W,x,1+r⋅1). We refer to the R1CS with these additional terms as relaxed R1CS.

Relaxed R1CS

Definition 11 from the paper. Consider a finite field F\mathbb{F}F. Let the public parameters consist of size bounds m,n,l∈Nm, n, l \in \mathbb{N}m,n,l∈N where m>lm>lm>l. The relaxed R1CS structure consists of sparse matrices A,B,C∈Fm×m\bm{A,B,C}\in \mathbb{F}^{m\times m}A,B,C∈Fm×m with at most n=Ω(m)n=\Omega(m)n=Ω(m) non-zero values in each matrix. A relaxed R1CS instance consists of an error vector E∈Fm\bm{E} \in \mathbb{F}^mE∈Fm, a scalar u∈Fu\in \mathbb{F}u∈F, and public inputs and outputs x∈Fl\mathsf{x}\in \mathbb{F}^lx∈Fl. An instance ((A,B,C),(E,u,x))((\bm{A},\bm{B},\bm{C}),(\bm{E},u,\mathsf{x}))((A,B,C),(E,u,x)) is satisfied by a witness W∈Fm−l−1\bm{W} \in F^{m-l-1}W∈Fm−l−1 if

AZ∘BZ=u⋅CZ+E\bm{AZ}\circ \bm{BZ}=u\cdot \bm{CZ} + \bm{E}AZ∘BZ=u⋅CZ+E

where Z=(W,x,u)\bm{Z}=(\bm{W},\mathsf{x},u)Z=(W,x,u). In this setup, notice that if u=1u=1u=1 and E=0⃗\bm{E}=\vec{0}E=0 then it is same as standard R1CS.

Folding relaxed R1CS

To fold relaxed R1CS, the prover and verifier additionally compute:

  1. u←u1+r⋅u2u\leftarrow u_1 + r\cdot u_2u←u1​+r⋅u2​

  2. E←E1+r⋅(AZ1∘BZ2+AZ2∘BZ1−u1CZ2−u2CZ1)+r2⋅E2\bm{E} \leftarrow \bm{E}_1 + r\cdot (\bm{AZ}_1 \circ \bm{BZ}_2 + \bm{AZ}_2 \circ \bm{BZ}_1 - u_1\bm{CZ}_2 - u_2\bm{CZ}_1) + r^2\cdot \bm{E}_2E←E1​+r⋅(AZ1​∘BZ2​+AZ2​∘BZ1​−u1​CZ2​−u2​CZ1​)+r2⋅E2​

  3. Now, the folded instance is (A,B,C,E,u,x)(\bm{A,B,C,E},u,\mathsf{x})(A,B,C,E,u,x).

Now, you will be able get AZ∘BZ=u⋅CZ+E\bm{AZ}\circ \bm{BZ} = u\cdot\bm{CZ} + \bm{E}AZ∘BZ=u⋅CZ+E where Z=Z1+r⋅Z2\bm{Z}=\bm{Z}_1 + r\cdot \bm{Z}_2Z=Z1​+r⋅Z2​. But there is still a few issues remaining:

  1. The verifier has to compute E\bm{E}E which has multiple large matrix multiplications so it is non-trivial.

  2. Verifier cannot check if WWW is indeed the outcome of W1+r⋅W2\bm{W}_1 + r\cdot \bm{W}_2W1​+r⋅W2​ so it cannot be zero-knowledge because verifier needs to know W1\bm{W}_1W1​ and W2\bm{W}_2W2​ to fully verify.

To circumvent these issues, we use succinct and hiding additive homomorphic commitments to W\bm{W}W and E\bm{E}E in the instance, and treat both W\bm{W}W and E\bm{E}E as the witness. We refer to this variant as committed relaxed R1CS.

Committed Relaxed R1CS

Definition 12 from the paper. Consider a finite field F\mathbb{F}F and a commitment scheme Com\mathsf{Com}Com over F\mathbb{F}F. Let the public parameters consist of size bounds m,n,l∈Nm, n, l \in \mathbb{N}m,n,l∈N where m>lm > lm>l, and commitment parameters ppW\mathsf{pp}_WppW​ and ppE\mathsf{pp}_EppE​ for vectors of size mmm and m−l−1m−l−1m−l−1 respectively. The committed relaxed R1CS structure consists of sparse matrices A,B,C∈Fm×m\bm{A, B, C} \in \mathbb{F}^{m\times m}A,B,C∈Fm×m with at most n=Ω(m)n = \Omega(m)n=Ω(m) non-zero entries in each matrix. A committed relaxed R1CS instance is a tuple (A,B,C,Wˉ,Eˉ,u,x)(\bm{A,B,C}, \bar{W},\bar{E},u,\mathsf{x})(A,B,C,Wˉ,Eˉ,u,x), where Wˉ\bar{W}Wˉ and Eˉ\bar{E}Eˉ are commitments, u∈Fu \in \mathbb{F}u∈F, and x∈Fl\mathsf{x} \in \mathbb{F}^lx∈Fl are public inputs and outputs. An instance is satisfied by a witness (W,E,rW,rE)∈(Fm−l−1,Fm,F,F)(\bm{W},\bm{E}, r_W, r_E ) \in (\mathbb{F}^{m−l−1},\mathbb{F}^m, \mathbb{F},\mathbb{F})(W,E,rW​,rE​)∈(Fm−l−1,Fm,F,F) if :

  1. Eˉ=Com(ppE,E,rE)\bar{E} = \mathsf{Com}(\mathsf{pp}_E, E, r_E)Eˉ=Com(ppE​,E,rE​)

  2. Wˉ=Com(ppW,W,rW)\bar{W} = \mathsf{Com}(\mathsf{pp}_W , W, r_W )Wˉ=Com(ppW​,W,rW​)

  3. AZ∘BZ=u⋅CZ+E\bm{AZ} \circ \bm{BZ}=u\cdot \bm{CZ} + \bm{E}AZ∘BZ=u⋅CZ+E, where Z=(W,x,u)\bm{Z} = (\bm{W}, \mathsf{x}, \mathsf{u})Z=(W,x,u).

A Folding Scheme for Committed Relaxed R1CS

Suppose prover holds (W1,E1,rW1,rE1)(\bm{W}_1,\bm{E}_1,r_{W_1},r_{E_1})(W1​,E1​,rW1​​,rE1​​) and (W2,E2,rW2,rE2)(\bm{W}_2, \bm{E}_2, r_{W_2}, r_{E_2})(W2​,E2​,rW2​​,rE2​​). The verifier takes two committed instances (W1ˉ,E1ˉ,u1,x1)(\bar{W_1},\bar{E_1},u_1,\mathsf{x}_1)(W1​ˉ​,E1​ˉ​,u1​,x1​) and (W2ˉ,E2ˉ,u2,x2)(\bar{W_2},\bar{E_2},\mathsf{u}_2, \mathsf{x}_2)(W2​ˉ​,E2​ˉ​,u2​,x2​). Let Z1=(W1,x1,u1)\bm{Z}_1=(\bm{W}_1,\mathsf{x}_1,u_1)Z1​=(W1​,x1​,u1​) and Z2=(W2,x2,u2)\bm{Z}_2=(\bm{W}_2,\mathsf{x}_2,u_2)Z2​=(W2​,x2​,u2​).

  1. Prover sends Tˉ=Com(ppE,T,rT)\bar{T}=\mathsf{Com}(\mathsf{pp}_E,\bm{T},r_T)Tˉ=Com(ppE​,T,rT​) where rT←Fr_T\leftarrow \mathbb{F}rT​←F and

T=AZ1∘BZ2+AZ2∘BZ1−u1⋅CZ2−u2⋅CZ1\bm{T}=\bm{AZ}_1\circ \bm{BZ}_2 + \bm{AZ}_2\circ \bm{BZ}_1 - u_1\cdot \bm{CZ}_2-u_2\cdot \bm{CZ}_1T=AZ1​∘BZ2​+AZ2​∘BZ1​−u1​⋅CZ2​−u2​⋅CZ1​
  1. Verifier sends challenge r←Fr\leftarrow \mathbb{F}r←F.

  2. Prover and verifier computes folded instance (Wˉ,Eˉ,u,x)(\bar{W}, \bar{E}, u,\mathsf{x})(Wˉ,Eˉ,u,x) where

Wˉ←W1ˉ+r⋅W2ˉEˉ←E1ˉ+r⋅Tˉ+r2⋅E2ˉu←u1+r⋅u2x←x1+r⋅x2\bar{W}\leftarrow \bar{W_1} + r\cdot \bar{W_2} \\ \bar{E}\leftarrow \bar{E_1} + r\cdot \bar{T} + r^2\cdot \bar{E_2} \\ u\leftarrow u_1 + r\cdot u_2\\ x\leftarrow x_1 + r\cdot x_2Wˉ←W1​ˉ​+r⋅W2​ˉ​Eˉ←E1​ˉ​+r⋅Tˉ+r2⋅E2​ˉ​u←u1​+r⋅u2​x←x1​+r⋅x2​
  1. Prover computes the folded witness (W,E,rW,rE)(\bm{W},\bm{E},r_W,r_E)(W,E,rW​,rE​) where

W←W1+r⋅W2E←E1+r⋅T+r2⋅E2rE←rE1+r⋅rT+r2⋅rE2rW←rW1+r⋅rW2\bm{W}\leftarrow \bm{W}_1 + r\cdot \bm{W}_2 \\ \bm{E}\leftarrow \bm{E}_1 + r\cdot \bm{T} + r^2\cdot\bm{E}_2 \\ r_E\leftarrow r_{E_1}+r\cdot r_T + r^2\cdot r_{E_2} \\ r_W\leftarrow r_{W_1}+r\cdot r_{W_2}W←W1​+r⋅W2​E←E1​+r⋅T+r2⋅E2​rE​←rE1​​+r⋅rT​+r2⋅rE2​​rW​←rW1​​+r⋅rW2​​

Proof of completeness. To prove completeness, we must show that for any valid witness pairs, the folding verifier will accept the folded instance. For the folded witness to satisfy the constraint, we must have:

A(Z1+rZ2)∘B(Z1+r⋅Z2)=(u1+r⋅u2)⋅C(Z1+r⋅Z2)+E\bm{A}(\bm{Z}_1 + r\bm{Z}_2)\circ \bm{B}(\bm{Z}_1 + r\cdot \bm{Z}_2)=(u_1 + r\cdot u_2)\cdot \bm{C}(\bm{Z}_1 + r\cdot \bm{Z}_2) + \bm{E}A(Z1​+rZ2​)∘B(Z1​+r⋅Z2​)=(u1​+r⋅u2​)⋅C(Z1​+r⋅Z2​)+E

Distributing, we get:

AZ1∘BZ1+r(AZ1∘BZ2+AZ2∘BZ1)+r2(AZ2∘BZ2)=u1⋅CZ1+r(u1⋅CZ2+u2⋅CZ1)+r2⋅u2⋅CZ2+E\bm{AZ}_1\circ \bm{BZ}_1 + r(\bm{AZ}_1\circ \bm{BZ}_2 + \bm{AZ}_2\circ \bm{BZ}_1) + r^2(\bm{AZ}_2 \circ \bm{BZ}_2)=\\u_1\cdot \bm{CZ}_1 + r(u_1\cdot \bm{CZ}_2 + u_2\cdot \bm{CZ}_1) + r^2 \cdot u_2 \cdot \bm{CZ}_2 + \bm{E}AZ1​∘BZ1​+r(AZ1​∘BZ2​+AZ2​∘BZ1​)+r2(AZ2​∘BZ2​)=u1​⋅CZ1​+r(u1​⋅CZ2​+u2​⋅CZ1​)+r2⋅u2​⋅CZ2​+E

Aggregating by powers of rrr, we must have:

(AZ1∘BZ1−u1⋅CZ1)+r(AZ1∘BZ2+AZ2∘BZ1−u1⋅CZ2−u2CZ1)+r2(AZ2∘BZ2−u2⋅CZ2)=E(\bm{AZ}_1\circ \bm{BZ}_1 - u_1 \cdot \bm{CZ}_1) + \\r(\bm{AZ}_1\circ \bm{BZ}_2 + \bm{AZ}_2 \circ \bm{BZ}_1 - u_1\cdot \bm{CZ}_2 - u_2\bm{CZ}_1)+\\r^2(\bm{AZ}_2 \circ \bm{BZ}_2 - u_2 \cdot \bm{CZ}_2)\\=\bm{E}(AZ1​∘BZ1​−u1​⋅CZ1​)+r(AZ1​∘BZ2​+AZ2​∘BZ1​−u1​⋅CZ2​−u2​CZ1​)+r2(AZ2​∘BZ2​−u2​⋅CZ2​)=E

Since W1W_1W1​ and W2W_2W2​ are satisfying witnesses, we have:

E1+r⋅T+r2⋅E2=E\bm{E}_1 + r\cdot \bm{T} + r^2\cdot \bm{E}_2=\bm{E}E1​+r⋅T+r2⋅E2​=E

which holds by construction.

Proof of soundness. To prove soundness, we must show that for any wrongly constructed folded instance will be rejected by the folding verifier. The intuition is we can extract a satisfying witness from the proof if the verification passes. TODO: elaborate how we can extract it.

Theorem 3 from the paper. The above construction is a public-coin folding scheme for committed relaxed R1CS with perfect completeness, knowledge soundness, and zero-knowledge.

From Folding to IVC

We constructed a way to fold two R1CS instances into one but now what? How do we incrementally prove and verify with this? To prove that zn=Fn(z0)z_n=F^{n}(z_0)zn​=Fn(z0​), for some count nnn, initial input z0z_0z0​, and output znz_nzn​, we use an augmented constraint system which in addition to invoking FFF, performs additional bookkeeping to fold proofs of prior invocations of itself. A simple version of this augmented constraint system would take two committed relaxed R1CS instances Uacc,i\mathbb{U}_\mathsf{acc,i}Uacc,i​ and Ui\mathbb{U}_\mathsf{i}Ui​ as an input where Uacc,i\mathbb{U}_\mathsf{acc,i}Uacc,i​ represents the correct execution of previous invocations and Ui\mathbb{U}_\mathsf{i}Ui​ represents correct execution of iii-th invocation. Mainly, it performs two tasks:

  1. (State transition) Execute a step of the incremental computation: instance Ui\mathbb{U}_\mathsf{i}Ui​ contains ziz_izi​ which the augmented constraint system uses to output zi+1=F(zi)z_{i+1} = F(z_i)zi+1​=F(zi​).

  2. (Folding) Fold Uacc,i\mathbb{U}_\mathsf{acc,i}Uacc,i​ and Ui\mathbb{U}_\mathsf{i}Ui​ into a single R1CS instance Uacc,i+1\mathbb{U}_\mathsf{acc,i+1}Uacc,i+1​.

IVC over a single curve

First, let's understand how we can construct it over a single curve. What we need to constrain within this R1CS\mathsf{R1CS}R1CS is:

  1. Check previous state transitions are correct

    1. IsStrict(Ui)=True\mathsf{IsStrict}(\mathbb{U}_\mathsf{i})=\mathsf{True}IsStrict(Ui​)=True (checks if error term is 0 and scalar is 1)

    2. Check if Ui.x=H(i,z0,zi,Uacc,i)\mathbb{U_i}.\mathsf{x}=\mathsf{H}(i,z_0,z_i,\mathbb{U}_\mathsf{acc,i})Ui​.x=H(i,z0​,zi​,Uacc,i​). It might be confusing since we don't use hash here normally. To prove Fn(z0)=znF^n(z_0)=z_nFn(z0​)=zn​ we would typically have x=(z0,zn,n)\mathsf{x}=(z_0,z_n,n)x=(z0​,zn​,n). But for IVC, we need to keep track of the accumulated claim as well so we use hash here to keep the input size constant.

  2. Apply the state transition and accumulate instances.

    1. Check if zi+1=F(zi)z_{i+1}=F(z_i)zi+1​=F(zi​)

    2. Accumulate into Uacc,i+1=FoldV(Ui,Uacc,i)\mathbb{U}_\mathsf{acc,i+1}=\mathsf{Fold_V}(\mathbb{U}_\mathsf{i}, \mathbb{U}_\mathsf{acc,i})Uacc,i+1​=FoldV​(Ui​,Uacc,i​)

  3. Generate the instance for next state transitions.

    1. Set Ui+1.x=H(i+1,z0,zi+1,Uacc,i+1)\mathbb{U}_\mathsf{i+1}.\mathsf{x}=\mathsf{H}(i+1,z_0,z_{i+1},\mathbb{U}_\mathsf{acc,i+1})Ui+1​.x=H(i+1,z0​,zi+1​,Uacc,i+1​)

    2. Generate Ui+1=(0ˉ,Wˉi+1,x,1)\mathbb{U}_\mathsf{i+1}=(\bar{0},\bar{W}_{i+1},\mathsf{x},1)Ui+1​=(0ˉ,Wˉi+1​,x,1) instance which resembles correct execution of this step. Notice that the error term should be 0 and scalar should be 1 since it is not a folded instance.

IVC Verification

Given a proof π=((Ui,Wi),(Uacc,i,Wacc,i))\pi=((\mathbb{U}_\mathsf{i}, \mathbb{W}_\mathsf{i}),(\mathbb{U}_\mathsf{acc,i}, \mathbb{W}_\mathsf{acc,i}))π=((Ui​,Wi​),(Uacc,i​,Wacc,i​)), the IVC verification will do the following:

Verify((i,z0,zi),π):\mathsf{Verify}((i,z_0,z_i),\pi):Verify((i,z0​,zi​),π):

  1. IsStrict(Ui)=True\mathsf{IsStrict}(\mathbb{U}_\mathsf{i})=\mathsf{True}IsStrict(Ui​)=True

  2. ((Ui,Wi),(Uacc,i,Wacc,i))((\mathbb{U}_\mathsf{i}, \mathbb{W}_\mathsf{i}),(\mathbb{U}_\mathsf{acc,i}, \mathbb{W}_\mathsf{acc,i}))((Ui​,Wi​),(Uacc,i​,Wacc,i​)) satisfy R1CS\mathsf{R1CS}R1CS.

  3. Ui.x=H(i,z0,zi,Uacc,i)\mathbb{U}_\mathsf{i}.\mathsf{x}=\mathsf{H}(i,z_0,z_i,\mathbb{U}_\mathsf{acc,i})Ui​.x=H(i,z0​,zi​,Uacc,i​)

Conclusion

References

In proof-of-concept benchmarks, Nova was shown to be 4x faster at proving 10000 recursive SHA256 hashes than Halo2 (KZG) and memory usage is constant with respect to number of iterations in Nova while in Halo2 (KZG), the memory usage increases almost linearly with respect to number of iterations. This result is taken from:

Written by from

https://hackmd.io/0gVClQ9IQiSXHYAK0Up9hg?view
zkStudyClub: Supernova (Srinath Setty - MS Research)
Nova: Recursive Zero-Knowledge Arguments from Folding Schemes
Revisiting the Nova Proof System - Wilson Nguyen
Revisiting the Nova Proof System on a Cycle of Curves - Wilson Nguyen
Val08
BCTV14
A41
BATZORIG ZORIGOO
Figure 2. Folding relaxed R1CS. Credit: https://www.youtube.com/watch?v=mY-LWXKsBLc
Figure 1. Folding R1CS. Credit:
Figure 3. Folding Commited Relaxed R1CS. Credit:
Figure 4: Simple outline of IVC.
Figure 5. In-depth view of the augmented constraint system.
https://www.youtube.com/watch?v=ilrvqajkrYY
https://www.youtube.com/watch?v=ilrvqajkrYY
https://youtu.be/h_PU7FZWiQk?t=784
https://youtu.be/h_PU7FZWiQk?t=978