fflonk: a Fast-Fourier inspired verifier efficient version of PlonK

Ariel Gabizon, Zachary J. Williamson

2021 · eprint 2021/1167

Disclaimer

This content was automatically converted from the original PDF and may have undergone post-processing. None of these steps have been reviewed or approved by the authors. Errors in formulas, definitions, proofs, or text may have been introduced during conversion. The authoritative version is the original paper on ePrint. Always cite and verify against the original publication.

Converted with: marker · 2026-02-16

Ariel Gabizon Zachary J. Williamson Aztec Network

November 1, 2021

Abstract

We present a variant of the Kate, Zaverucha and Goldberg polynomial commitment scheme [\[KZG10\]](#page-17-0) where d polynomials can be opened at a point that is a d'th power, such that the amount of verifier group operations does not depend on d. Our method works by reducing opening multiple polynomials at a single point x, to opening a single polynomial at many points via an "FFT-like identity".

As an application we present a version of the PlonK zk-SNARK[\[GWC19\]](#page-17-1) with significantly improved verifier performance, at the cost of roughly tripling the prover time. Specifically, in addition to the two pairings, the verifier only performs five scalar multiplications, rather than 16 or 18 as in the versions presented in [\[GWC19\]](#page-17-1).

1 Introduction

Polynomial commitment schemes (PCS)[\[KZG10\]](#page-17-0) have become a central ingredient in recent constructions of succinct arguments(SNARKs) \[MBKM19, Gab19, CHM+19, GWC19, [BFS19\]](#page-16-2) when one desires a "universal and updatable" setup procedure \[GKM+]. They "force" a prover to answer verifier queries according to a fixed polynomial of bounded degree.

In blockchains such as Ethereum, the precise cost of verifiying a zk-SNARK is of crucial importance to applications such as "zk-rollups"[\[But\]](#page-16-3). In these recent constructions this cost mostly reduces to the verification cost of the open procedure of the PCS. In this procedure we verify the correctness of evaluations given to the verifier, of polynomials previously committed by the prover. In this work we give a novel method to reduce verifier cost when opening many commitments in a [\[KZG10\]](#page-17-0)-style PCS.

1.1 Overiew of method and comparison to previous techniques:

The original scheme of [\[KZG10\]](#page-17-0) requires two pairings to open a polynomial f at a point x ∈ F. If we wish to open several polynomials f0, . . . , ft−1 at x - using [\[KZG10\]](#page-17-0) directly would require 2t verifier pairings. The common way to improve on this, used in [MBKM19, CHM+19, GWC19], has been to choose a random \gamma \in \mathbb{F} , and instead only verify the value of f(x) := \sum_{i=0}^{t-1} \gamma^i f_i(x) .

What verifier efficiency does this result in? The verifier only does two pairings as when opening a single polynomial. However, she must create the commitment for f out of the commitments of the \{f_i\} , which requires t-1 scalar multiplications to multiply the commitments by the scalars \{\gamma^i\}_{i\in\{0,\dots,t-1\}} . Can we get rid of this dependence on t in the verifier performance?

The work of Boneh, Drake, Fisch and Gabizon [BDFG20] suggests a route: They give an opening protocol for multiple points where the number of verifier group operations only depends on the number of polynomials but not the number of points (there is still a dependency in the number of verifier field operations, but these are 3 orders of magnitude cheaper than a scalar multiplication). Thus, if we could reduce opening many polynomials at a single point to opening a single polynomial at multiple points we could then use [BDFG20] to obtain our desired result.

An illustration Suppose for a moment we only have two polynomials f_0 , f_1 to open at x. A straightforward attempt to avoid the scalar multiplication would be to only open f_0 + f_1 at x. Let a := f_0(x) and b := f_1(x) . This would prove that the sum of values (f_0 + f_1)(x) = c = a + b is correct. However, it doesn't constrain a, b individually: For any value a' \in \mathbb{F} we could choose b' such that a' + b' = c, and the verifier would also accept (a', b'). We thus need a way to generate another linear constraint on (a, b) without resorting to using two polynomials.

The well-known "FFT equation" comes to our aid. In the FFT setting, we represent a polynomial f by two polynomials f_0 , f_1 of half the degree derived from its even and odd powers:

f(X) = f_0(X^2) + X \cdot f_1(X^2).

Here, we use this equation in the reverse direction - starting from f_0, f_1 and deriving f. Suppose x = z^2 is a square. f will allow us to derive the desired second constraint on a, b. Specifically, we open f at \{z, -z\} . We have

b_0 = f(z) = f_0(x) + zf_1(x) = a + zb
b_1 = f(-z) = f_0(x) - zf_1(x) = a - zb

Thus, these two openings of f have given us the desired two independent constraints on a, b and we can determine them. Using the natural extension to t'th roots of unity gives us the same thing for t polynomials.

1.2 Our results:

We compare the performance of our PCS to a more straightforward batched version of the [KZG10] scheme as in [GWC19]. For simplicity, we look at the case where we want to open t polynomials of degree smaller than n at a single point x \in \mathbb{F} that is a t'th power, for $t \mid ( \mathbb{F} - 1)$ . The table clearly shows the tradeoff - while the verifier group operations

for opening do not depend anymore on t, the prover's do - as opposed to more standard batching where the prover's group exponentations1 only depend on the maximal degree amongst the polynomials. See Theorem 5.2 for the more detailed efficiency properties in the general case (where each polynomial is opened at an arbitrary subset of points).

Table 1: Comparison of opening t polynomials of degree smaller than n, at a point x \in \mathbb{F} of the form x = z^t for some z \in \mathbb{F} . In prover/verifier work columns \mathbb{G}_i means scalar multiplication in \mathbb{G}_i , \mathbb{F} means addition or multiplication in \mathbb{F} , and \mathbf{P} means pairing.

SRS size prover work proof
length
verifier group operations
KZG n \mathbb{G}_1, 2 \mathbb{G}_2 tn \ \mathbb{G}_1, \ O(tn) \ \mathbb{F} t \mathbb{G}_1 2t P
Batched KZG as in [GWC19] n \mathbb{G}_1, 2 \mathbb{G}_2 n \mathbb{G}_1, O(tn) \mathbb{F} 1 \mathbb{G}_1 t-1 \mathbb{G}_1, 2 \mathbf{P}
This work tn \mathbb{G}_1, 2 \mathbb{G}_2 2tn \ \mathbb{G}_1, \ O(tn) \ \mathbb{F} 2 \mathbb{G}_1 3 \mathbb{G}_1, 2 \mathbf{P}

Application to \mathscr{PlonK} : The \mathscr{PlonK} proving system [GWC19] allows generating proofs of knowledge for assignments to fan-in two arithmetic circuits with a universal and updatable SRS (see the paragraph on this topic in Section 2.1). Plugging in our PCS into \mathscr{PlonK} allows saving in verifier work at the expense of increased prover computation. We compare the \mathscr{PlonK} scheme when using the [KZG10]-based PCS in [GWC19] and the PCS of this paper in Table 2.

Table 2: Comparison of \mathcal{Plon}\mathcal{X} efficiency for fan-in two circuit with n gates.

SRS size prover group operations proof
length
verifier group operations
[GWC19] 3n \mathbb{G}_1, 2 \mathbb{G}_2 11n \ \mathbb{G}_1 7 \mathbb{G}_1, 7 \mathbb{F} 16 \; \mathbb{G}_1, \; 2 \; \mathbf{P}
this work 9n \mathbb{G}_1, 2 \mathbb{G}_2 35n \mathbb{G}_1 4 \mathbb{G}_1, 15 \mathbb{F} 5 \mathbb{G}_1, 2 \mathbf{P}

When is it worth it?

The zk-rollup setting motivates verifier-prover tradeoffs such as in this paper. We typically have "client proofs" computed by weak machines. These proofs are not posted on the blockchain, but usually only recursively verified by another SNARK. Thus, for these it makes sense to optimize prover efficiency at the expense of the verifier. On the other hand, the final proof put on chain is typically computed by a powerful machine, and is expensive to verify - since all network nodes must do so. For such proofs, it could be a good tradeoff to use the scheme of this paper.

<sup>1Following (perhaps faulty) conventions, we interchangeably use the notions group exponetiation and scalar multiplication.

2 Preliminaries

2.1 Terminology and conventions

We assume our field \mathbb{F} is of prime order. We denote by \mathbb{F}_{< d}[X] the set of univariate polynomials over \mathbb{F} of degree smaller than d. In expressions involving both polynomials and constants, we will write f(X) instead of f for to distinguish the two; but in contexts where it is clear f is a polynomial, we will simply write f for brevity.

We assume all algorithms described receive as an implicit parameter the security parameter \lambda .

Whenever we use the term "efficient", we mean an algorithm running in time \operatorname{poly}(\lambda) . Furthermore, we assume an "object generator" \mathcal{O} that is run with input \lambda before all protocols, and returns all fields and groups used. Specifically, in our protocol \mathcal{O}(\lambda) = (\mathbb{F}, \mathbb{G}_1, \mathbb{G}_2, \mathbb{G}_t, e, g_1, g_2, g_t) where

We usually let the \lambda parameter be implicit, i.e. write \mathbb{F} instead of \mathbb{F}(\lambda) . We write \mathbb{G}_1 and \mathbb{G}_2 additively. We use the notations [x]_1 := x \cdot g_1 and [x]_2 := x \cdot g_2 .

We often denote by [n] the integers \{1, \ldots, n\} . We use the acronym e.w.p for "except with probability"; i.e. e.w.p \gamma means with probability at least 1 - \gamma .

Universal SRS-based public-coin protocols We describe public-coin (meaning the verifier messages are uniformly chosen) interactive protocols between a prover and verifier; when deriving results for non-interactive protocols, we implicitly assume we can get a proof length equal to the total communication of the prover, using the Fiat-Shamir transform/a random oracle. Using this reduction between interactive and non-interactive protocols, we can refer to the "proof length" of an interactive protocol.

We allow our protocols to have access to a structured reference string (SRS) that can be derived in deterministic \operatorname{poly}(\lambda) -time from an "SRS of monomials" of the form \left\{\begin{bmatrix}x^i\end{bmatrix}_1\right\}_{a\leq i\leq b}, \left\{\begin{bmatrix}x^i\end{bmatrix}_2\right\}_{c\leq i\leq d} , for uniform x\in\mathbb{F} , and some integers a,b,c,d with absolute value bounded by \operatorname{poly}(\lambda) . It then follows from Bowe et al. [BGM17] that the required SRS can be derived in a universal and updatable setup[GKM+] requiring only one honest participant; in the sense that an adversary controlling all but one of the participants in the setup does not gain more than a \operatorname{negl}(\lambda) advantage in its probability of producing a proof of any statement.

For notational simplicity, we sometimes use the SRS srs as an implicit parameter in protocols, and do not explicitly write it.

3 Notation, definitions and operations on vectors and polynomials

Formally describing this paper's scheme in general form requires addressing opening multiple commitments, each committing to multiple polynomials, each opened at multiple points. To avoid this leading to very cumbersome notation and a "nightmare of indices", we define some operations on vectors and polynomials that enable more concise writing.

For positive integer t we denote by [< t] the integers \{0, \ldots, t-1\} . We use the convention for running indicies that the notation i < t e.g. in \sum_{i < t} means the sum is over i \in [< t] .

Vector notation: Let D be some domain. We denote the set of vectors over D by D^{(1)} , and similarly, the set of vectors of vectors, and vectors of vectors of vectors by D^{(2)} = (D^{(1)})^{(1)} and D^{(3)} = (D^{(2)})^{(1)} respectively.

As suggestive notation, we denote elements of these sets by a corresponding number of overhead bars respectively; e.g. \bar{S} \in \mathbb{F}^{(1)}, \bar{\bar{S}} \in \mathbb{F}^{(2)} and \bar{\bar{S}} \in \mathbb{F}^{(3)} .

For a vector \bar{f} \in D^t , we refer to the elements of \bar{f} by f_i, 0 \leq i < t . Similarly for \bar{f} \in D^{(2)} , we refer to the elements of \bar{f} , which are vectors over D, by $\bar{f}_i, 0 \leq i < \bar{f} ; and the elements of the \{\bar{f}_i\} by \{f_{i,j}\}_{i< \bar{f} ,j< \bar{f}_i } . We denote by \mathbb{F}_{< d}[X] - elements of \mathbb{F}[X]$ of degree smaller than d.

Operations on polynomials: For a vector of polynomials \bar{f} \in \mathbb{F}[X]^t and x \in \mathbb{F} we denote by \bar{f}(x) the vector in \mathbb{F}^t , \bar{f}(x) := (f_0(x), \dots, f_{t-1}(x)) .

For \bar{f} \in \mathbb{F}[X]^t and vector of points \bar{Z} \in \mathbb{F}^\ell we denote by \bar{f}(\bar{Z}) \in \mathbb{F}^{(2)} the element of (\mathbb{F}^t)^\ell defined as \bar{f}(\bar{Z}) := (\bar{f}(Z_j))_{j < \ell} .

For a vector of vectors of polynomials \bar{f} \in \mathbb{F}[X]^{(2)} and a vector of vectors of points \bar{Z} \in \mathbb{F}^{(2)} with $ \bar{f} = \bar{Z} , we denote by \bar{f}(\bar{Z}) \in \mathbb{F}^{(3)} the element \bar{f}(\bar{Z}) := (\bar{f}_i(\bar{Z}_i))_{i < \bar{f} }$ .

4 Polynomial commitment schemes

We define polynomial commitment schemes similarly to [GWC19, BDFG20]. However, we make two modifications that enable capturing the scheme of this paper

Definition 4.1. Fix a finite subset of positive integers T and subset \mathbf{S} \subset \mathbb{F} . A (T, \mathbf{S}) -polynomial commitment scheme is a 3-tuple \mathscr{S} = (\mathsf{gen}, \mathsf{com}, \mathsf{open}) such that

• gen(d) - is a randomized algorithm that given positive integer d outputs a structured reference string (SRS) srs.

At the end of the protocol V outputs acc or rej; such that

\bar{\bar{f}}(\bar{\bar{Z}}) = \bar{\bar{\bar{S}}}.

Then if P and V follow the protocol with these inputs, V outputs acc with probability 1 - \text{negl}(\lambda) .

Notation: We usually omit d, srs and r, and write open (\bar{t}, \overline{\mathsf{cm}}, \bar{\bar{Z}}, \bar{\bar{S}}; \bar{\bar{f}}) .

4.1 shplonk

From [BDFG20] we cite the following commitment scheme (that for historical reasons has become known as \mathfrak{shplon}\mathfrak{K} ). The commitment procedure is identical to [KZG10]. Its crucial advantage is that the verifier group operations do not grow with the number of evaluation points .

Lemma 4.2. There is a {1, F}-PCS SshplonK = (genshplonK, comshplonK, openshplonK) such that

- 3. Fix ¯f,Z, ¯¯ S ¯¯. Let n := maxi [deg(fi)]. Let k := ¯f . Then openshplonK 1 k , cm,Z, ¯¯ S ¯¯; ¯f requires
Proof. This is Lemma 4.1 from [\[BDFG20\]](#page-16-4) - except that there V does k + 3 G1-scalar multiplications. However, it turns out the open protocol from there can be "normalized" to save one of the scalar multiplications, by dividing in many places by the constant ZT\S1 (z) that appears as one of the scalar multipliers. We present the [\[BDFG20\]](#page-16-4) open protocol here with this minor modification. To make the comparision with [\[BDFG20\]](#page-16-4) easier, we momentarily use the notation from that paper - where T denotes the union of opening points for all polynomials, Si denotes the opening set for the i'th polynomial , i ranges from one rather than zero; and ri denotes the polynomial of degree Si − 1 that coincides with fi on Si . (See [\[BDFG20\]](#page-16-4) for more context and details.)
\mathsf{open}_{\mathfrak{shplon}\mathfrak{K}}(\left\{\mathsf{cm}_i\right\}_{i\in[k]},\left\{S_i\right\}_{i\in[k]},\left\{r_i\right\}_{i\in[k]};\left\{f_i\right\}_{i\in[k]}):
f := \sum_{i \in [k]} \gamma^{i-1} \cdot Z_{T \setminus S_i}(f_i - r_i).
L := \sum_{i \in [k]} \gamma^{i-1} Z_{T \setminus S_i}(z) \cdot (f_i - r_i(z)) - Z_T(z) \cdot (f/Z_T).
  1. V outputs acc iff e(F + zW0 , [1]2 ) = e(W0 , [x] 2 ), where
F:=\sum_{i\in[k]}\gamma^{i-1}\frac{Z_{T\backslash S_i}}{Z_{T\backslash S_1}}(z)\cdot\operatorname{cm}_i-\left[\sum_{i\in[k]}\gamma^{i-1}\frac{Z_{T\backslash S_i}}{Z_{T\backslash S_1}}(z)r_i(z)\right]_1-\frac{Z_T}{Z_{T\backslash S_1}}(z)W.

Observe that in this form the coefficient of \mathsf{cm}_1 in the last equation is one - this is what saves a verifier scalar multiplication compared to [BDFG20]. At the same time, it is straightforward to carry over the knowledge soundness proof from [BDFG20], as terms have simply changed by the constant Z_{T \setminus S_1}(z) .

Remark 4.3. [BDFG] generalize the above result regarding opening efficiency from [KZG10] to any PCS with a linearly homomorphic commitment scheme. Combining their generalization with the reduction of the next section could improve verifier efficiency in the open procedures of such schemes.

5 The new commitment scheme

We define a few final operations and notations needed for presenting the scheme.

5.1 FFT-like operations on vectors and polynomials

We define operators combine() and decompose() to group together and decompose polynomials "FFT style":

\operatorname{combine}_t(\bar{f}) : \mathbb{F}[X]^t \to \mathbb{F}[X] - given \bar{f} \in \mathbb{F}[X]^t return

g(X) := \sum_{i < t} f_i(X^t) \cdot X^i

note that when \bar{f} \in \mathbb{F}_{< d}[X]^t we have \mathsf{combine}_t(\bar{f}) \in \mathbb{F}_{< d \cdot t}[X] .

\mathsf{decompose}_t(g): \mathbb{F}[X] \to \mathbb{F}[X]^t - given g \in \mathbb{F}[X] return the unique \bar{f} \in \mathbb{F}[X]^t such that

g(X) := \sum_{i < t} f_i(X^t) \cdot X^i

Note that these are injective and inverse operations. That is, for any \bar{f} \in \mathbb{F}[X]^t , \operatorname{decompose}_t(\operatorname{combine}_t(\bar{f})) = \bar{f} .

Notation regarding roots: We denote $p := \mathbb{F} $ . For positive integer t (p-1), let \omega_t \in \mathbb{F} be a fixed primitive t'th root of unity, i.e. \omega_t^t = 1 and \omega_t^i \neq 1 for i < t. For a t'th power x \in \mathbb{F} , fix z \in \mathbb{F} such that z^t = x and z^i \neq x for i < t in a standard way; e.g. take such z that has the smallest integer representative in [_t(x) := (z\omega_t^i)_{i < t}

Interpreting vectors as polynomials: For a vector v \in \mathbb{F}^t and a point x \in \mathbb{F} , we denote v(x) := \sum_{i < t} v_i x^i . For vectors v, S \in \mathbb{F}^{(1)} we denote v(S) := (v(x))_{x \in S} .

The following simple lemma is the basis of our scheme.

Lemma 5.1. Fix any x \in \mathbb{F}, \bar{S} \in \mathbb{F}^t and \bar{f} \in \mathbb{F}[X]^t . Define \bar{Z} := \mathsf{roots}_t(x), g := \mathsf{combine}_t(\bar{f}) and \bar{S}' := \bar{S}(\bar{Z}) .

Then \bar{f}(x) = \bar{S} if and only if g(\bar{Z}) = \bar{S}' .

Proof. For z \in \bar{Z} , we have

g(z) = \sum_{i < t} f_i(z^t) z^i = \sum_{i < t} f_i(x) z^i = \bar{f}(x)(z).

So g(\bar{Z}) = \bar{f}(x)(\bar{Z}) . Since distinct polynomials of degree less than t cannot agree on t points, we have that \bar{f}(x) = \bar{S} if and only if g(\bar{Z}) = \bar{S}' .

5.2 The new scheme

Choose a positive constant A dividing p-1. Let $T := \{0 < t \le A t A\} . Let S be the set of A'th powers in \mathbb{F} . We present the following (T, \mathbf{S})$ -polynomial commitment scheme.

open (t, \operatorname{cm}, x, \bar{S}; \bar{f}) :

The general case is basically applying the same logic to each evaluation point and commitment.

open \left(\bar{t},\overline{\mathsf{cm}},\bar{\bar{Z}},\bar{\bar{\bar{S}}};\bar{f}\right) :

- (b) P and V compute \bar{Z}' where \bar{Z}'_i = \bigcup_{x \in \bar{Z}_i} \mathsf{roots}_{t_i}(x) , and \bar{S}' where $\bar{S}'_i := \bigcup_{j < \bar{S}_i } \bar{S}_{i,j}(\mathsf{roots}_{t_i}(Z_{i,j}))$ .

Knowledge soundness: We look first at the simple case of one commitment and evaluation point. In this case \mathscr A outputs an integer t, a \mathbb G_1 -element cm, and coefficients \{a_i\} such that cm = \left[\sum_{i< A(d-1)} a_i x^i\right]_1 . Let g(X) := \sum_{i< A(d-1)} a_i X^i . We define the extractor E to output \bar f = \mathsf{decompose}_t(g) . An important point is that the extractor E_{\mathfrak{shplong}} used in [BDFG20] for the knowledge soundness game of \mathsf{open}_{\mathfrak{shplong}} outputs g when given 1, \mathsf{cm}, \{a_i\} by an adversary. We must show that \mathscr A wins the knowledge soundness game with probability \mathsf{negl}(\lambda) . We will reduce to the knowledge soundness of \mathsf{open}_{\mathfrak{shplong}} : We construct an adversary \mathscr A' for \mathsf{open}_{\mathfrak{shplong}} that works as follows.

We claim that the success probability of \mathscr{A}' and \mathscr{A} to win their respective knowledge soundness games is the same: By definition of the knowledge soundness game of \operatorname{\mathsf{open}}_{\mathfrak{shplon}\mathfrak{K}}, \mathscr{A}' wins if and only if

By definition of V and Lemma 5.1 this is equivalent to

Hence knowledge soundness follows from the knowledge soundness of \mathsf{open}_{\mathfrak{shplon}\mathfrak{K}} .

The general case of multiple commitments and evaluation points is totally analogus. In summary, we get

Theorem 5.2. Fix positive integer A dividing p-1. Let T be the set of divisors of A; i.e. $T:=\{t t\leq A,t A\} . Let S be the set of A'th powers in \mathbb{F} , i.e. \mathbf{S}:=\{x\in\mathbb{F} \exists z\in\mathbb{F}\ s.t.\ z^t=x\}$ .

Then there is a (T, \mathbf{S}) -PCS \mathscr{S} = (\text{gen}, \text{com}, \text{open}) over \mathbb{F} such that

6 Polynomial Protocols

At this point we move on to apply the new commitment scheme to the \mathscr{PlonK} proving system. We need to slightly alter some components from [GWC19] for this purpose. We warn that the following sections are hard to follow without an understanding of [GWC19].

We begin by modifying the definition of polynomial protocols from [GWC19]. The changes are:

Definition 6.1. Fix positive integers d, D, r, a subset T of positive integers, a vector \bar{t} \in T^r , and a subset \mathbf{S} \subset \mathbb{F} . A (d, D, r, T, \bar{t}, \mathbf{S}) -polynomial protocol over \mathbb{F} is an r-round protocol between a prover P_{\mathsf{poly}} , a verifier V_{\mathsf{poly}} and ideal party \mathcal{F} that proceeds as follows.

  1. Let ¯¯f := ( ¯fi)i≤r consist of the set of preprocessed polynomials together with the polynomials sent by Ppoly. At the end of the protocol, Vpoly may ask I if certain polynomial identities hold between the polynomials in ¯¯f. More specifically, each identity is of the form
F_i(X) := G_i(X, h_{i,1}(v_{i,1}(X)), \dots, h_{i,M}(v_{i,M}(X))) \equiv 0,

where

As in [\[GWC19\]](#page-17-1), we define polynomial protocols for relations in the natural way.

Definition 6.2. Given a relation R, a polynomial protocol for R is a polynomial protocol with the following additional properties.

Remark 6.3. At this point in [\[GWC19\]](#page-17-1) we defined a further abstraction of polynomial protocols on ranges and showed a reduction from them to polynomial protocols. We do not do this here, as this reduction from [\[GWC19\]](#page-17-1) adds a round to the protocol, which, as already mentioned above, hurts verifier efficiency which is the focus of this paper.

6.1 From polynomial protocols to protocols against algebraic adversaries

We wish to use the polynomial commitment scheme of Section 5.1 to compile a polynomial protocol into one with knowledge soundness in the algebraic group model.

For the purpose of capturing the efficiency of the transformation, we first define somewhat technical measures of a (d, D, r, T,t,¯ S)-polynomial protocol P.

Let M^{} be the number of distinct polynomials \{h_{i,j}(v_{i,j}(X))\} appearing in the protocol in the identities G_i(X, h_{i,1}(v_{i,1}(X)), \ldots, h_{i,M}(v_{i,M}(X))) \equiv 0 checked by V_{poly} in \mathscr{P} . Let M^* = M^{} - K , where K is the number of identities such that G_i is linear in X_M . For i \in [r] , suppose n_i = \max_{j \in [< t_i]} [t_i \cdot \deg(f_{i,j}) + i] , where the maximum is over \bar{f}_i sent by the honest prover in round i.

Let n(\mathscr{P}) := \max_i [n_i] . Finally, define e(\mathscr{P}) := \sum_{i < r} n_i + 2n(\mathscr{P}) + r .

Lemma 6.4. Let \mathscr{P} be a (d, D, r, T, \bar{t}, \mathbf{S}) -polynomial protocol over \mathbb{F} for a relation \mathscr{R} , where

- $T = \{t \leq A t A\}$ for a constant A dividing p 1.

Then we can construct a protocol \mathscr{P}^* for \mathscr{R} with knowledge soundness in the Algebraic Group Model under 2n(\mathscr{P}) -DLOG such that

Proof. Let \mathscr{S} = (\mathsf{gen}, \mathsf{com}, \mathsf{open}) be the (T, \mathbf{S}) -polynomial commitment scheme described in Theorem 5.2. Let \bar{g} := (g_1, \ldots, g_\ell) . The SRS of \mathscr{P}^* includes \mathsf{srs} = \mathsf{gen}(d) , with the addition of \mathsf{com}(\bar{q}) .

Given \mathscr{P} we describe \mathscr{P}^* . P and V behave identically to P_{\mathsf{poly}} and V_{\mathsf{poly}} , except the following changes

F_i(X) := G_i(X, h_{i,1}(v_{i,1}(X)), \dots, h_{i,M}(v_{i,M}(X))) \equiv 0,
G_i(x, s_{i,1}, \dots, s_{i,M}) = 0.

The efficiency claims about \mathscr{P}^* follow directly from Theorem 5.2.

To prove the claim about knowledge soundness in the AGM we must describe the extractor E for the protocol \mathscr{P}^* . For this purpose, let E_{\mathscr{P}} be the extractor of the protocol \mathscr{P} as guaranteed to exist from Definition 6.2, and E_{\mathscr{S}} be the extractor for the Knowledge Soundness game of \mathscr{S} as in Definition 4.1.

Now assume an algebraic adversary \mathcal A is taking the role of \mathbf P in \mathscr P^*.

Now let us define two events (over the randomness of \mathbf{V},\mathcal{A} and \mathsf{gen} ):

Now look at the event C that \mathbf{V} outputs \mathsf{acc} , but E failed in the sense that (\mathsf{x},\omega) \notin \mathcal{R} . We split C into two events.

7 Polynomial protocol for constraint system satisfiability

As in Section 6 and 7 of [GWC19], we work with a constraint system \mathscr{C} = (\mathscr{V}, \mathscr{Q}) where \mathscr{Q} = (\mathbf{q_L}, \mathbf{q_R}, \mathbf{q_O}, \mathbf{q_M}, \mathbf{q_C}) \in (\mathbb{F}^n)^5 are our "Selector vectors"; and \mathscr{V} implicitly describe a permutation on [3n].

We present a slightly modified polynomial protocol for the relation \mathscr{R}_{\mathscr{C}} described in [GWC19]; which is the set of pairs (\mathsf{x},\omega) with \mathsf{x}\in\mathbb{F}^\ell,\omega\in\mathbb{F}^{m-\ell} such that \mathsf{x}:=(\mathsf{x},\omega) satisfies \mathscr{C} . The difference from [GWC19] is that we do not wish to use their reduction from ranged polynomial protocols to polynomial protocols, as this adds a round of

interaction, which ends up adding a verifier scalar multiplication in the compiled protocol against algebraic adversaries. Instead, we need to explicitly describe sending the quotient polynomial involved in each of three identities checked. We assume below n is a power of two such that 24n divides p − 1, and H ⊂ F is a multiplicative subgroup of F of order n with generator g. Note that our divisibility assumption implies g is a 24'th power inF.

Preprocessed polynomials: The polynomials Sσ1 , Sσ2 , Sσ3 describing the permutation derived from C as in Section 8 of [\[GWC19\]](#page-17-1). (As explained there, the polynomials describing the identity permutation can be computed in log n time directly by the verifier.) The polynomials qL, qR, qO, qM, qC ∈ F

Protocol:

  1. Let x ∈ F m be Ppoly's assignment consistent with the public input x. Ppoly computes the three polynomials fL, fR, fO ∈ F
f_L(i) = \mathbf{x}_{\mathbf{a}_i}, f_R(i) = \mathbf{x}_{\mathbf{b}_i}, f_O(i) = \mathbf{x}_{\mathbf{c}_i}.
  1. Ppoly and Vpoly compute the "Public input polynomial"
\mathsf{PI}(X) := \sum_{i \in [\ell]} -\mathsf{x}_i \cdot L_i(X).
  1. Ppoly computes the quotient polynomial T0(X) showing fL, fR, fO satisfy the arithmetic constraint; i.e.
\frac{\mathbf{q_L}(X) \cdot f_L(X) + \mathbf{q_R}(X) \cdot f_R(X) + \mathbf{q_O}(X) \cdot f_O(X) + \mathbf{q_M}(X) \cdot f_L(X) \cdot f_R(X) + (\mathbf{q_C}(X) + \mathsf{PI}(X))}{Z_H(X)}

Ppoly sends ¯f1 = (fL, fR, fO, T0) to I.

f_j'(\mathbf{g}^i) = f_j(\mathbf{g}^i) + \beta((j-1)\cdot n + i) + \gamma, g_j'(\mathbf{g}^i) = g_j(\mathbf{g}^i) + \beta\cdot\sigma((j-1)\cdot n + i) + \gamma

(c) Define f 0 , g0 ∈ F<3n[X] by

f'(X) := \prod_{j \in \{L,R,O\}} f'_j(X), g'(X) := \prod_{j \in \{L,R,O\}} g'_j(X).

(d) Ppoly computes Z ∈ F

Z(\mathbf{g}^i) = \prod_{1 \le \ell < i} f'(\mathbf{g}^j) / g'(\mathbf{g}^j).

(e) Ppoly computes the quotients T1, T2 showing that Z "starts from one" and that Z accumulates the values of f /g. Namely,

T_1(X) := (L_1(X)(Z(X) - 1))/Z_H(X) = 0
T_2(X) := (Z(X)f'(X) - g'(X)Z(X \cdot \mathbf{g}))/Z_H(X)
\mathbf{q_L}(X) \cdot f_L(X) + \mathbf{q_R}(X) \cdot f_R(X) + \mathbf{q_O}(X) \cdot f_O(X) + \mathbf{q_M}(X) \cdot f_L(X) \cdot f_R(X) + (\mathbf{q_C}(X) + \mathsf{PI}(X))
= T_0(X) \cdot Z_H(X)

ii.

L_1(X)(Z(X) - 1) = T_1(X)Z_H(X)

iii.

Z(X)f'(X) - g'(X)Z(X \cdot \mathbf{g}) = T_2(X)Z_H(X)

and outputs acc iff all checks hold.

Using the analysis of [\[GWC19\]](#page-17-1) we get

Theorem 7.1. The above is a polynomial protocol for the relation RC .

Now using Lemma 6.4 we get

Corollary 7.2. Assume the Q-DLOG for Q = 18 · n. Assume 24 (p − 1). Then there is a protocol for the relation RC with Knowledge Soundness in the Algebraic Group Model such that

Proof. We need to simply compute the parameters we are plugging into Lemma 6.4 when using the above protocol P. The number of rounds r is two. We have

Now, from Lemma 6.4 we know that

Acknowledgements

We thank Sergey Vasilyev for a correction.

References

History

  • 2026-02-17Add disclaimer: content not author-approved, eprint is authoritative6638546
  • 2026-02-16Add 471 new paper pages from poseidon-formalizationc189c48