Nova: Efficient Recursive IVC via Folding
Nova: Efficient Recursive IVC via Folding
1 Introduction
Remark 1 (Folding Schemes vs. SNARKs). SNARKs for NP [8, 26, 27, 33, 39]
trivially imply a folding scheme for NP: given two NP instances u1 and u2 and
the corresponding witnesses, the prover proves u1 by producing a SNARK. The
verifier checks that SNARK and then sets u2 to be the folded instance. However,
2
we construct a folding scheme for NP without relying on SNARKs (or more
generally arguments of knowledge). Specifically, our folding scheme is weaker
than any argument of knowledge (succinct or otherwise) because it merely reduces
the satisfiability of two NP instances to the satisfiability of a single NP instance.1
3
steps in the incremental computation. In particular, the IVC verifier only verifies
the proof produced at the last step of the incremental computation.
In Nova, we consider incremental computations, where each step of the in-
cremental computation is expressed with R1CS (all the steps in the incremental
computation share the same R1CS coefficient matrices). At step i of the incre-
mental computation, as in other approaches to IVC, Nova’s prover proves that
the step i was computed correctly. Furthermore, at step i, instead of verifying a
proof for step i − 1 (as in traditional approaches to IVC), Nova’s approach treats
the computation at step i − 1 as an R1CS instance and folds that into a running
relaxed R1CS instance. Specifically, at each step, Nova’s prover proves that it has
performed the step’s computation and has folded its prior step represented as an
R1CS instance into a running relaxed R1CS instance. In other words, the circuit
satisfiability instance that the prover proves at each incremental step computes a
step of the incremental computation and includes a circuit for the computation
of the verifier in the non-interactive folding scheme for relaxed R1CS.
A distinctive aspect of Nova’s approach to IVC is that it achieves the smallest
“verifier circuit” in the literature. Since the verifier’s costs in the non-interactive
version of the folding scheme for relaxed R1CS is Oλ (1), the size of the com-
putation that Nova’s prover proves at each incremental step is ≈|F |, assuming
N -sized vectors are committed with an Oλ (1)-sized commitments (e.g., Pedersen’s
commitments). In particular, the verifier circuit in Nova is constant-sized and
its size is dominated by two group scalar multiplications. Furthermore, Nova’s
prover’s work at each step is dominated by two multiexponentiations of size ≈|F |.
Note that Nova’s prover does not perform any FFTs, so it can be instantiated
efficiently using any cycles of elliptic curves where DLOG is hard.
With the description thus far, the size of an IVC proof (which is a purported
witness for the running relaxed R1CS instance) is Oλ (|F |). Instead of sending
such a proof to a verifier, at any point in the incremental computation, Nova’s
prover can prove the knowledge of a satisfying witness to the running relaxed
R1CS instance in zero-knowledge with an Oλ (log |F |)-sized succinct proof using
a zkSNARK that we design by adapting Spartan [41]. The following theorem
summarizes our key result.
Theorem 2. For any incremental function where each step of the incremental
function applies a (non-deterministic) function F , there exists an IVC scheme
with the following efficiency characteristics, assuming N -sized vectors are com-
mitted with an Oλ (1)-sized commitments.
– IVC proof sizes are O(|F |) and the verifier’s work to verify them is Oλ (|F |).
The prover’s work at each incremental step is ≈|F |. Specifically, the prover’s
work at each step is dominated by two multiexponentiations of size ≈|F |.
– Succinct zero-knowledge proofs of valid IVC proofs are size Oλ (log |F |), and
the verifier’s work to verify them is either Oλ (log |F |) or Oλ (|F |) depending
on the commitment scheme for vectors. The prover’s work to produce this
succinct zero-knowledge proof is Oλ (|F |).
4
1.3 Implementation and Performance Evaluation
We implement Nova as a library in about 6,000 lines of Rust [3]. The library
is generic over a cycle of elliptic curves and a hash function (used internally as
the random oracle). The library provides candidate implementations with the
Pasta cycle of elliptic curves [4] and Poseidon [2, 29]. For the former, Nova relies
on pasta-msm [5], a high-performance library for computing multiexpoentiations
over the Pasta cycle of curves. Finally, the library accepts F (i.e., a step of the
incremental computation) as a bellperson gadget [1].
5
102 1054 104
6
“Verifier circuit” Prover Proof size Verifier assumptions
(dominant ops) (each step)
BCTV14 [7] with [30]† 3P O(C) FFT Oλ (1) Oλ (1) q-type
O(C) MSM
√ √ √
Spartan [41]-based IVC O( C) G O(C) MSM Oλ ( C) Oλ ( C) DLOG, RO
Fractal [23] Oλ (log2 C) F O(C) FFT Oλ (log2 C) Oλ (log2 C) RO
O(log2 C) H O(C) MHT
Halo [13] O(log C) G O(C) FFT Oλ (log C) Oλ (C) DLOG, RO
O(C) EXP
BCLMS [17]⋆ 8G O(C) FFT Oλ (C) Oλ (C) DLOG, RO
O(C) MSM
Nova (this work) 2G O(C) MSM Oλ (log C) Oλ (C) DLOG, RO
Nova (this work) 2 GT O(C) MSM Oλ (log C) Oλ (log C) SXDH, RO
†
Requires per-circuit trusted setup and is undesirable in practice
O(C) FFT: FFT over an O(C)-sized vector costing O(C log C) operations over F
O(C) MHT: Merkle tree over an O(C)-sized vector costing O(C) hash computations
O(C) EXP: O(C) exponentiations in a cryptographic group
O(C) MSM: O(C)-sized multi-exponentiation in a cryptographic group
Fig. 2: Asymptotic costs of Nova and its baselines to produce and verify a proof for an
incremental computation where each incremental step applies a function F . C denotes
the size of the computation at each incremental step, i.e., |F | + |CV |, where CV is the
“verifier circuit” in IVC. The “verifier circuit” column depicts the number of dominant
operations in CV , where P denotes a pairing in a pairing-friendly group, F denotes
the number of finite field operations, H denotes a hash computation, and G denotes a
scalar multiplication in a cryptographic group. The prover column depicts the cost to
the prover for each step of the incremental computation, and proof sizes and verifier
times refer respectively to the size of the proof of the incremental computation and the
associated verification times. For Nova’s proof sizes and verification times, we depict the
compressed proof sizes (otherwise, they are Oλ (C)) and the time to verify a compressed
proof (otherwise, they are Oλ (C)). Rows with RO require heuristically instantiating
the random oracle with a concrete hash function in the standard model.
– Proof sizes are Oλ (|F |) in their work, whereas in Nova, they are Oλ (log |F |).
We believe, in theory, they can also compress their proofs, using a succinct
argument, but unlike Nova, they do not specify how to do so in a concretely
efficient manner. Furthermore, using succinct arguments is inconsistent with
their goal of not employing them.
Concurrent work. In an update concurrent with this work, Bünz et al. [17] provide
an improved construction of their NARK for R1CS, which leads to an IVC that,
like Nova, avoids FFTs. Furthermore, they improve the size of the verifier circuit
by ≈2×, which is still larger than Nova’s verifier circuit by ≈2×. The per-step
computation of the prover remains 4× higher than Nova.
7
called relaxed R1CS for which we provide a folding scheme satisfying Theorem 1.
Then, in Section 5, we use a non-interactive version of the folding scheme (§4.2)
to construct an IVC scheme and a scheme to compress IVC proofs satisfying
Theorem 2 by assuming the existence of a zkSNARK for relaxed R1CS with
logarithmic-sized proofs. Finally, in Section 6, we construct such a zkSNARK.
2 Preliminaries
Let F denote a finite field with |F | = 2Θ(λ) , where λ is the security parameter.
Let ∼
= denote computational indistinguishability with respect to a PPT adversary.
We globally assume that generator algorithms that produce public parameters
are additionally provided appropriate size bounds.
8
An argument of knowledge satisfies completeness if for any PPT adversary A
pp ← G(1λ ),
(s, (u, w)) ← A(pp),
Pr V(vk, u, π) = 1 (pp, s, u, w) ∈ R,
= 1.
(pk, vk) ← K(pp, s),
π ← P(pk, u, w)
An argument of knowledge satisfies knowledge soundness if for all PPT adversaries
A there exists a PPT extractor E such that for all randomness ρ
pp ← G(1λ ),
V(vk, u, π) = 1, (s, u, π) ← A(pp; ρ),
Pr
(pp, s, u, w) ̸∈ R (pk, vk) ← K(pp, s), = negl(λ).
w ← E(pp, ρ)
Definition 3 (Zero-Knowledge). An argument of knowledge (G, K, P, V) for
relation R satisfies zero-knowledge if there exists PPT simulator S such that for
all PPT adversaries A
pp ← G(1λ ),
(pp, τ ) ← S(1λ ),
(s, (u, w)) ← A(pp), (s, (u, w)) ← A(pp),
(pp, s, u, π) (pp, s, u, w) ∈ R, ∼
= (pp, s, u, π) (pp, s, u, w) ∈ R,
(pk, vk) ← K(pp, s), (pk, vk) ← K(pp, s),
π ← P(pk, u, w) π ← S(pp, u, τ )
9
where F is a polynomial time computable function. Likewise, an IVC scheme
satisfies knowledge soundness if for any constant n ∈ N, and for all expected
polynomial time adversaries P ∗ , there exists an expected polynomial-time extractor
E such that
pp ← G(1λ ),
zn = z where
Pr zi+1 ← F (zi , ωi ) (F, (z0 , z), Π) ← P ∗ (pp, r), ≈
r
∀i ∈ {0, . . . , n − 1} (ω0 , . . . , ωn−1 ) ← E(pp, r)
pp ← G(1λ ),
3 Folding Schemes
This section formally defines folding schemes. Intuitively, a folding scheme for a
relation R is a protocol that reduces the task of checking two instances in R to
the task of checking a single instance in R.
Let
10
denote the the verifier’s output instance u and the prover’s output witness w from
the interaction of P and V on witnesses (w1 , w2 ), prover key pk, verifier key vk
and instances (u1 , u2 ). Likewise, let
tr = ⟨P(pk, w1 , w2 ), V(vk)⟩(u1 , u2 )
pp ← G(1λ ),
(s, (u1 , w1 ), (u2 , w2 )) ← A(pp),
Pr (pp, s, u, w) ∈ R (pp, s, u1 , w1 ), (pp, s, u2 , w2 ) ∈ R,
= 1.
(pk, vk) ← K(pp, s),
(u, w) ← ⟨P(pk, w1 , w2 ), V(vk)⟩(u1 , u2 )
pp ← G(1λ ),
(pp, s, u1 , w1 ) ∈ R,
Pr (s, (u1 , u2 )) ← P ∗ (pp, ρ), ≥
(pp, s, u2 , w2 ) ∈ R
(w1 , w2 ) ← E(pp, ρ)
pp ← G(1λ ),
(s, (u1 , u2 )) ← P ∗ (pp, ρ),
(pp, s, u, w) ∈ R
Pr − negl(λ)
(pk, vk) ← K(pp, s),
(u, w) ← ⟨P ∗ (pk, ρ), V(vk)⟩(u1 , u2 )
11
adversaries A, and V ∗ , and input randomness ρ
pp ← G(1λ ),
(s, (u1 , w1 ), (u2 , w2 )) ← A(pp),
tr (pk, vk) ← K(pp, s), ∼
=
(pp, s, u1 , w1 ), (pp, s, u2 , w2 ) ∈ R,
tr = ⟨P(pk, w1 , w2 ), V ∗ (vk, ρ)⟩(u1 , u2 )
pp ← G(1λ ),
(s, (u1 , w1 ), (u2 , w2 )) ← A(pp),
tr (pp, s, u1 , w1 ), (pp, s, u2 , w2 ) ∈ R,
(pk, vk) ← K(pp, s),
∗
V (vk,ρ)
tr ← S (pk, u1 , u2 )
Proof Intuition. A proof for our variant of the forking lemma is similar to that
of Bootle et al. [12]. We present a formal proof in Appendix E.
12
4.1 A Public-Coin, Zero-Knowledge Folding Scheme
x ← x1 + r · x2
W ← W1 + r · W2 ,
and set the new instance-witness pair to be (x, W ). However, for non-trivial
Z1 = (W1 , x1 , 1) and Z2 = (W2 , x2 , 1), and Z = (W, x, 1), we roughly have that
AZ ◦ BZ = A(Z1 + r · Z2 ) ◦ B(Z1 + r · Z2 )
= AZ1 ◦ BZ1 + r · (AZ1 ◦ BZ2 + AZ2 ◦ BZ1 ) + r2 · (AZ2 ◦ BZ2 )
̸= CZ.
The failed attempt exposes three issues. First, we must account for an addi-
tional cross-term, r · (AZ1 ◦ BZ2 + AZ2 ◦ BZ1 ). Second, the terms excluding the
cross-term combine to produce a term that does not equal CZ:
Third, we do not even have that Z = Z1 +r·Z2 because Z1 +r·Z2 = (W, x, 1+r·1).
4
R1CS is implicit in the QAPs formalism of GGPR [26], but it was made explicit in
subsequent work [43]; they refer to it as a “constraint system in quadratic form”.
13
Second Attempt. To handle the first issue, we introduce a “slack” (or error)
vector E ∈ F m which absorbs the cross terms generated by folding. To handle
the second and third issues, we introduce a scalar u, which absorbs an extra
factor of r in CZ1 + r2 · CZ2 and in Z = (W, x, 1 + r · 1). We refer to a variant of
R1CS with these additional terms as relaxed R1CS.
Definition 11 (Relaxed R1CS). Consider a finite field F . Let the public
parameters consist of size bounds m, n, ℓ ∈ N where m > ℓ. The relaxed R1CS
structure consists of sparse matrices A, B, C ∈ F m×m with at most n = Ω(m)
non-zero entries in each matrix. A relaxed R1CS instance consists of an error
vector E ∈ F m , a scalar u ∈ F , and public inputs and outputs x ∈ F ℓ . An instance
(E, u, x) is satisfied by a witness W ∈ F m−ℓ−1 if (A · Z) ◦ (B · Z) = u · (C · Z) + E,
where Z = (W, x, u).
Note that any R1CS instance can be expressed as a relaxed R1CS instance by
augmenting it with u = 1 and E = 0, so relaxed R1CS retains NP-completeness.
Building on the first attempt, the prover and verifier can now use E to
accumulate the cross-terms. In particular, for Zi = (Wi , xi , ui ), the prover and
verifier additionally compute
u ← u1 + r · u2
E ← E1 + r · (AZ1 ◦ BZ2 + AZ2 ◦ BZ1 − u1 CZ2 − u2 CZ1 ) + r2 · E2 ,
and set the new instance-witness pair to be ((E, u, x), W ). Conveniently, updating
u in this manner also keeps track of how the constant term in Z should be updated,
which motivates our choice to use u in Z = (W, x, u) rather than introducing a
new variable. Now, for Z = (W, x, u), and for random r ∈ F ,
This implies that, for R1CS matrices (A, B, C), the folded witness W is a satisfying
witness for the folded instance (E, u, x) as promised. A few issues remain: in the
above scheme, the prover sends witnesses (W1 , W2 ) for the verifier to compute E.
As a result, the folding scheme is not non-trivial; it is also not zero-knowledge.
Final Protocol. To circumvent these issues, we use succinct and hiding additively
homomorphic commitments to W and E in the instance, and treat both W and E
as the witness. We refer to this variant of relaxed R1CS as committed relaxed R1CS.
Below, we describe a folding scheme for committed relaxed R1CS, where the
prover sends a single commitment to aid the verifier in computing commitments
to the folded witness (W, E).
Definition 12 (Committed Relaxed R1CS). Consider a finite field F and a
commitment scheme Com over F . Let the public parameters consist of size bounds
14
m, n, ℓ ∈ N where m > ℓ, and commitment parameters ppW and ppE for vectors of
size m and m−ℓ−1 respectively. The committed relaxed R1CS structure consists of
sparse matrices A, B, C ∈ F m×m with at most n = Ω(m) non-zero entries in each
matrix. A committed relaxed R1CS instance is a tuple (E, u, W , x), where E and
W are commitments, u ∈ F , and x ∈ F ℓ are public inputs and outputs. An instance
(E, u, W , x) is satisfied by a witness (E, rE , W, rW ) ∈ (F m , F , F m−ℓ−1 , F ) if E =
Com(ppE , E, rE ), W = Com(ppW , W, rW ), and (A · Z) ◦ (B · Z) = u · (C · Z) + E,
where Z = (W, x, u).
E ← E1 + r · T + r2 · E 2
u ← u1 + r · u2
W ← W1 + r · W2
x ← x1 + r · x2
E ← E1 + r · T + r2 · E2
rE ← rE1 + r · rT + r2 · rE2
W ← W1 + r · W2
rW ← rW1 + r · rW2
15
Proof Intuition. With textbook algebra, we can show that if witnesses (E1 , rE1 ,
W1 , rW1 ) and (E2 , rE2 , W2 , rW2 ) are satisfying witnesses, then the folded witness
(E, rE , W, rW ) must be a satisfying witness. We prove knowledge soundness via
the forking lemma (Lemma 1) by showing that the extractor can produce the
initial witnesses given three accepting transcripts and the corresponding folded
witnesses. Specifically, the extractor uses all three transcripts to compute Ei and
rEi , and any two transcripts to compute Wi and rWi for i ∈ {1, 2}. The choice
of which two transcripts does not matter due to the binding property of the
commitment scheme. We present a formal proof in Appendix B.
To design Nova’s IVC scheme, we require our folding scheme for committed
relaxed R1CS to be non-interactive in the standard model. To do so we first
achieve non-interactivity in the random oracle model using the (strong) Fiat-
Shamir transform [25]. Next, we heuristically instantiate the random oracle using
a cryptographic hash function. As a result, we can only heuristically argue the
security of the resulting non-interactive folding scheme. Note that all existing
IVC constructions in the standard model require instantiating the random oracle
with a cryptographic hash function [13, 17, 23, 47].
This section describes Nova, an IVC scheme designed from a non-interactive fold-
ing scheme, which when instantiated with any additively-homomorphic commit-
ment scheme with succinct commitments achieves the claimed efficiency (Lemma 4).
In addition, Nova incorporates an efficient zkSNARK to prove the knowledge
16
of valid IVC proofs succinctly and in zero-knowledge, providing a succinct,
zero-knowledge proof of knowledge of a valid IVC proof.
In Nova, at each incremental step, the prover folds a particular step of the
incremental computation (represented as a committed relaxed R1CS instance-
witness pair) into a running committed relaxed R1CS instance-witness pair. At
any step in the incremental computation, a valid “IVC proof”, in a nutshell, is
a satisfying witness of the running committed relaxed R1CS instance (which
an honest prover can compute by folding witnesses associated with each step
of the incremental computation) along with the running committed relaxed
R1CS instance. Furthermore, at any incremental step, Nova’s prover can prove
in zero-knowledge and with a succinct proof—using a variant of an existing
zkSNARK [41] (Section 6)—that it knows a valid IVC proof (i.e., a satisfying
witness) to the running committed relaxed R1CS instance (Construction 4).
Note that Nova is not a zero-knowledge IVC scheme, as that would additionally
require an IVC proof to be zero-knowledge (in Nova’s case, an IVC proof does
not hide witnesses associated with steps of the incremental computation). This
difference is immaterial in the context of a single prover since it can use Nova’s
auxiliary zkSNARK to provide a zero-knowledge proof of knowledge of a valid
IVC proof; we leave it to future work to achieve zero-knowledge IVC.
Recall that an IVC scheme allows a prover to show that zn = F (n) (z0 ) for some
count n, initial input z0 , and output zn . We now show how to construct an IVC
scheme for a non-deterministic, polynomial-time computable function F using our
non-interactive folding scheme for committed relaxed R1CS (Construction 2).5
In our construction, as in a SNARK-based IVC, the prover uses an augmented
function F ′ (Figure 3), which, in addition to invoking F , performs additional
bookkeeping to fold proofs of prior invocations of itself.
We first describe a simplified version of F ′ , to provide intuition. F ′ takes
as non-deterministic advice two committed relaxed R1CS instances ui and Ui .
Suppose that Ui represents the correct execution of invocations 1, . . . , i − 1 of F ′
so long as ui represents the correct execution of invocation i of F ′ . F ′ performs
two tasks. First, it executes a step of the incremental computation: instance ui
contains zi which F ′ uses to output zi+1 = F (zi ). Second, F ′ invokes the verifier
of the non-interactive folding scheme to fold the task of checking ui and Ui into
the task of checking a single instance Ui+1 . The IVC prover then computes a
new instance ui+1 which attests to the correct execution of invocation i + 1 of F ′ ,
thereby attesting that zi+1 = F (zi ) and Ui+1 is the result of folding ui and Ui .
Now, we have that Ui+1 represents the correct execution of invocations 1, . . . , i
of F ′ so long as ui+1 represents the correct execution of invocation i + 1 of F ′ .
The above description glossed over a subtle discrepancy: Because F ′ must
output the running instance Ui+1 for the next invocation to use, it is contained
5
While, in theory, we can use any folding scheme for NP, we specifically invoke our
construction for committed relaxed R1CS for a simpler presentation.
17
i
z0
zi zi+1
ui F hi+1
?
Ui ui .x = Ui+1 ← hi+1 ← hash
hash(i, z0 , zi , Ui ) NIFS.V(Ui , ui ) (i + 1, z0 , zi+1 , Ui+1 )
in ui+1 .x (i.e., the public IO of ui+1 ). But, in the next iteration, F ′ must fold
ui+1 .x into Ui+1 .x, meaning that F ′ is stuck trying to squeeze Ui+1 into Ui+1 .x.
To handle this inconsistency, we modify F ′ to output a collision-resistant hash
of its public IO rather than producing it directly (this ensures that the public
IO of F ′ is a constant number of finite field elements). The next invocation of
F ′ then additionally takes the preimage of this hash as non-deterministic advice.
Note that the hash function takes an additional random input. We assume that
this provides a commitment scheme with hiding commitments.
18
If i = 0, output hash(vk, i + 1, z0 , F (z0 , ω0 ), u⊥ , ri+1 ),
otherwise,
(1) check that ui .x = hash(vk, i, z0 , zi , Ui , ri ), where ui .x is the public IO of ui ,
(2) check that (ui .E, ui .u) = (u⊥ .E, 1),
(3) compute Ui+1 ← NIFS.V(vk, Ui , ui , T ), and
(4) output hash(vk, i + 1, z0 , F (zi , ωi ), Ui+1 , ri+1 ).
denote the satisfying committed relaxed R1CS instance-witness pair (ui+1 , wi+1 )
for the execution of F ′ , as a committed Relaxed R1CS with structure sF ′ , on
non-deterministic advice (vk, Ui , ui , (i, z0 , zi ), ωi , T , ri , ri+1 ). Note that trace is
a randomized algorithm that internally samples randomness to create hiding
commitments inside ui+1 . Additionally, note that trace sets ui+1 .E = u⊥ .E and
that ui+1 .u = 1.
We define the IVC scheme (G, K, P, V) as follows.
6
In practice, F ′ is implemented as R1CS in a tool such as bellperson [1]. We require
that the procedure that outputs R1CS matrices for F ′ to be deterministic. This is
the case in our implementation of Nova [3].
19
If i = 0, check that zi = z0 ;
otherwise,
(1) parse Πi as ((Ui , Wi ), (ui , wi ), ri ),
(2) check that ui .x = hash(vk, i, z0 , zi , Ui , ri ),
(3) check that (ui .E, u.u) = (u⊥ .E, 1), and
(4) check that Wi and wi are satisfying witnesses to Ui and ui respectively
using [Link] and [Link] ′ .
Lemma 2 (Completeness). Construction 3 is an IVC scheme that satisfies
completeness.
Proof Intuition. Given a satisfying IVC proof Πi = ((Ui , Wi ), (ui , wi ), ri ) suppose
that P outputs Πi+1 = ((Ui+1 , Wi+1 ), (ui+1 , wi+1 ), ri+1 ). Because Πi is a valid
IVC proof, (ui , wi ) and (Ui , Wi ) are satisfying instance-witness pairs. Because
(Ui+1 , Wi+1 ) is obtained by folding (ui , wi ) and (Ui , Wi ), it must be satisfying
by the folding scheme’s completeness. By construction, (ui+1 , wi+1 ) is satisfying
instance-witness pair that satisfies the IVC verifier’s auxiliary checks including
the ones that involve ri+1 . Thus, Πi+1 is satisfying. Appendix C provides a
formal proof.
Lemma 3 (Knowledge Soundness). Construction 3 is an IVC scheme that
satisfies knowledge soundness.
Proof Intuition. For function F , constant n, pp ← G(1λ ), and (pk, vk) ← K(pp, F ),
consider an adversary P ∗ that outputs (z0 , z, Π) such that V(vk, (n, z0 , z), Π) = 1
with probability ϵ. We construct an extractor E that with input (pp, z0 , z), outputs
(ω0 , . . . , ωn−1 ) such that by computing zi ← F (zi−1 , ωi−1 ) for all i ∈ {1, . . . , n}
we have that zn = z with probability ϵ − negl(λ). We show inductively that E
can construct an extractor Ei that outputs (zi , . . . , zn−1 ), (ωi , . . . , ωn−1 ), and Πi
such that for all j ∈ {i + 1, . . . , n}, zj = F (zj−1 , ωj−1 ), V(vk, i, z0 , zi , Πi ) = 1,
and zn = z with probability ϵ − negl(λ). Then, because in the base case when
i = 0, V checks that z0 = zi , it is sufficient for E to run E0 to retrieve values
(ω0 , . . . , ωn−1 ). Initially, En simply runs the assumed P ∗ to get a satisfying Πn .
Given extractor Ei that satisfies the inductive hypothesis, we can construct
extractor Ei−1 . Appendix C provides a formal proof.
Lemma 4 (Efficiency). When instantiated with the Pedersen commitment
scheme (Construction 6), we have that |F ′ | = |F | + o(2 · G + 2 · H + R), where
|F | denotes the number of R1CS constraints to encode a function F , G is the
number of constraints required to encode a group scalar multiplication, H is the
number of constraints required to encode hash, and R is the number of constraints
to encode the RO ρ.
Proof. On input instances U and u, NIFS.V computes E ← U.E + r · T + r2 · u.E
and W ← U.W + r · u.W . However, by construction, u.E = u⊥ .E = 0. So, NIFS.V
computes two group scalar multiplications, as it does not need to compute r2 ·u.E.
NIFS.V additionally invokes the RO once to obtain a random scalar. Finally, F ′
makes two additional calls to hash (details are in the description of F ′ ).
20
5.2 Compressing IVC Proofs with zkSNARKs
G(1λ ) → pp:
Output pp ← zkSNARK.G(1λ )
21
(1) Compute (pkIVC , vkIVC ) ← IVC.K(pp, F ).
(2) Compute sF ′ ← AUGMENT(pp, F ).
(3) Compute (pkzkSNARK , vkzkSNARK ) ← zkSNARK.K(pp, sF ′ ).
(4) Output pk ← ((pkIVC , pkzkSNARK ) and vk ← (vkIVC , vkzkSNARK )).
P(pk, (n, z0 , zn ), Πn )) → π:
If n = 0, output ⊥;
otherwise,
(1) parse Πn as ((Un , Wn ), (un , wn ), rn )
(2) compute (U′ , W′ , T n ) ← NIFS.P(pkIVC , ((Un , Wn ), (un , wn )))
(3) compute πU′ ← zkSNARK.P(pkzkSNARK , U′ , W′ )
(4) output (Un , un , rn , T n , πU′ ).
If n = 0, check that z0 = zi ;
otherwise,
(1) parse π as (Un , un , rn , T n , πU′ ),
(2) check that un .x = hash(vkIVC , i, z0 , zn , Un , rn ),
(3) check that (u.E, u.u) = (u⊥ .E, 1),
(4) compute U′ ← NIFS.V(vkIVC , Un , un , T n ), and
(5) check that zkSNARK.V(vkzkSNARK , U′ , πU′ ) = 1.
Proof Intuition. Completeness and knowledge soundness hold due to the com-
pleteness and knowledge soundness of the underlying zkSNARK and the non-
interactive folding scheme. Assuming the non-interactive folding scheme satisfies
succinctness (e.g., by using the Pedersen commitment scheme), succinctness holds
22
due to the fact that u, U, and T are succinct, and due to the succinctness of the
underling zkSNARK.
To prove zero-knowledge, we leverage the restriction on the adversarily strat-
egy to generate instance-witness pairs for the zkSNARK. In particular, we con-
struct a simulator S that first iteratively simulates (Ui , ui ) for all i ∈ {1, . . . , n}.
Specifically, given the simulated values (Ui , ui ), S first uses the simulator of the
non-interactive folding scheme to simulate T i . S then folds Ui and ui using T i to
produce Ui+1 . S simulates ui using the observation that all terms are randomized.
The only exception is un .x, which is set to hash(vkNIFS , n, z0 , zn , Un , rn ), where
rn ∈ F is sampled randomly. In the final round, S folds un and Un (again using
a simulated T n ) to produce an instance U′ , and then uses the simulator of the
zkSNARK to produce πU′ . S outputs (Un , un , rn , T n , πU′ ). We provide a formal
proof in Appendix D.
6.1 Background
We assume familiarity with polynomials. We provide background in Appendix G.
Definition 14 (Polynomial Extension). Suppose f : {0, 1}ℓ → F is a function
that maps ℓ-bit strings to an element of F . A polynomial extension of f is a low-
degree ℓ-variate polynomial fe : F ℓ → F such that fe(x) = f (x) for all x ∈ {0, 1}ℓ .
A multilinear extension (MLE) of a function f : {0, 1}ℓ → F is a low-degree
polynomial extension where the extension is a multilinear polynomial.
Every function f : {0, 1}ℓ → F has a unique MLE, and conversely every
ℓ-variate multilinear polynomial over F extends a unique function mapping
{0, 1}ℓ → F . Below, we use fe to denote the unique MLE of f .
Lemma 5 (The Sum-Check Protocol [38]). For ℓ-variate polynomial G over
F with degree at most µ in each variable, there exists a public-coin interactive
proof
P protocol (known as the sum-check protocol) to reduce theℓ task of checking
x∈{0,1}ℓ G(x) = T to the task of checking G(r) = e for r ∈ F . The interaction
consists of a total of ℓ rounds, where in each round the verifier sends a single
element of F and the prover responds with µ + 1 elements of F .
23
Recall that an interactive proof (IP) [28] for a relation R is an interactive
protocol between a prover and a verifier where the prover proves the knowledge of
a witness w for a prescribed instance u such that (u, w) ∈ R. An interactive oracle
proof (IOP) [6, 40] generalizes interactive proofs where in each round the prover
may send an oracle (e.g., a string) and the verifier may query a previously-sent
oracle during the remainder of the protocol. A polynomial IOP [19] is an IOP in
which the oracle sent by the prover is a polynomial and the verifier may query for
an evaluation of the polynomial at a point in its domain. We consider a (minor)
variant of polynomial IOPs, where the verifier has oracle access to polynomials
in the R1CS structure and instance.
We first construct a polynomial IOP for an idealized version of relaxed
R1CS (Definition 15) where the instance contains a purported witness. We then
compile it into a zkSNARK for committed relaxed R1CS (Definition 12).
e 1 , . . . , Xs ) = (1 − X1 ) · W
Z(X ]
f (X2 , . . . , Xs ) + X1 · (x, u)(X2 , . . . , Xs ) (1)
24
following identity holds:
?
X
0= eq(τ,
e x) · F (x), (2)
x∈{0,1}s
where
X X
F (x) = e y) · Z(y)
A(x, e · e y) · Z(y)
B(x, e −
y∈{0,1}s y∈{0,1}s
X
u · e y) · Z(y)
C(x, e + E(x)
e ,
y∈{0,1}s
1. V → P: τ ∈R F s
2. V ↔ P: run the sum-check protocol to reduce the check in Equation (2)
to checking if the following hold, where rx , ry are vectors in F s chosen at
random by the verifier over the course of the sum-check protocol:
? ? ?
– A(r
e x , ry ) = vA , B(r
e x , ry ) = vB , and C(r
e x , ry ) = vC ;
25
?
– E(r
e x) = vE ; and
?
– Z(ry ) = vZ .
e
3. V:
? ? ?
– check if A(r
e x , ry ) = vA , B(r
e x , ry ) = vB , and C(r
e x , ry ) = vC , with a query
to A,
e B,
e C e at (rx , ry );
?
– check if E(r
e x) = vE with an oracle query to E; e and
?
e y ) = vZ by checking if: vZ = (1 − ry [1]) · vW + ry [1] ·
– check if Z(r
]
(x, u)(ry [2..]), where ry [2..] refers to a slice of ry without the first element
of ry , and vW ← W f (ry [2..]) via an oracle query (see Equation (1)).
As in prior works [19, 22, 41], we compile our polynomial IOP into a zkSNARK
using a polynomial commitment scheme [32] and the Fiat-Shamir transform [25].
26
Interpreting commitments to vectors as polynomial commitments. It is
well known that commitments to m-sized vectors over F are commitments to log m-
variate multilinear polynomials represented with evaluations over {0, 1}m [35, 41,
49, 52]. Furthermore, there is a polynomial commitment scheme for log m-variate
multilinear polynomials if there exists an argument protocol to prove an inner
product computation between a committed vector and an m-sized public vector
((r1 , 1 − r1 ) ⊗ . . . ⊗ (rlog m , 1 − rlog m )), where r ∈ F log m is an evaluation point.
There are two candidate constructions in the literature. Note that the primary
difference between two schemes is in the verifier’s time.
27
Proof. For R1CS structure (A, B, C), we first have the encoder directly provide
(A,
e B,
e C)e in the prover key, and additionally provide sparse polynomial commit-
ments to A, e B,
e Ce using Sparse-PCBP in both the prover and verifier keys. Next, we
apply the compiler of [19] using PCBP to the polynomial IOP from Construction 5.
At a high level, this replaces all of the oracles provided to the verifier with PCBP
commitments, which the prover and verifier then use to simulate ideal queries to
a committed oracle. By [19, Theorem 6] this provides a public-coin honest-verifier
zero-knowledge interactive argument of knowledge. In particular, we can treat
the resulting protocol as an argument for committed relaxed R1CS because the
verifier is now provided with (polynomial) commitments to E and W . Applying
the Fiat-Shamir transform [25] achieves non-interactivity and zero-knowledge in
the random oracle model.
The claimed efficiency follows from the efficiency of the polynomial IOP,
PCBP , and Sparse-PCBP . In more detail, using Sparse-PCBP , the encoder takes
Oλ (n) time to create commitments 2 log m-variate sparse multilinear polynomials
A,
e B,
e C.
e The prover’s costs in the polynomial IOP is O(n). Furthermore, proving
the evaluations of two O(log m)-variate multilinear polynomials using PCBP , it
takes Oλ (m) time. And, to prove the evaluations of three 2 log m-variate sparse
multilinear polynomials of size n, using Sparse-PCBP , it takes Oλ (n) time. In
total, the prover time is Oλ (n). The proof length in the polynomial IOP is
O(log m), and the proof sizes in the polynomial evaluation proofs is Oλ (log n),
so the proof length is Oλ (log n). The verifier’s time in the polynomial IOP is
O(log m). In addition, it verifies five polynomial evaluations, which costs Oλ (n)
time: the two polynomial in the instance take Oλ (m) time using PCBP , and the
three polynomials in the structure takes Oλ (n) time using Sparse-PCBP . So, in
total, the verifier time is Oλ (n).
Acknowledgments
We thank Arasu Arun, Weidong Cui, Justin Drake, Bryan Parno, and Justin
Thaler for various conversations and helpful comments on a prior version of this
paper. We thank Andy Polyakov and Kelly Olson for help with pasta-msm. We
thank Chhi’mèd Künzang for helpful conversations and for PRs to the Nova
repository, including an adapter that enables transforming circuits written with
bellperson to a format that Nova uses. We thank Wilson Nguyen for pointing
out a discrepancy in the zero-knowledge property proven in a prior version
of Appendix D. Abhiram Kothapalli (while at Carnegie Mellon University)
was supported by a gift from Bosch, NSF Grant No. 1801369, and by the
28
CONIX Research Center, one of six centers in JUMP, a Semiconductor Research
Corporation (SRC) program sponsored by DARPA.
29
References
31
[43] Setty, S., Braun, B., Vu, V., Blumberg, A.J., Parno, B., Walfish, M.: Resolv-
ing the conflict between generality and plausibility in verified computation.
In: EuroSys (Apr 2013)
[44] Setty, S., Lee, J.: Quarks: Quadruple-efficient transparent zkSNARKs. Cryp-
tology ePrint Archive, Report 2020/1275 (2020)
[45] Thaler, J.: Time-optimal interactive proofs for circuit evaluation. In:
CRYPTO (2013)
[46] Thaler, J.: Proofs, arguments, and zero-knowledge. [Link]
[Link]/jthaler/[Link] (2020)
[47] Valiant, P.: Incrementally verifiable computation or proofs of knowledge
imply time/space efficiency. In: TCC. pp. 552–576 (2008)
[48] Wahby, R.S., Ji, Y., Blumberg, A.J., Shelat, A., Thaler, J., Walfish, M.,
Wies, T.: Full accounting for verifiable outsourcing. In: CCS (2017)
[49] Wahby, R.S., Tzialla, I., Shelat, A., Thaler, J., Walfish, M.: Doubly-efficient
zkSNARKs without trusted setup. In: S&P (2018)
[50] Wesolowski, B.: Efficient verifiable delay functions. In: EUROCRYPT. pp.
379–407 (2019)
[51] Xie, T., Zhang, J., Zhang, Y., Papamanthou, C., Song, D.: Libra: Succinct
zero-knowledge proofs with optimal prover computation. In: CRYPTO (2019)
[52] Zhang, Y., Genkin, D., Katz, J., Papadopoulos, D., Papamanthou, C.: vSQL:
Verifying arbitrary SQL queries over dynamic outsourced databases. In: S&P
(2017)
32
Supplementary Materials
φ1 = (E 1 , u1 , W 1 , x1 ) and φ2 = (E 2 , u2 , W 2 , x2 ).
33
Suppose that the prover P, in addition to the two instances, holds satisfying
witnesses to both instances, (E1 , rE1 , W1 , rW1 ) and (E2 , rE2 , W2 , rW2 ). Let Z1 =
(W1 , x1 , u1 ) and Z2 = (W2 , x2 , u2 ).
Now suppose that P and V compute a folded instance φ = (E, u, W , x), and
suppose that P computes a folded witness (E, rE , W, rW ), To prove completeness,
we must show that (E, W ) is a satisfying witness for instance φ. Let Z = (W, x, u).
For (E, W ) to be a satisfying witness, we must have the following:
AZ ◦ BZ = u · CZ + E (3)
and
E = Com(ppE , E, rE ) (4)
W = Com(ppW , W, rW ) (5)
It is easy to see that Equations (4) and (5) hold from the additive homomorphism
of the commitment scheme.
Thus, we focus on proving that Equation (3) holds. By construction, for
Equation (3) to hold, we must have for r ∈R F
E1 + r · T + r2 · E2 = E,
34
Lemma 7 (Knowledge Soundness). Construction 1 is a knowledge sound
folding scheme for committed relaxed R1CS.
φ1 = (E 1 , u1 , W 1 , x1 ) and φ2 = (E 2 , u2 , W 2 , x2 ).
We prove knowledge soundness via the forking lemma (Lemma 1). That is,
we prove that there exists a PPT algorithm X such that when given public
parameters pp, structure (A, B, C), and a tree of accepting transcripts and the
corresponding folded instance-witness pairs outputs a satisfying witness with
probability 1 − negl(λ).
In more detail, suppose X is provided three transcripts (τ1 , τ2 , τ3 ) with the
same initial commitment T from the prover. Note that a transcript τi for i ∈
{1, 2, 3} additionally comes attached with an accepting witness τi .(W, E, rW , rE )
and the verifier’s randomness τi .r. Interpolating points (τ1 .r, τ1 .W ) and (τ2 .r, τ2 .W ),
X retrieves (W1 , W2 ) such that
W1 + τi .r · W2 = τi .W (7)
for i ∈ {1, 2}. Similarly interpolating points (τ1 .r, τ1 .E), (τ2 .r, τ2 .E), (τ3 .r, τ3 .E),
X retrieves (E1 , E2 ) and a cross-term T such that
E1 + τi .r · T + τi .r2 · E2 = τi .E (8)
for i ∈ {1, 2, 3}. Using the same approach, X can interpolate for rW1 , rW2 and
rE1 , rT , rE2 . We must argue that (W1 , E1 , rW1 , rE1 ) and (W2 , E2 , rW2 , rE2 ) are
indeed satisfying witnesses for φ1 and φ2 respectively.
We first show that the retrieved witness elements are valid openings to the
corresponding commitments in the instance. For i ∈ {1, 2}, because τi .W, τi .rW
is part of a satisfying witness, by construction,
35
Similarly, for i ∈ {1, 2, 3}, because τi .E, τi .rE is part of a satisfying witness,
by construction, we must have
Com(ppE , E1 , rE1 ) = E 1
Com(ppE , E2 , rE2 ) = E 2
Next, we must show that (W1 , E1 ) and (W2 , E2 ) satisfy the relaxed R1CS
relation. To show this, we must first argue that Equation (7) holds for i = 3 as
well (i.e., W1 + τ3 .r · W2 = τ3 .W ). Indeed, Equations (9) and (10) imply that
W1 + τ3 .r · W2 = τ3 .W (11)
where τi .Z = (τi .W, τi .x, τi .u). However, by Equations (7), (8), and (11) for
i ∈ {1, 2, 3}, this implies that with probability 1 − negl(λ)
A(Z1 + τi .r · Z2 ) ◦ B(Z1 + τi .r · Z2 ) =
(u1 + τi .r · u2 ) · C(Z1 + τi .r · Z2 ) + (E1 + τi .r · T + τi .r2 · E2 )
with probability 1−negl(λ). Thus, (W1 , E1 , rW1 , rE1 ) and (W2 , E2 , rW2 , rE2 ) meet
all the requirements to be satisfying witnesses for φ1 and φ2 respectively with
probability 1 − negl(λ).
36
Lemma 8 (Zero-Knowledge). Construction 1 is a zero-knowledge folding
scheme for committed relaxed R1CS.
Proof. Intuitively, zero-knowledge holds because the prover only sends a single
hiding commitment. More formally, the simulator S samples random T ∈ F m and
r ∈ F and computes T = Com(ppE , T, r). Next, S derives the verifier’s challenge,
r, using ρ and outputs tr = (T , r). (Perfect) zero-knowledge holds from the
(perfect) hiding property of the underlying commitment scheme.
zi+1 = F (zi , ωi )
Let pp ← G(1λ ), and let (pk, vk) ← K(pp, F ). Now consider a proof Πi such that
V(vk, i, z0 , zi , Πi ) = 1
that
V(vk, 0, z0 , z0 , Π0 ) = 1.
Π1 = ((u⊥ , w⊥ ), (u1 , w1 ), r1 )
u1 .x = hash(vk, 1, z0 , F (z0 , w0 ), u⊥ , r1 ).
V(pp, 1, z0 , z1 , Π1 ) = 1.
37
Inductive Step (i ≥ 1): Assume that for
Πi = ((Ui , Wi ), (ui , wi ), ri )
we have that
V(vk, i, z0 , zi , Πi ) = 1
Thus, by the completeness of the underlying folding scheme, and the premise
that (ui , wi ) and (Ui , Wi ) are satisfying instance-witness pairs, we have that
(Ui+1 , Wi+1 ) is a satisfying instance-witness pair. Additionally, by the premise,
we have that ui .x = hash(vk, i, z0 , zi , Ui , ri ), ui .E = 0, and ui .u = 1. Therefore, P
can construct a satisfying instance-witness pair (ui+1 , wi+1 ) that represents the
correct execution of F ′ on input (U, u, (i, z0 , zi ), ωi , T , ri , ri+1 ), where ri+1 ∈R F .
By construction, this particular input implies that
V(vk, n, z0 , z, Π) = 1
zi ← F (zi−1 , ωi−1 )
38
we have that zn = z with probability ϵ − negl(λ).
We show inductively that E can construct an expected polynomial-time
extractor Ei (pp) that outputs ((zi , . . . , zn−1 ), (ωi , . . . , ωn−1 ), Πi ) such that for all
j ∈ {i + 1, . . . , n},
zj = F (zj−1 , ωj−1 )
and
V(vk, i, z0 , zi , Πi ) = 1 (13)
for zn = z with probability ϵ − negl(λ). Then, because in the base case when i = 0,
V checks that z0 = zi , the values (ω0 , . . . , ωn−1 ) retrieved by E0 (pp) are such that
computing zi+1 = F (zi , ωi ) for all i ≥ 1 gives zn = z. At a high level, to construct
an extractor Ei−1 , we first assume the existence of Ei that satisfies the inductive
hypothesis. We then use Ei (pp) to construct an adversary for the non-interactive
folding scheme (which we denote as P ei−1 ). This in turn guarantees an extractor
for the non-interactive folding scheme, which we denote as Eei−1 . We then use
Eei−1 to construct Ei−1 that satisfies the inductive hypothesis.
In the base case, for i = n, let En (pp; ρ) output (⊥, ⊥, Πn ) where Πn is the
output of P ∗ (pp; ρ). By the premise, En succeeds with probability ϵ in expected
polynomial-time.
For i ≥ 1, suppose E can construct an expected polynomial-time extractor Ei
that outputs ((zi , . . . , zn−1 ), (ωi , . . . , ωn−1 )), and Πi that satisfies the inductive
hypothesis. To construct an extractor Ei−1 , E first constructs an adversary P ei−1
for the non-interactive folding scheme as follows:
P
ei−1 (pp; ρ):
Because V ensures that (ui .E, ui .u) = (0, 1) we have that wi is indeed a satisfying
assignment for F ′ (and not just a trivially satisfying witness). Then, by the
construction of F ′ and the binding property of the hash function, we have that
Ui = NIFS.V(vk, Ui−1 , ui−1 , T i−1 )
39
Then, by the knowledge soundness of the underlying non-interactive folding
scheme (Assumption 1) there exists an extractor Eei−1 that outputs (wi−1 , Wi−1 )
such that (ui−1 , wi−1 ) and (Ui−1 , Wi−1 ) satisfy F ′ with probability ϵ − negl(λ)
in expected polynomial-time.
Given an expected polynomial-time P ei−1 and an expected polynomial-time
Ei−1 , E constructs an expected polynomial time Ei−1 as follows
e
We first reason that the output (zi−1 , . . . , zn−1 ), and (ωi−1 , . . . , ωn−1 ) are valid.
By the inductive hypothesis, we already have that for all j ∈ {i + 1, . . . , n},
zj = F (zj−1 , ωj−1 ),
ui .x = hash(vk, i, z0 , zi , Ui , ri ) (14)
by the construction of F ′ and the binding property of the hash function, we have
F (zi−1 , ωi−1 ) = zi
with probability ϵ − negl(λ). Next, we argue that Πi−1 is valid. Because (ui , wi )
satisfies F ′ , and (Ui−1 , ui−1 ) were retrieved from wi , by the binding property of
the hash function, and by Equation (14), we have that
Additionally, in the case where i = 1, by the base case check of F ′ , we have that
zi−1 = z0 . Because Eei−1 succeeds with probability ϵ − negl(λ), we have that
40
D Proof of Theorem 4 (A zkSNARK of a Valid IVC
Proof )
Proof. Completeness and knowledge soundness hold due to the completeness and
knowledge soundness of the underlying zero-knowledge succinct non-interactive ar-
gument of knowledge (zkSNARK) and the non-interactive folding scheme (NIFS).
Succinctness holds due to the succinctness of the commitment scheme underlying
the non-interactive folding scheme, the succinctness of the hash function, and the
succinctness of the underlying non-interactive argument. To prove zero-knowledge,
we first construct a simulator S as follows. Let NIFS.S and zkSNARK.S denote the
simulators for the underlying non-interactive folding scheme and the zkSNARK
respectively. The simulator is given as input the statement proven by an IVC
proof (n, z0 , zn ) along with public parameters pp. For i ∈ {1, . . . , n−1}, let zi = ⊥.
S(pp, (n, z0 , zn ), τ ) → π:
If n = 0,
output ⊥;
otherwise,
(1) for i ∈ {0, . . . , n − 1}
′
(ri+1 , ri+1 ) ←R F
if i = 0
U1 ← u⊥
u1 ← (hash(vk, 1, z0 , z1 , U1 , r1 ), (u⊥ .E, 1, Com(pp, 0, r1′ )))
otherwise
T i ← NIFS.S(ppNIFS , Ui , ui )
Ui+1 ← NIFS.V(vkNIFS , Ui , ui , T i )
′
ui+1 ← (hash(vk, i+1, z0 , zi+1 , Ui+1 , ri+1 ), (u⊥ .E, 1, Com(pp, 0, ri+1 )));
(2) T n ← NIFS.S(ppNIFS , Un , un )
(3) πU′ ← zkSNARK.S(ppzkSNARK , NIFS.V(vkNIFS , Un , un , T n ), τ )
(4) output (Un , un , rn , T n , πU′ ).
41
– For some i ∈ {1, . . . , n − 1}, suppose now that (Ui , ui ) is indistinguish-
able in the real and the simulated settings. Due to the zero-knowledge
property of the underlying non-interactive folding scheme, we have that
T i ← NIFS.S(ppNIFS , Ui , ui ) is indistinguishable in the real and the simu-
lated settings. Thus, we have that Ui+1 ← NIFS.V(vk, Ui , ui , T i ) is indis-
tinguishable in the real and the simulated settings. Then, we have that
hash(vkNIFS , i + 1, z0 , zi+1 , Ui+1 , ri+1 ) is indistinguishable in the real and the
simulated setting. The remaining pieces of ui+1 are indistinguishable in the
real and the simulated setting for the same reasons as the base case. Thus,
we have that (Ui+1 , ui+1 ) is indistinguishable in the real and the simulated
settings.
Furthermore, in both the real and simulated settings, Un and un satisfy the
verifier’s hash check that un .x = hash(vk, n, z0 , zn , Un , rn+1 ). In the simulated
setting, this holds because the simulator uses the provided values of (n, z0 , zn )
when computing un .x.
Now, because (Un , un ) are indistinguishable from that produced by honest
IVC.P, we have that T n produced by NIFS.S(pp, Un , un ) is indistinguishable from
that produced by P due to the zero-knowledge property of the underlying non-
interactive folding scheme. This means that U′ generated by NIFS.V(vk, Un , un , T )
is indistinguishable from that produced honestly. This means that πU′ is indistin-
guishable in the real and the simulated setting due to the zero-knowledge property
of the underlying zkSNARK. Thus, the simulated zkSNARK (Un , un , T n , πU′ ) is
indistinguishable from the one generated honestly.
We provide a proof for our variant of the forking lemma by adapting the proof of
the forking lemma from Bootle et al. [12].
Lemma. Let F denote a finite field. Consider a (2µ + 1)-move folding scheme
Π = (G, K, P, V). Π satisfies knowledge soundness if there exists a PPT X such
that for all input instance pairs (u1 , u2 ), outputs satisfying witnesses (w1 , w2 )
with probability 1 − negl(λ), given public parameters pp, a structure s, and an
(n1 , . . . , nµ )-tree of accepting transcripts and the corresponding folded instance-
witness pairs (u, w). This tree comprises of n1 transcripts (and the corresponding
instance-witness pairs) with fresh randomness in V’s first message; and for each
such transcript, n2 transcripts (and the corresponding instance-witness Qµ pairs)
with fresh randomness in V’s second message; etc., for a total of i=1 ni leaves
bounded by poly(λ).
Proof. Consider a (2µ + 1)-move folding scheme (G, K, P, V) for relation R with
randomness sampled uniformly from F where |F | ≥ 2λ . Suppose there exists a
PPT X such that for arbitrary input instances (u1 , u2 ), outputs the corresponding
satisfying witnesses (w1 , w2 ) with probability 1 − negl(λ), given public parameters
42
pp, a structure s, and an (n1 , . . . , nµ )-tree of accepting
Qµ transcripts and the
corresponding folded instance-witness pairs where i=1 ni . Consider an arbitrary
expected polynomial-time adversary P ∗ , and pp ← G(1λ ). Let ϵ be the probability
that, given (u1 , u2 ) ← P ∗ (pp, ρ), P ∗ (pp, ρ) succeeds in producing a valid witness w
for the folded instance u. To prove that (G, K, P, V) satisfies knowledge-soundness
we will show that there exists a corresponding extractor E that outputs a valid
witness pair (w1 , w2 ) for instances (u1 , u2 ) given public parameters pp and the
prover randomness ρ with probability ϵ − negl(λ).
We first construct an extractor E as follows:
E(pp, ρ) → (w1 , w2 ):
1. Compute (s, (u1 , u2 )) ← P ∗ (pp, ρ)
2. Compute tree ← T (1), where the function T is defined below.
3. If tree is not a valid (n1 , . . . , nµ )-tree (i.e. there are collisions in the verifier’s
randomness) return ⊥.
4. Output (w1 , w2 ) ← X (pp, s, u1 , u2 , tree).
T (i) → tree:
1. Sample the verifier’s randomness for round i; denote it as ri .
2. If i = µ + 1, compute
(u, w) ← ⟨P ∗ (ρ), V(u1 , u2 )⟩
and let tr be the corresponding transcript. If (u, w) ∈ R, output {(tr, (u, w))}.
Otherwise output ⊥.
3. With fixed verifier randomness (r1 , . . . , ri ), compute tree ← T (i + 1) once. If
tree = ⊥ output ⊥.
4. With fixed verifier randomness (r1 , . . . , ri ), repeatedly run T (i + 1) until
ni − 1 additional lists of accepting transcripts are acquired. Append all the
results to tree.
5. Output tree.
Let E1 denote the event that T (1) outputs tree ̸= ⊥ in less than T time
steps (we specify T later). Given E1 , let E2 denote the event that the resulting tree
is a valid (n1 , . . . , nµ )-tree (i.e. there are no collisions in the verifier’s randomness).
Given E1 and E2 , let E3 denote the event that X succeeds with tree as input.
Then, we have that E succeeds with probability
PE = Pr [E3 ] · Pr [E2 ] · Pr [E1 ].
We now compute each of these probabilities. To compute Pr [E1 ], we observe that
T (1) fails (i.e. returns ⊥) only when its first call to T (2) fails. Likewise, T (2)
fails only when its first call to T (3) fails. Chaining these assertions, we have that
T (1) fails with probability (1 − ϵ), which, by assumption, is the probability that
T (µ + 1) fails. Thus, the expected number of times T (i) calls T (i + 1) is
(ni − 1)
1 + Pr [First call to T (i + 1) succeeds] ·
Pr [T (i + 1) returns tree ̸= ⊥]
43
(ni − 1)
=1+ϵ·
ϵ
= ni .
Qµ
Hence, the total runtime is expected to be t = O( i=1 ni ) which is bounded
above by poly(λ) by assumption. Moreover, by Markov’s inequality, we have that
T runs for time longer than T > t with probability Tt . Thus, we have that
t
Pr[E1 ] = (1 − ) · ϵ.
T
Given E1 we have that T runs in at most T time-steps. This ensures that there are
at most T random challenges produced for the verifier, and that the probability
2
of collision is at most T|F | . Thus, we have that
T2
Pr[E2 ] = 1 − .
|F |
44
– b ← Open(pp, C, x, r): verifies the opening of commitment C to x ∈ F m and
r ∈ F ; outputs b ∈ {0, 1}.
(1) Binding. For any PPT adversary A, the following probability is negl(λ):
pp ← Gen(1λ , m),
b0 = b1 = 1, (C, x0 ∈ F m , x1 ∈ F m , r0 ∈ F , r1 ∈ F ) ← A(pp),
Pr
x0 ̸= x1
b0 ← Open(pp, C, x0 , r0 ),
b1 ← Open(pp, C, x1 , r1 )
(2) Hiding. For all PPT adversaries A = (A0 , A1 ), the following probability is
negl(λ):
(x0 , x1 , st) ← A0 (pp),
1 b ←R {0, 1}, r ←R F ,
− Pr
b = b̄ C ← Com(pp, xb , r),
2
b̄ ← A1 (st, C)
If hiding holds for all adversaries, then the commitment is statistically hiding.
G Background on Polynomials
This section is adapted from prior work [37, 41, 46]. We recall a few basic facts
about polynomials.
45
– The degree of a monomial is the sum of the exponents of variables in the
monomial; the (total) degree of a polynomial g is the maximum degree of
any monomial in g. Furthermore, the degree of a polynomial g in a particular
variable xi is the maximum exponent that xi takes in any g’s monomials.
– A multivariate polynomial is a polynomial with more than one variable. A
multivariate polynomial is called a multilinear polynomial if the degree of
the polynomial in each variable is at most one.
– A multivariate polynomial g over a finite field F is called low-degree if the
degree of g in each variable is bounded above by a constant.
H An Optimization to Theorem 6
In Theorem 6, given that the verifier’s runtime to verify an evaluation is at least
linear in the polynomial size, the verifier does not gain by querying commitments
to structure polynomials A,e B,
e C.
e Rather, the verifier can directly evaluate them,
which not only simplifies the protocol (as one does not need Sparse-PCBP ), but
also improves costs, both asymptotically and concretely.
46
Nova differs from traditional IVC approaches by not requiring the verification of a proof for the prior step at each incremental step. Instead, it treats the computation at i-1 as an R1CS instance and folds it into a running relaxed R1CS instance. This results in Nova achieving the smallest verifier circuit size in the literature and significantly lower recursion overhead, making it distinct from approaches that continue to verify proofs step by step .
The folding scheme for relaxed R1CS facilitates incremental verifiable computation (IVC) by allowing the prover to fold each incremental computation step, expressed as an R1CS instance, into a running relaxed R1CS instance. This effectively proves each step's computation correctness and includes a circuit for verifying the previous step's proof. It uses a non-interactive folding scheme that can be instantiated in the standard model and achieves a small verifier circuit size .
Nova leverages zkSNARKs for ensuring zero-knowledge by designing a zkSNARK adapted from Spartan. This results in a succinct zero-knowledge proof of the satisfying witness to the relaxed R1CS instance, drastically reducing proof size to Oλ(log |F|), which can be verified efficiently, contrasting with sending larger proofs .
The trace algorithm is used to produce a satisfying committed relaxed R1CS instance-witness pair for the execution of an augmented function. It is a randomized algorithm that samples randomness to create hiding commitments within the instance, supporting the non-deterministic advice required by the algorithm .
Nova handles recursion overhead by maintaining a verifier circuit of approximately 10,000 R1CS constraints, recognized as the smallest in the literature. The experiments indicate that Nova incurs a recursion overhead over 10× lower than SNARK-based IVC with trusted setups and over 100× compared to those without trusted setups, significantly enhancing performance efficiency .
The primary objective is to reduce the satisfiability of two NP instances to the satisfiability of a single NP instance without relying on SNARKs or arguments of knowledge. This is achieved through a folding scheme that takes a popular NP-complete language, R1CS, and introduces a variant called relaxed R1CS which can support a folding scheme .
Lemma 9 provides a theoretical proof ensuring the completeness of the IVC scheme in Construction 3. It shows that for a given step i, if there is a proof Πi with V(vk, i, z0, zi, Πi) = 1, then subsequent steps maintain this correctness. This is demonstrated by induction, ensuring every constructed proof remains valid by the underlying folding scheme's completeness .
The binding property of the hash function ensures that specific outputs depend uniquely on the inputs, which is critical for IVC proofs' validity. It guarantees that the hash ties together prior instance-witness pairs with current inputs, maintaining consistency of verifying logical steps throughout the incremental computation. This contributes significantly to the soundness and correctness of the verification process .
Theorem 2 indicates that the Nova's IVC scheme has proof sizes of O(|F|) and the verifier's work to verify them is Oλ(|F|). The prover's work at each incremental step is approximately |F|. Succinct zero-knowledge proofs of valid IVC proofs are size Oλ(log |F|), and the verifier's work to verify them can vary based on the commitment scheme, being either Oλ(log |F|) or Oλ(|F|).
Elliptic curves in Nova, specifically the Pasta cycle of elliptic curves, are utilized for efficient computation of multiexponentiations, key in the prover's sub-linear scaling costs, while hashing functions are used internally as a random oracle. These cryptographic components help achieve efficient cycles and are integral to the scheme's succinctness and zero-knowledge properties .