Nova Recursive Zero-Knowledge Arguments From Folding Schemes
Nova Recursive Zero-Knowledge Arguments From Folding Schemes
1 Introduction
Remark 1 (Folding Schemes vs. SNARKs). SNARKs for NP [7, 25, 26, 32, 38]
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 [40]. 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, 28]. Finally, the library accepts F (i.e.,
a step of the incremental computation) as a bellperson gadget [1].
Fig. 1: A detailed breakdown of sub-routines in Nova’s verifier’s circuit and the associated
number of R1CS constraints. The verifier circuit on each of the curves in the cycle
are not identical as they have slightly different base cases. We find that a majority of
constraints in the verifier circuit step from the group scalar multiplications.
5
102 1054 104
– Compressed IVC proofs are ≈ 8–9 KB and are significantly shorter than IVC
proofs (e.g., they are ≈7,400× shorter when |F | ≈ 220 constraints).
– Verifying a compressed proof is only ≈2× higher costs than verifying a
significantly longer IVC proof.
6
“Verifier circuit” Prover Proof size Verifier assumptions
(dominant ops) (each step)
BCTV14 [6] with [29]† 3P O(C) FFT Oλ (1) Oλ (1) q-type
O(C) MSM
√ √ √
Spartan [40]-based IVC O( C) G O(C) MSM Oλ ( C) Oλ ( C) DLOG, RO
Fractal [22] Oλ (log2 C) F O(C) FFT Oλ (log2 C) Oλ (log2 C) RO
O(log2 C) H O(C) MHT
Halo [12] O(log C) G O(C) FFT Oλ (log C) Oλ (C) DLOG, RO
O(C) EXP
BCLMS [16]? 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. 3: 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.
not rely on succinct arguments. However, Nova’s approach has several conceptual
and efficiency advantages over the work of Bünz et al [16]:
– Nova introduces a new primitive called a folding scheme, which is conceptually
simpler and is easier to realize than prior notions such as (split) accumulation
schemes used in prior work [16, 17]. Furthermore, a folding scheme for NP
directly leads to IVC and is again easier to analyze than with prior notions.
– At each step, their prover performs an O(|F |)-sized FFT (which costs
O(|F | log |F |) operations over F ). Whereas, Nova does not perform any FFTs.
– Their prover’s work for multiexponentitions at each step and the size of their
verifier circuit are both higher than in Nova by ≈4×.
– 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.
7
Concurrent work. In an update concurrent with this work, Bünz et al. [16] 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.
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
– G(1λ ) → pp: On input security parameter λ, samples public parameters pp.
– K(pp, s) → (pk, vk): On input structure s, representing common structure
among instances, outputs the prover key pk and verifier key vk.
– P(pk, u, w) → π: On input instance u and witness w, outputs a proof π
proving that (pp, s, u, w) ∈ R.
– V(vk, u, π) → {0, 1}: Checks instance u given proof π.
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)
pp ← G(1λ ),
V(vk, u, π) = 1, (s, u, π) ← A(pp; ρ),
Pr
(pp, s, u, w) 6∈ R (pk, vk) ← K(pp, s), = negl(λ).
w ← E(pp, ρ)
9
the prover, the verifier, and the encoder respectively. An IVC scheme (G, K, P, V)
satisfies perfect completeness if for any PPT adversary A
pp ← G(1λ ),
F, (i, z0 , zi , zi−1 , ωi−1 , Πi−1 ) ← A(pp),
(pk, vk) ← K(pp, F ),
Pr V(vk, i, z0 , zi , Πi ) = 1
=1
zi = F (z i−1 , ωi−1 ),
V(vk, i − 1, z0 , zi−1 , Πi−1 ) = 1,
Πi ← P(pk, i, z0 , zi ; zi−1 , ωi−1 , Πi−1 )
pp ← G(1λ ),
zn 6= z, F, (z0 , z, Π) ← P ∗ (pp; ρ),
Pr (pk, vk) ← K(pp, F ), ≤ negl(λ).
V(vk, n, z 0 , z, Π) = 1
(ω0 , . . . , ωn−1 ) ← E(pp, z0 , z; ρ),
zi ← F (zi−1 , ωi−1 ) ∀i ∈ {1, . . . , n}
An IVC scheme satisfies succinctness if the size of the IVC proof Π does not
grow with the number of applications n.
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.
10
– P(pk, (u1 , w1 ), (u2 , w2 )) → (u, w): On input instance-witness tuples (u1 , w1 )
and (u2 , w2 ) outputs a new instance-witness tuple (u, w) of the same size.
– V(vk, u1 , u2 ) → u: On input instances u1 and u2 , outputs a new instance u.
Let
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 = hP(pk, w1 , w2 ), V(vk)i(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) ← hP(pk, w1 , w2 ), V(vk)i(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) ← hP (pk, ρ), V(vk)i(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 = hP(pk, w1 , w2 ), V ∗ (vk, ρ)i(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. [11]. 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 )
6= 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 [25], but it was made explicit in
subsequent work [42]; 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 [24]. 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 [12, 16, 22, 46].
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 [40] (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 0 (Figure 4), 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 0 , to provide intuition. F 0 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 0
so long as ui represents the correct execution of invocation i of F 0 . F 0 performs
two tasks. First, it executes a step of the incremental computation: instance ui
contains zi which F 0 uses to output zi+1 = F (zi ). Second, F 0 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 0 ,
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 0 so long as ui+1 represents the correct execution of invocation i + 1 of F 0 .
The above description glossed over a subtle discrepancy: Because F 0 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 0 must fold
ui+1 .x into Ui+1 .x, meaning that F 0 is stuck trying to squeeze Ui+1 into Ui+1 .x.
To handle this inconsistency, we modify F 0 to output a collision-resistant hash
of its public IO rather than producing it directly (this ensures that the public IO
of F 0 is a constant number of finite field elements). The next invocation of F 0
then additionally takes the preimage of this hash as non-deterministic advice. We
assume that the hash function takes an additional random input (which provides
hiding) but for notational convenience we do not explicitly depict this.
F 0 (vk, Ui , ui , (i, z0 , zi ), ωi , T ) → x:
18
otherwise,
(1) check that ui .x = hash(vk, i, z0 , zi , Ui ), 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, U, u, T ), and
(4) output hash(vk, i + 1, z0 , F (zi , ωi ), Ui+1 ).
Compute (pkfs , vkfs ) ← NIFS.K(pp, sF 0 ) and output (pk, vk) ← ((F, pkfs ), (F, vkfs )).
If i is 0, check that zi = z0 ;
otherwise,
(1) parse Πi as ((Ui , Wi ), (ui , wi )),
(2) check that ui .x = hash(vk, i, z0 , zi , Ui ),
(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.
Lemma 2 (Completeness). Construction 3 is an IVC scheme that satisfies
completeness.
Proof Intuition. Given a satisfying IVC proof Πi = ((Ui , Wi ), (ui , wi )) sup-
pose that P outputs Πi+1 = ((Ui+1 , Wi+1 ), (ui+1 , wi+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. Thus, Πi+1
is satisfying. Appendix C provides a formal proof.
19
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.
20
Construction 4 (A zkSNARK of a Valid IVC Proof ). Let IVC denote
the IVC scheme in Construction 3, let NIFS denote the non-interactive folding
scheme in Construction 2, and let hash denote a randomized cryptographic
hash function. Assume a zero-knowledge succinct non-interactive argument of
knowledge (Definition 2), zkSNARK, for committed relaxed R1CS. That is, given
public parameters pp, structure s, and instance u, zkSNARK.P can convince
zkSNARK.V in zero-knowledge and with a succinct proof (e.g., Oλ (log N )-sized
proof) that it knows a corresponding witness w such that (pp, s, u, w) is a satisfying
committed relaxed R1CS tuple.
Consider a polynomial-time computable function F . Suppose pp ← IVC.G(1λ )
and (pk, vk) ← IVC.K(pp, F ). Suppose the prover P and verifier V are provided
an instance (i, z0 , zi ). We construct a zkSNARK that allows the prover to show
that it knows an IVC proof Πi such that IVC.V(vk, i, z0 , zi , Πi ) = 1.
In a nutshell, we leverage the fact that Π is two committed relaxed R1CS
instance-witness pairs. So, P first folds instance-witness pairs (u, w) and (U, W)
to produce a folded instance-witness pair (U0 , W0 ), using NIFS.P. Next, P runs
zkSNARK.P to prove that it knows a valid witness for U0 . In more detail, for
polynomial-time computable function F and corresponding function F 0 as defined
in Construction 3 (and instantiated with hash), we define (G, K, P, V) as follows.
G(1λ ) → pp:
P(pk, (i, z0 , zi ), Π) → π:
If i is 0, output ⊥;
otherwise,
(1) parse Π as ((U, W), (u, w))
(2) compute (U0 , W0 , T ) ← NIFS.P(pkNIFS , (U, W), (u, w))
(3) compute πU0 ← zkSNARK.P(pkzkSNARK , U0 , W0 )
(4) output (U, u, T , πU0 ).
If i is 0, check that z0 = zi ;
otherwise,
21
(1) parse π as (U, u, T , πU0 ),
(2) check that u.x = hash(vkNIFS , i, z0 , zi , U),
(3) check that (u.E, u.u) = (u⊥ .E, 1),
(4) compute U0 ← NIFS.V(vkNIFS , U, u, T ), and
(5) check that zkSNARK.V(vkzkSNARK , U0 , πU0 ) = 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
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 construct a simulator S that first iteratively
simulates (Ui , ui ) for all i ∈ {1, . . . , n}. Specifically, given a simulated proof
(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. In the final round, S folds un and
Un (again using a simulated T n ) to produce an instance U0 , and then uses the
simulator of the zkSNARK to produce πU0 . S outputs (Un , un , T n , πU0 ). We
provide a formal proof in Appendix D.
As described in Section 5.2, Nova needs a zkSNARK for committed relaxed R1CS
to prove the knowledge of a valid IVC proof succinctly and in zero-knowledge.
This section presents such a zkSNARK by adapting Spartan [40]. We build on
Spartan [40] to avoid FFTs and a trusted setup.
6.1 Background
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 .
22
Lemma 5 (The Sum-Check Protocol [37]). 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 .
Our exposition below is based on Spartan [40] and its recent recapitulation [36].
The theorem below and its proof is a verbatim adaptation of Spartan’s polynomial
IOP for R1CS to relaxed R1CS.
Recall that an interactive proof (IP) [27] 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) [5, 39] 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 [18] 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 14) where the instance contains a purported witness. We then
compile it into a zkSNARK for committed relaxed R1CS (Definition 12).
23
denote the multilinear extensions of E and W interpreted as functions, so they
are multilinear polynomials in log m and log m − 1 variables respectively.
As noted earlier, the verifier has an oracle access to the following polynomials:
A,
e B,
e C,
e E,
e and W f . Additionally, the verifier reads u and x in entirety.
Let Z = (W, x, u). Similar to how we interpret matrices as functions, we
interpret Z and (x, u) as functions with the following respective signatures:
{0, 1}s → F and {0, 1}s−1 → F . Observe that the MLE Z e of Z satisfies
e 1 , . . . , Xs ) = (1 − X1 ) · W
Z(X ]
f (X2 , . . . , Xs ) + X1 · (x, u)(X2 , . . . , Xs ) (1)
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
24
polynomials at the random vector ry , which means it suffices for the verifier to
evaluate A(r
e x , ry ), B(r
e x , ry ), C(r
e x , ry ), and Z(r
e y ). The first three evaluations
can be obtained via the verifier’s assumed query access to (A, e B,
e C).
e Z(r
e y ) can
be computed (via Equation (1)) from a query to W f and from computing (x, ] u).
In summary, we have the following polynomial IOP.
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 ;
?
– E(r
e x ) = vE ; and
?
– Z(r
e y) = vZ .
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
?
– check if Z(re y) = vZ by checking if: vZ = (1 − ry [1]) · vW + ry [1] ·
]
(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)).
25
The claimed verifier runtime is immediate from the verifier’s runtime in
the sum-check protocol, and the fact that eq e can be evaluated at any input
(τ, rx ) ∈ F 2s in O(log m) field operations. As in Spartan [40], the prover’s work in
the polynomial IOP in O(n) operations over F using prior techniques [44, 50].
26
obtain their variants that can efficiently handle sparse multilinear polynomials;
we refer to them as “Sparse-PCBP ” and “Sparse-PCDory ” respectively.
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 [18] 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 [18, 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 [24] 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).
27
Acknowledgments
We thank 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, a high-performance library used by
Nova to perform multiscalar multiplications over the Pasta cycle of curves. 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. Abhiram Kothapalli (while at Carnegie
Mellon University) was supported by a gift from Bosch, NSF Grant No. 1801369,
and by the CONIX Research Center, one of six centers in JUMP, a Semiconductor
Research Corporation (SRC) program sponsored by DARPA.
28
References
30
[42] 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)
[43] Setty, S., Lee, J.: Quarks: Quadruple-efficient transparent zkSNARKs. Cryp-
tology ePrint Archive, Report 2020/1275 (2020)
[44] Thaler, J.: Time-optimal interactive proofs for circuit evaluation. In:
CRYPTO (2013)
[45] Thaler, J.: Proofs, arguments, and zero-knowledge. http://people.cs.
georgetown.edu/jthaler/ProofsArgsAndZK.html (2020)
[46] Valiant, P.: Incrementally verifiable computation or proofs of knowledge
imply time/space efficiency. In: TCC. pp. 552–576 (2008)
[47] Wahby, R.S., Ji, Y., Blumberg, A.J., Shelat, A., Thaler, J., Walfish, M.,
Wies, T.: Full accounting for verifiable outsourcing. In: CCS (2017)
[48] Wahby, R.S., Tzialla, I., Shelat, A., Thaler, J., Walfish, M.: Doubly-efficient
zkSNARKs without trusted setup. In: S&P (2018)
[49] Wesolowski, B.: Efficient verifiable delay functions. In: EUROCRYPT. pp.
379–407 (2019)
[50] Xie, T., Zhang, J., Zhang, Y., Papamanthou, C., Song, D.: Libra: Succinct
zero-knowledge proofs with optimal prover computation. In: CRYPTO (2019)
[51] Zhang, Y., Genkin, D., Katz, J., Papadopoulos, D., Papamanthou, C.: vSQL:
Verifying arbitrary SQL queries over dynamic outsourced databases. In: S&P
(2017)
31
Supplementary Materials
ϕ1 = (E 1 , u1 , W 1 , x1 ) and ϕ2 = (E 2 , u2 , W 2 , x2 ).
32
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,
33
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,
34
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(λ).
35
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 ))
u1 .x = hash(vk, 1, z0 , F (z0 , w0 ), u⊥ ).
V(pp, 1, z0 , z1 , Π1 ) = 1.
36
Inductive Step (i ≥ 1): Assume that for
Πi = ((Ui , Wi ), (ui , wi ))
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 ), 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 0 on input (U, u, (i, z0 , zi ), ωi , T ). By construction, this
particular input implies that
V(vk, n, z0 , z, Π) = 1
zi ← F (zi−1 , ωi−1 )
37
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 0 (and not just a trivially satisfying witness). Then, by the
construction of F 0 and the binding property of the hash function, we have that
Ui = NIFS.V(vk, Ui−1 , ui−1 , T i−1 )
38
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 0 with probability − negl(λ)
in expected polynomial-time.
Given an expected polynomial-time P ei−1 and an expected polynomial-time
Eei−1 , E constructs an expected polynomial time Ei−1 as follows
39
Proof. Completeness and knowledge soundness hold due to the completeness
and knowledge soundness of the underlying succinct non-interactive argument
of knowledge and the non-interactive folding scheme. 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
S(pp, (i, z0 , zi ), τ ) → π:
If n is 0,
output ⊥;
otherwise,
(1) for (rx , rW ) ←R F ,
u1 ← (hash(vk, 1, z0 , ⊥, u⊥ ; rx ), (0, 1, Com(0; rW )))
U1 ← u⊥
(2) for i ∈ {1, . . . , n − 1},
T i ← NIFS.S(ppNIFS , Ui , ui )
Ui+1 ← NIFS.V(vkNIFS , Ui , ui , T i )
(rx , rW ) ←R F
ui+1 ← (hash(vk, i + 1, z0 , ⊥, Ui+1 ; rx ), (0, 1, Com(0; rW )))
(3) T n ← NIFS.S(ppNIFS , Un , un )
(4) πU0 ← zkSNARK.S(ppzkSNARK , NIFS.V(vkNIFS , Un , un , T n ), τ )
(5) output (Un , un , T n , πU0 ).
where NIFS.S and NIZK.S are the simulators for the underlying non-interactive
folding scheme and the zkSNARK respectively.
In the base case, both the simulator and honest prover output ⊥. In the
non-base case, we reason that (U, u) are indistinguishable from that produced by
an honest prover. We do so by showing that if (Ui , ui ) is indistinguishable then
(Ui+1 , ui+1 ) is indistinguishable.
40
guishable 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 setting.
We provide a proof for our variant of the forking lemma by adapting the proof of
the forking lemma from Bootle et al. [11].
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
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 ):
41
(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
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 6= ⊥ 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
(ni − 1)
1 + Pr [First call to T (i + 1) succeeds] ·
Pr [T (i + 1) returns tree 6= ⊥]
(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
42
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 |
We first recall the syntax for commitment schemes for vectors introduced in
Section 2.1 and then define the required binding and hiding properties. Next,
we define the additionally required additively homomorphic and succinctness
properties. For the sake of concreteness, we reproduce Pedersen’s commitment
scheme, which satisfies all of the required properties.
(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 6= x1
b0 ← Open(pp, C, x0 , r0 ),
b1 ← Open(pp, C, x1 , r1 )
43
(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̄
2 C ← Com(pp, xb , r),
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 [36, 40, 45]. We recall a few basic facts
about polynomials.
44
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.
45