HyperNova: Recursive Arguments For Customizable Constraint Systems
HyperNova: Recursive Arguments For Customizable Constraint Systems
Remark 3. Our multi-folding scheme for CCS is more powerful than described it
thus far: it can take µ running linearized CCS instances and ν CCS instances
that all share the same structure and output a single linearized CCS instance. So,
our definition of multi-folding schemes is additionally parameterized by µ and ν.
(3) IVC and its generalizations from multi-folding schemes. Recall that
Nova constructs IVC [Val08] from non-interactive folding schemes. Similarly, we
show how to construct an IVC scheme from non-interactive multi-folding schemes
such as the non-interactive version of the multi-folding scheme for CCS discussed
above. Our construction and security proofs follow the same blueprint. The prover
initializes a “default” running instance. Then, at each step of the incremental
computation, the prover commits to the witness for an augmented CCS instance
(the augmented CCS not only runs a step of the incremental computation, but it
also runs the verifier of the non-interactive multi-folding scheme). The prover
then runs the non-interactive multi-folding scheme to fold that CCS instance
into a running instance. The prover then sends the CCS instance and the output
of the multi-folding instance as input to the next invocation of the augmented
circuit, to prove the next step of the incremental computation.
As in Nova, in the “end” (or at any point in the incremental computation), the
prover is left with a running instance U (which in the case of HyperNova is a
linearized CCS instance) and a CCS instance u that represents the last step
of the incremental computation augmented with a verifier circuit. The prover
folds U and u to get U0 with an invocation of the multi-folding scheme for CCS,
and suppose that the prover’s output in the folding scheme is πfs . HyperNova’s
recursive proof is then π = (U, u, πfs , w) where w is a purported witness to U0 .
HyperNova’s prover can then send π to a verifier, but the size of the proof is
linear in the size of the step of an incremental computation. Thus, as in Nova,
HyperNova’s prover can use a general zkSNARK to prove the knowledge of a
valid π. In particular, Spartan excluding the first sum-check invocation provides
a necessary zkSNARK. Of course, other proof systems can also be used as long
as they can prove the knowledge of a valid π.
2 Preliminaries
We use λ to denote the security parameter and F to denote a finite field (e.g., the
prime field Fp for a large prime p). We use negl(λ) to denote a negligible function
in λ. Throughout the paper, the depicted asymptotics depend on λ, but we elide
this for brevity. We use “PPT algorithms” to refer to probabilistic polynomial
time algorithms.
X `
Y
Z(x
e 1 , . . . , x` ) = Z(e) · (xi · ei + (1 − xi ) · (1 − ei ))
e∈{0,1}` i=1
X
= Z(e) · eq(x,
e e)
e∈{0,1}`
Q`
Note that eq(x,
e e) = i=1 (ei · xi + (1 − ei ) · (1 − xi )), which is the MLE of the
following function:
(
1 if x = e
eq(x, e) =
0 otherwise
P
Proof. Let Q(X) = x∈{0,1}` eq(X,
e x) · P (x) By the definition of eq,
e we have
that
P (x) = Q(x)
`
for all x ∈ {0, 1} . However, because P ∈ F[X1 , . . . , X` ] is multilinear it is
completely determined by 2` evaluation points. The same is holds for Q. Because
P and Q agree on 2` points, they must be the same polynomial.
2.2 Schwartz-Zippel lemma
Lemma 2. let g : F` → F be an `-variate polynomial of total degree at most d.
Then, on any finite set S ⊆ F,
Pr [g(x) = 0] ≤ d/|S|
x←S `
Of course, given g, V can deterministically evaluate the above sum and verify
whether the sum is T . But, this computation takes time exponential in `. Lund et
al. [LFKN90] describe the sum-check protocol that requires far less computation
on V’s behalf, but provides a probabilistic guarantee. In the protocol, V takes
as input randomness r ∈ F` and interacts with P over a sequence of ` rounds.
At the end of this interaction, V outputs a claim about the evaluation g(r). We
denote the sum-check protocol as c ← hP, V(r)i(g, `, d, T ).
For any `-variate polynomial g with degree at most d in each variable, the
sum-check protocol satisfies the following properties.
• Completeness. If T =
P
x∈{0,1}` g(x), then for a correct P and for all
r ∈ F` , Prr {hP, V(r)i(g, `, d, T ) = c ∧ c = g(r)} = 1.
• Soundness. If T 6= ? `
P
x∈{0,1}` g(x), then for any P and for all r ∈ F ,
?
Prr {hP , V(r)i(g, `, d, T ) = c ∧ g(r) = c} ≤ ` · d/|F|.
• Succinctness. The communication cost is O(` · d) elements of F.
2.4 Arguments of knowledge and SNARKs
We adapt the definition provided in [KST22].
3 Multi-folding schemes
Recall that a folding scheme [KST22] for a relation R is a protocol between
a prover and verifier in which the prover and the verifier reduce the task of
checking two instances in R with the same structure s into the task of checking
a single instance in R with structure s.
We introduce a generalization of folding schemes, which we refer to as multi-
folding schemes. A multi-folding scheme is defined with respect to a pair of
relations (R1 , R2 ) and size parameters µ and ν. It is an interactive protocol
between a prover and a verifier in which the prover and the verifier reduce the
task of checking a collection of µ instances in R1 and a collection of ν instances in
R2 that all share the same structure s into the task of checking a single instance
in R1 with structure s. Below, we formally define multi-folding schemes.
pp ← G(1λ ),
(s, (u~1 , u~2 ), (w~1 , w~2 )) ← A(pp),
(µ) (ν)
Pr (pp, s, u, w) ∈ R1 (pp, s, u~1 , w~1 ) ∈ R1 , (pp, s, u~2 , w~2 ) ∈ R2 , = 1.
(pk, vk) ← K(pp, s),
(u, w) ← hP, Vi((pk, vk), (u~1 , u~2 ), (w~1 , w~2 ))
3. Efficiency: The communication costs and V’s computation are lower in the
case where V participates in the multi-folding scheme and then checks a witness
sent by P for the folded instance than the case where V checks witnesses sent
by P for each of the original instances.
A multi-folding scheme is secure in the random oracle model if the above require-
ments hold when all parties are provided access to a random oracle.
pp ← G(1λ ),
(s, (u~1 , w~1 ), (u~2 , w~2 )) ← A(pp),
(µ) (ν) ∼
(pp, s, (u~1 , u~2 ), tr, ρ) (pp, s, u~1 , w~1 ) ∈ R1 , (pp, s, u~2 , w~2 ) ∈ R2 ,
=
(pk, vk) ← K(pp, s),
tr ← trace(hP, Vi, ((pk, vk), (u~1 , u~2 ), (w~1 , w~2 )))
pp ← G(1λ ),
(s, (u~1 , w~1 ), (u~2 , w~2 )) ← A(pp),
(pp, s, (u~1 , u~2 ), tr, ρ) (pp, s, u~1 , w~1 ) ∈ R1 , (pp, s, u~2 , w~2 ) ∈ R2 ,
(pk, vk) ← K(pp, s),
tr ← S(pp, s, (u~1 , u~2 ), ρ)
G(1λ ) → pp:
1. Sample size bounds m, n, N, `, t, q, d ∈ N with n = 2 · (` + 1)
2. ppPC ← Gen(1λ , log n − 1)
3. Output (m, n, N, `, t, q, d, ppPC )
1. pk ← (pp, ([M
f1 , . . . , M
ft ], [S1 , . . . , Sq ], [c1 , . . . , cq ]))
2. vk ← ⊥
3. Output (pk, vk)
$
6. V → P: V samples ρ ← F and sends it to P.
7. V, P: Output the folded linearized committed CCS instance (C 0 , u0 , x0 , rx0 , v10 , . . . , vt0 ),
where for all i ∈ [t]:
C 0 ← C1 + ρ · C2
u0 ← u + ρ · 1
x0 ← x1 + ρ · x2
vi0 ← σi + ρ · θi
e0 ← w
8. P: Output the folded witness w e1 + ρ · w
e2 .
Consider prover and verifier key (pk, vk) ← K(pp, S). Suppose the prover and
verifier are provided a linearized committed CCS instance
(C1 , u, x1 , rx , v1 , . . . , vt )
that
c = g(rx0 )
X
= γ j · Lj (rx0 ) + γ t+1 · Q(rx0 )
j∈[t]
X X Y
= γ j · e1 · σj + γ t+1 · e2 ci · θj .
j∈[t] i∈[q] j∈Si
(C2 , 1, x2 , rx0 , θ1 , . . . , θt ).
Some of our probabilistic analysis below is adapted from the proof of forking
lemma for folding schemes [KST22], which itself builds on the proof of the forking
lemma for interactive arguments [BCC+ 16].
Proof. Consider an adversary A that adaptively picks the structure and instances,
and a malicious prover P ∗ that succeeds with probability . Let pp ← G(1λ ).
Suppose on input pp and random tape ρ, the adversary A picks a CCS structure
ϕ1 = (C1 , u, x1 , rx , v1 , . . . , vt ),
E(pp, ρ):
1. Obtain the output tuple from A:
e1 + ρ(i) · w
w e(i) .
e2 = w (1)
8. Output (w
e1 , w
e2 ).
We first demonstrate that the extractor E runs in expected polynomial time.
Observe that E runs the interaction once, and if it does not abort, keeps rerunning
the interaction until P ∗ succeeds, Thus, the expected number of times E runs
the interaction is
1 1
1 + Pr[First call to hP ∗ , Vi succeeds] · = 1 + · = 2.
Pr[hP ∗ , Vi succeeds]
Therefore, we have that the extractor runs in expected polynomial-time.
We now analyze E’s success probability. We must demonstrate that E succeeds
in producing w
e1 and w
e2 such that
e1 ) ∈ RLCCCS
(pp, s, ϕ1 , w and e2 ) ∈ RCCCS
(pp, s, ϕ2 , w
Now suppose
p that that the extractor does not abort in step (4) and p
requires less
than 3 |F| rewinds. This ensures that the extractor tests at most 3 |F| values
p 2
for ρ. Thus, the probability that ρ(1) =
6 ρ(2) is 1 − 3 |F| /|F|. Thus, assuming
p 2
3
|F| ≥ 2, we have
p that the probability the extractor successfully produces some
output in under 3 |F| rewinding steps is
! p 2!
2 3
|F|
1− p ·· 1− = − negl(λ).
3
|F| |F|
Next, if the extractor does not abort, we show that the extractor succeeds in
producing satisfying witnesses with probability 1−negl(λ). This brings the overall
extractor success probability to − negl(λ).
(i) (i) (i)
Indeed, for i ∈ {1, 2}, let ϕ(i) = (C (i) , u(i) , x(i) , rx , v1 , . . . , vt ). We first show
that the retrieved polynomials are valid openings to the corresponding commit-
ments in the instance. For i ∈ {1, 2}, because w e(i) is a satisfying witness, by
construction,
e1 ) + ρ(i) · Commit(pp, w
Commit(pp, w e2 )
e1 + ρ(i) · w
= Commit(pp, w e2 ) By additive homomorphism.
(i)
= Commit(pp, w
e ) By Equation (1).
= C (i) e(i) is a satisfying opening.
Witness w
= C1 + ρ(i) · C2 By the verifier’s computation.
Commit(pp, w
e1 ) = C1 (2)
Commit(pp, w
e2 ) = C2 . (3)
Next, we must argue that w e1 and we2 satisfy the remainder of the instances ϕ1
and ϕ2 respectively under the structure s.
Indeed, consider (σ1 , . . . , σt ) and (θ1 , . . . , θt ) sent by the prover which by the
extractor’s construction are identical across all executions of the interaction. By
the verifier’s computation we have that for i ∈ {1, 2} and all j ∈ [t]
(i)
σj + ρ(i) · θj = vj (4)
e(i) is a satisfying witness, for i ∈ {1, 2} we have for all j ∈ [t] that
Now, because w
(i)
X
vj = fj (rx0 , y) · ze(i) (y),
M
y∈{0,1}s0
Thus, because that the verifier does not abort, we have that
X X Y
c= γ j · e1 · σj + γ t+1 · e2 · ci · θj
j∈t i∈[q] j∈Si
X X Y
= e x , rx0 ) · σj + γ t+1 · eq(β,
γ j · eq(r e rx0 ) · ci · θj
j∈t i∈[q] j∈Si
X X
= e x , rx0 ) ·
γ j · eq(r fj (rx0 , y) · ze1 (y) +
M
j∈t y∈{0,1}s0
X Y X
γ t+1 · eq(β,
e rx0 ) · ci · fj (rx0 , y) · ze2 (y)
M
i∈[q] j∈Si y∈{0,1}s0
X
= γj · Lj (rx0 ) + γ t+1 · Q(rx0 )
j∈[t]
= g(rx0 )
by the soundness of the sum-check protocol, this implies that with probability
1 − O(d · s)/|F| = 1 − negl(λ) over the choice of rx0 ,
X X
γ j · vj + γ t+1 · 0 = g(x)
j∈[t] x∈{0,1}s
X X
= γ j · Lj (x) + γ t+1 · Q(x)
x∈{0,1}s j∈[t]
X X X
= γj · Lj (x) + γ t+1 · Q(x)
j∈[t] x∈{0,1}s x∈{0,1}s
By the Schwartz-Zippel lemma [Sch80], this implies that with probability 1 −
O(t)/|F| = 1 − negl(λ) over the choice of γ, we have
X
vj = Lj (x)
x∈{0,1}s
F 0 (vk, Ui , ui , (i, z0 , zi ), ωi , π) → x:
1. If i = 0, output hash(vk, 1, z0 , F (z0 , ω0 ), u⊥ )
2. Otherwise:
(a) Check that ui .x = hash(vk, i, z0 , zi , Ui ), where ui .x is the public IO of ui
(b) Compute Ui+1 ← NIFS.V(vk, Ui , ui , π)
(c) Output hash(vk, i + 1, z0 , F (zi , ωi ), Ui+1 )
Because F 0 can be computed in polynomial time, it can be represented as a
RCCCS structure. Let
denote the satisfying RCCCS instance-witness pair (ui+1 , wi+1 ) for the execution
of F 0 on non-deterministic advice (vk, Ui , ui , (i, z0 , zi ), ωi , π).
We define the IVC scheme (G, K, P, V) as follows.
Proof. Consider (F, i + 1, z0 , zi+1 ) and the corresponding inputs (zi , ωi ) such that
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
We must show that given
that
V(vk, 0, z0 , z0 , Π0 ) = 1.
Π1 = ((u⊥ , w⊥ ), (u1 , w1 ))
u1 .x = hash(vk, 1, z0 , F (z0 , w0 ), u⊥ ).
Therefore, we have
V(pp, 1, z0 , z1 , Π1 ) = 1.
Π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 ). 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 , π). By construction, this particular input implies that
V(vk, n, z0 , z, Π) = 1
zi ← F (zi−1 , ωi−1 )
zj = F (zj−1 , ωj−1 )
and
V(vk, i, z0 , zi , Πi ) = 1 (6)
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; ρ):
ui .x = hash(vk, i, z0 , zi , Ui ).
Therefore, 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
zj = F (zj−1 , ωj−1 ),
ui .x = hash(vk, i, z0 , zi , Ui ) (7)
by the construction of F 0 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 0 , and (Ui−1 , ui−1 ) were retrieved from wi , by the binding property of
the hash function, and by Equation (7), we have that
Additionally, in the case where i = 1, by the base case check of F 0 , we have that
zi−1 = z0 . Because Eei−1 succeeds with probability − negl(λ), we have that
Proof. On input instances U and u, NIFS.V computes U.C ← U.C + ρ · u.C, which
costs a single group scalar multiplication. Verifying the non-interactive sum-check
proof in the non-interactive multi-folding scheme proof requires the verifier to
perform O(d · log m) finite field operations and O(log m calls to the RO to obtain
challenges in the sum-check protocol. Finally, F 0 makes two additional calls to
hash (details are in the description of F 0 ).
1. Parse Πi as (Πi0 , Ui , Wi )
2. Compute (ui , wi ) ← trace(F, (zi , ωi )) (where trace is defined as in Construc-
tion 3)
3. Compute (Ui+1 , Wi+1 , πi+1 ) ← NIFS.P(pkNIFS , (Ui , Wi ), (ui , wi ))
0
4. Compute Πi+1 ← IVC.P(pkIVC , i, (vkNIFS , u⊥ , z0 ), (vkNIFS , Ui , zi ), (ui , πi+1 ), Πi0 )
0
5. Output Πi+1 = (Πi+1 , Ui+1 , Wi+1 )
V(vk, (i, z0 , zi ), Πi ) → {0, 1}:
1. Parse Πi as (Πi0 , Ui , Wi ).
2. Check that IVC.V(vkIVC , i, (vkNIFS , u⊥ , z0 ), (vkNIFS , Ui , zi ), Πi0 ) = 1
3. Check that (ppNIFS , step, Ui , Wi ) ∈ RLCCCS
The folding scheme applies the sum-check protocol and outputs a new claim
?
about Te(qr0 ) = vr0 . The prover’s work in the folding scheme is O(n) finite field
operations. The verifier’s work in the non-interactive folding scheme is O(log n)
hash and field operations. Furthermore, at the end of the sum-check protocol (i.e.,
inside the folding scheme), the verifier computes evaluations of m eq
e polynomials
at a random point, this takes O(m · log n) multiplications.
By the satisfiability of the input instances we have that vr = Te(qr ) and vi = Te(qi )
for all i ∈ [m]
Therefore, for ρ ∈ F we have that
X X
vr + ρi · vi = Te(qr ) + ρi · Te(qi ) By precondition.
i∈[m] i∈[m]
X X
= e r , x) · Te(x) +
eq(q ρi · eq(q
e i , x) · Te(x) By Lemma 1
x∈{0,1}` i∈[m]
= g(x) By definition.
Proof. Consider an adversary A that adaptively picks the structure and instances,
and a malicious prover P ∗ that succeeds with probability . Let pp = ` ← G(1λ ).
Suppose on input pp and random tape ρ, the adversary A picks a structure Te ∈
F[X1 , . . . , X` ], an Rpoly instance (qr , vr ), a vector of Rlookup instances (v1 , . . . , vm ),
and some auxiliary state st.
We construct an extractor E that succeeds with probability −negl(λ) in obtaining
satisfying witnesses for the original instances. It works as follows. On input pp
and ρ, E first obtains the following tuple from A:
and obtains the first message (q1 , . . . , qm ) from P ∗ by parsing the corresponding
transcript. The extractor E outputs (⊥, (q1 , . . . , qm )) as the witness. Because the
extractor only runs P ∗ once, it runs in expected polynomial-time.
We must argue that ⊥ is a satisfying Rpoly witness for (qr , vr ), and that (q1 , . . . , qm )
are satisfying Rlookup witnesses for the input instances (v1 , . . . , vm ) with proba-
bility − negl(λ).
Suppose we have that the witness ⊥ output by P ∗ is satisfying for the corre-
sponding verifier’s output (qr0 , vr0 ) with probability . By definition, this means
that
with probability . Moreover, this means that the verifier does not abort with
probability at least , and thus we have the following:
X
c = e · vr0 + ρi · ei · vr0
i∈[m]
X
= e r , qr0 )
eq(q · vr0 + e i , qr0 ) · vr0
ρi · eq(q By the verifiers computation.
i∈[m]
X
e r , qr0 ) · Te(qr0 ) +
= eq(q e i , qr0 ) · Te(qr0 )
ρi · eq(q By Equation 8.
i∈[m]
= g(qr0 ) By definition.
with probability .
Then, by the soundness of the sum-check protocol, we must have that
X X
vr + ρ i · vi = g(x)
i∈[m] x∈{0,1}`
X X
= e r , x) · Te(x) +
eq(q ρi · eq(q
e i , x) · Te(x) By definition.
x∈{0,1}` i∈[m]
X
= Te(qr ) + ρi · Te(qi ) By Lemma 1
i∈[m]
and
(m)
(pp, Te, (v1 , . . . , vm ), (q1 , . . . , qm )) ∈ Rlookup .
with probability − negl(λ). Because the extractor E outputs the initial message
from the prover, we have that the extractor succeeds with probability −
negl(λ).
Acknowledgments
We thank Justin Drake, Ariel Gabizon, Justin Thaler, and Ioanna Tzialla for helpful
conversations and comments on a prior version of this paper.
References
BCC+ 16. Jonathan Bootle, Andrea Cerulli, Pyrros Chaidos, Jens Groth, and
Christophe Petit. Efficient zero-knowledge arguments for arithmetic circuits
in the discrete log setting. In EUROCRYPT, 2016.
BCCT13. Nir Bitansky, Ran Canetti, Alessandro Chiesa, and Eran Tromer. Recursive
composition and bootstrapping for SNARKs and proof-carrying data. In
STOC, 2013.
BCL+ 21. Benedikt Bünz, Alessandro Chiesa, William Lin, Pratyush Mishra, and
Nicholas Spooner. Proof-carrying data without succinct arguments. In
CRYPTO, 2021.
BCMS20. Benedikt Bünz, Alessandro Chiesa, Pratyush Mishra, and Nicholas Spooner.
Proof-carrying data from accumulation schemes. In TCC, 2020.
BCTV14. Eli Ben-Sasson, Alessandro Chiesa, Eran Tromer, and Madars Virza. Scal-
able zero knowledge via cycles of elliptic curves. In CRYPTO, 2014.
BDFG21. Dan Boneh, Justin Drake, Ben Fisch, and Ariel Gabizon. Halo Infinite:
Recursive zk-SNARKs from any Additive Polynomial Commitment Scheme.
In CRYPTO, 2021.
BFS20. Benedikt Bünz, Ben Fisch, and Alan Szepieniec. Transparent SNARKs
from DARK compilers. In EUROCRYPT, 2020.
BGH19. Sean Bowe, Jack Grigg, and Daira Hopwood. Halo: Recursive proof composi-
tion without a trusted setup. Cryptology ePrint Archive, Report 2019/1021,
2019.
BGH20. Sean Bowe, Jack Grigg, and Daira Hopwood. Halo2, 2020. https://github.
com/zcash/halo2.
CBBZ23. Binyi Chen, Benedikt Bünz, Dan Boneh, and Zhenfei Zhang. Hyperplonk:
Plonk with linear-time prover and high-degree custom gates. In EURO-
CRYPT, 2023.
CHM+ 20. Alessandro Chiesa, Yuncong Hu, Mary Maller, Pratyush Mishra, Noah
Vesely, and Nicholas Ward. Marlin: Preprocessing zkSNARKs with universal
and updatable SRS. In EUROCRYPT, 2020.
Dra22. Justin Drake. ZK Whiteboard Sessions – Module Fourteen: Nova
Crash Course with Justin Drake. https://www.youtube.com/watch?v=
SwonTtOQzAk, 2022.
EFG22. Liam Eagen, Dario Fiore, and Ariel Gabizon. cq: Cached quotients for fast
lookups. Cryptology ePrint Archive, 2022.
FS86. Amos Fiat and Adi Shamir. How to prove yourself: Practical solutions to
identification and signature problems. In CRYPTO, pages 186–194, 1986.
GGPR13. Rosario Gennaro, Craig Gentry, Bryan Parno, and Mariana Raykova.
Quadratic span programs and succinct NIZKs without PCPs. In EU-
ROCRYPT, 2013.
GW20. Ariel Gabizon and Zachary J Williamson. plookup: A simplified polynomial
protocol for lookup tables. Cryptology ePrint Archive, 2020.
GWC19. Ariel Gabizon, Zachary J. Williamson, and Oana Ciobotaru. PLONK:
Permutations over Lagrange-bases for oecumenical noninteractive arguments
of knowledge. ePrint Report 2019/953, 2019.
KMT22. Dmitry Khovratovich, Mary Maller, and Pratyush Ranjan Tiwari. MinRoot:
candidate sequential function for Ethereum VDF. Cryptology ePrint Archive,
Paper 2022/1626, 2022.
KP22. Abhiram Kothapalli and Bryan Parno. Algebraic reductions of knowledge.
Cryptology ePrint Archive, Paper 2022/009, 2022.
KS22. Abhiram Kothapalli and Srinath Setty. SuperNova: Proving universal
machine executions without universal circuits. Cryptology ePrint Archive,
2022.
KST22. Abhiram Kothapalli, Srinath Setty, and Ioanna Tzialla. Nova: Recursive
Zero-Knowledge Arguments from Folding Schemes. In CRYPTO, 2022.
LFKN90. Carsten Lund, Lance Fortnow, Howard Karloff, and Noam Nisan. Algebraic
methods for interactive proof systems. In FOCS, October 1990.
MBKM19. Mary Maller, Sean Bowe, Markulf Kohlweiss, and Sarah Meiklejohn. Sonic:
Zero-knowledge SNARKs from linear-size universal and updateable struc-
tured reference strings. In CCS, 2019.
Moh23. Nicolas Mohnblatt. Sangria: a folding scheme for PLONK. https://
geometry.xyz/notebook/sangria-a-folding-scheme-for-plonk, 2023.
Sch80. Jacob T Schwartz. Fast probabilistic algorithms for verification of polyno-
mial identities. Journal of the ACM, 27(4), 1980.
Set20. Srinath Setty. Spartan: Efficient and general-purpose zkSNARKs without
trusted setup. In CRYPTO, 2020.
Sol23. Tomer Solberg. A brief history of lookup arguments. https://github.com/
ingonyama-zk/papers/blob/main/lookups.pdf, 2023.
STW23. Srinath Setty, Justin Thaler, and Riad Wahby. Customizable constraint
systems for succinct arguments. Cryptology ePrint Archive, 2023.
Tha13. Justin Thaler. Time-optimal interactive proofs for circuit evaluation. In
CRYPTO, 2013.
Val08. Paul Valiant. Incrementally verifiable computation or proofs of knowledge
imply time/space efficiency. In TCC, pages 552–576, 2008.
VSBW13. Victor Vu, Srinath Setty, Andrew J. Blumberg, and Michael Walfish. A
hybrid architecture for verifiable computation. In S&P, 2013.
Zha23. Zhenfei Zhang. Origami: Fold a Plonk for Ethereum’s VDF. Cryptology
ePrint Archive, 2023.