Groth16 Soundness Proof

\gdef\delim#1#2#3{\mathopen{}\mathclose{\left#1 #2 \right#3}} \gdef\p#1{\delim({#1})} \gdef\set#1{\delim\{{#1}\}} \gdef\e{\operatorname{e}} \gdef\g{\mathrm{g}} \gdef\Z{\mathrm{Z}} \gdef\U{\mathrm{U}} \gdef\V{\mathrm{V}} \gdef\W{\mathrm{W}} \gdef\k#1{\mathbf{#1}} \gdef\F{\mathbb{F}} \gdef\G{\mathbb{G}}

Introduction

Constraints

Recall Groth16. For a given circuit with n variables, m constraints and p public inputs we encode the circuit as 3⋅n+1 polynomials \U_i, \V_i, \W_i, \Z ∈ \F[X] each with m terms (i.e. degree m-1). A witness x ∈\F^n is correct if for some H(X) ∈ \F[X] it satisfies

\p{\sum_{i∈[0,n)} x_i ⋅ \U_i(X)} ⋅ \p{\sum_{i∈[0,n)} x_i ⋅ \V_i(X)} = \p{\sum_{i∈[0,n)} x_i ⋅ \W_i(X)} + H(X) ⋅\Z(X)

Setup

During the setup we generate random scalars τ,α,β,γ,δ from \F and compute a set of \G_1 and \G_2 group elements and promptly forget the original scalars. This leaves us with the following group elements, known to prover and verifier:

\begin{aligned} δ ⋅ \g_1 \\ \set{τ^0, τ^1, τ^2, …, τ^{2 ⋅ m - 2}} ⋅ \g_1 \\ α ⋅ \set{ τ^0, τ^1, τ^2, …, τ^{m - 1} } ⋅ \g_1 \\ β ⋅ \set{τ^0, τ^1, τ^2, …, τ^{m - 1}} ⋅ \g_1 \\ δ^{-1} ⋅ \Z(τ) ⋅ \set{τ^0, τ^1, τ^2, …, τ^{m - 2}} ⋅ \g_1 \\ γ^{-1} ⋅ \set{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}_{i∈[0,p)} ⋅ \g_1 \\ δ^{-1} ⋅ \set{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}_{i∈[p,n)} ⋅ \g_1 \\ \end{aligned}

\begin{aligned} \set{β, γ, δ} ⋅ \g_2 \\ \set{τ^0, τ^1, τ^2, …, τ^{m - 1} } ⋅ \g_2 \\ \end{aligned}

Soundness

To proof soundness we need to show that a verifying proof implies the existence of a witness x_i. To do this, we start with what we know. We know the (alleged) prover only knows \G_1 values from the setup and can only compute linear combinations of them. So any \G_1 value it creates like A has the form (ignoring the \g_1 factors)

\begin{aligned} A &= A_τ(τ) + A_α(τ)⋅α + A_β(τ)⋅β + A_δ ⋅ δ + A_γ ⋅ γ + A_Z(τ)⋅{\footnotesize \frac{\Z(τ)}{δ}} \\[0.5em] &\phantom{=}+ \sum_{i∈[0,p)} A_i⋅{\footnotesize \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{γ}} + \sum_{i∈[p,m)} A_i⋅ {\footnotesize \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{δ} } \\[2em] B &= B_τ(τ) + B_β⋅β + B_δ ⋅ δ + B_γ ⋅ γ \\[0.2em] C &= C_τ(τ) + C_α(τ)⋅α + C_β(τ)⋅β + C_δ ⋅ δ + C_γ ⋅ γ + C_Z(τ)⋅{\footnotesize \frac{\Z(τ)}{δ}} \\[0.5em] &\phantom{=}+ \sum_{i∈[0,p)} C_i⋅{\footnotesize \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{γ}} + \sum_{i∈[p,m)} C_i⋅ {\footnotesize \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{δ} } \end{aligned}

where A_τ(X) has degree at most 2⋅m-2, A_α, A_β degree at most m-1 and A_Z degree at most m-2, similarly for C. B(X) is of degree at most m-1.

Note. In the Groth16 paper no distinction is made between \G_1 and \G_2 elements and all values are modeled as linear combinations over the (distrete logarithm) of all of them. This hedges against potential easy-to-compute isomorphisms between \G_1 and \G_2. I'm not doing this to simplify the soundness proof.

We also know that (w_i, A,B,C) pass the verification check, so

A⋅B = α⋅β + \sum_{i∈[0,p)} x_i ⋅ \p{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)} + C⋅δ

Since \F is large we can invoke the Schwartz–Zippel lemma and consider both sides as multivariate rational functions in formal parameters τ,α,β,γ,δ. We can then group by monomials. Consider equating the following monomials:

\begin{aligned} A_α(τ) ⋅ B_β &= 1 &\hspace{2em}&\p{α⋅β⋅τ^i} \\ A_β(τ) ⋅ B_β &= 0 &\hspace{2em}&\p{β^2⋅τ^i} \\ A_α(τ) ⋅ B_γ &= 0 &\hspace{2em}&\p{α⋅γ⋅τ^i} \\ A_β(τ) ⋅ B_γ + A_γ ⋅ B_β &= 0 &\hspace{2em}&\p{β⋅γ⋅τ^i} \\ \end{aligned}

From the first line it follows that A_α(τ) is a non-zero constant and B_β = A_α^{-1}. Then by the second and third line A_β(τ)=0 and B_γ = 0. By the fourth A_γ = 0. Then looking at the following monomials

\begin{aligned} \p{\sum_{i∈[0,p)} A_i⋅\p{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}} ⋅ B_β &= 0 &\hspace{2em}&\p{β⋅γ^{-1}⋅τ^i} \\[2em] \p{A_Z(τ)⋅ \Z(τ) + \sum_{i∈[p,m)} A_i⋅\p{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}} ⋅ B_β &= 0 &\hspace{2em}&\p{β⋅δ^{-1}⋅τ^i} \\[2em] \end{aligned}

We see that these sub-expression from A sum to zero. Substituting all this into A, B gives

\begin{aligned} A &= A_τ(τ) + A_α⋅α + A_δ ⋅ δ \\ B &= B_τ(τ) + A_α^{-1} ⋅ β + B_δ ⋅ δ \end{aligned}

Looking at monomials

\begin{aligned} A_α ⋅ B_τ(τ) &= \sum_{i∈[0,p)} x_i ⋅ \V_i(τ) + \sum_{i∈[p,m)} C_i ⋅ \V_i(τ) &\hspace{2em}&\p{α⋅τ^i} \\ A_α^{-1} ⋅ A_τ(τ) &= \sum_{i∈[0,p)} x_i ⋅ \U_i(τ) + \sum_{i∈[p,m)} C_i ⋅ \U_i(τ) &\hspace{2em}&\p{β⋅τ^i} \end{aligned}

Defining

\hat x_i=\begin{cases} x_i & i∈[0,p) \\ C_i & i∈[p,m) \end{cases}

we can write

\begin{aligned} A_τ(τ) &= A_α ⋅ \sum_{i∈[0,m)} \hat x_i⋅\U_i(τ) \\ B_τ(τ) &= A_α^{-1} ⋅ \sum_{i∈[0,m)} \hat x_i⋅\V_i(τ) \\ \end{aligned}

Looking at the monomials τ^i:

$$ \p{\sum_{i∈[0,m)} \hat x_i⋅\U_i(τ)} ⋅ \p{\sum_{i∈[0,m)} \hat x_i⋅\V_i(τ)} = \sum_{i∈[0,p)} \hat x_i ⋅ \W_i(τ)

which shows that \hat x is a satisfying witness.

Attempts to get rid of the constant

I'd like to get rid of the constant pairing \e\p{α⋅\g_1, β⋅\g_2}. In EVM this requires and additional pairing instead of a target group addition.

Attempt I

Give the verifier \frac{α⋅β}{γ}⋅\g_1 to add to the public input point. Since x_0 = 1 by convention, this can be done with no extra computation. It also doesn't change the verification equation or the prover algorithm so completeness and zero-knowledge are preserved. However, it does change an attackers abilities as it can now also construct \G_1 elements containing an additional term.

\begin{aligned} A' &= A + A_{αβγ} ⋅ \frac{α⋅β}{γ}\\ C' &= C + C_{αβγ} ⋅ \frac{α⋅β}{γ}\\ \end{aligned}

We need to check if soundness still holds.

\begin{aligned} A_{αβγ}⋅B_β &= 0 &\hspace{2em}&\p{α⋅β^2⋅γ^{-1}} \\ \end{aligned}

From this either A_{αβγ} = 0 or B_β = 0. Since A_{αβγ} = 0 mimics the previous soundness proof, let's proceed with B_β = 0 instead and see if it results in contradiction.

\begin{aligned} A_{αβγ}⋅B_γ &= 1 &\hspace{2em}&\p{α⋅β} \\ \end{aligned}

From this follows A_{αβγ} = B_γ^{-1} and specifically both are non-zero.

\begin{aligned} A_γ⋅B_γ &= 0 &\hspace{2em}&\p{γ^2} \\ A_α(τ)⋅B_γ &= 0 &\hspace{2em}&\p{α⋅γ} \\ A_β(τ)⋅B_γ &= 0 &\hspace{2em}&\p{β⋅γ} \\ B_τ(τ)⋅B_γ^{-1} &= 0 &\hspace{2em}&\p{α.β⋅γ^{-1}} \\ \end{aligned}

From this follows that A_γ, A_α,A_β,B_τ are all 0.

\begin{aligned} A_τ(τ)⋅B_γ &= 0 &\hspace{2em}&\p{γ} \\ \end{aligned}

From this follows that A_τ = 0. Finally we have

\begin{aligned} \p{\sum_{i∈[p,m)} A_i ⋅ \V_i(τ)}⋅B_γ &= 0 &\hspace{2em}&\p{α⋅δ^{-1}⋅γ} \\ \p{\sum_{i∈[p,m)} A_i ⋅ \U_i(τ)}⋅B_γ &= 0 &\hspace{2em}&\p{β⋅δ^{-1}⋅γ} \\ \p{\sum_{i∈[p,m)} A_i ⋅ \W_i(τ)}⋅B_γ &= 0 &\hspace{2em}&\p{δ^{-1}⋅γ} \\ \end{aligned}

So all these sum to zero, we then get

\begin{aligned} A_Z(τ) ⋅ \Z(τ)⋅B_γ &= 0 &\hspace{2em}&\p{β⋅δ^{-1}⋅γ} \\ \end{aligned}

So A_Z(τ) ⋅ \Z(τ) = 0.

We're now left with

\begin{aligned} A &= A_δ ⋅δ + B_γ^{-1}⋅\frac{α⋅β}{γ} + \sum_{i∈[0,p)} A_i⋅ \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{γ} \\ B &= B_δ ⋅ δ + B_γ ⋅ γ \end{aligned}

Let's look at C a bit

\begin{aligned} 0 &= C_τ(τ) &\hspace{2em}&\p{δ} \\ 0 &= C_α(τ) &\hspace{2em}&\p{α⋅δ} \\ 0 &= C_β(τ) &\hspace{2em}&\p{β⋅δ} \\ A_δ ⋅ B_δ &= C_δ &\hspace{2em}&\p{δ^2} \\ A_δ ⋅ B_γ &= C_γ &\hspace{2em}&\p{δ⋅γ} \\ B_γ^{-1} ⋅ B_δ &= C_{αβγ} &\hspace{2em}&\p{α⋅β⋅δ⋅γ^{-1}} \\ \p{\sum_{i∈[0,p)} A_i ⋅ \V_i(τ)}⋅B_δ &= \sum_{i∈[0,p)} C_i ⋅ \V_i(τ) &\hspace{2em}&\p{α⋅δ⋅γ^{-1}} \\ \p{\sum_{i∈[0,p)} A_i ⋅ \U_i(τ)}⋅B_δ &= \sum_{i∈[0,p)} C_i ⋅ \U_i(τ) &\hspace{2em}&\p{β⋅δ⋅γ^{-1}} \\ \p{\sum_{i∈[0,p)} A_i ⋅ \W_i(τ)}⋅B_δ &= \sum_{i∈[0,p)} C_i ⋅ \W_i(τ) &\hspace{2em}&\p{δ⋅γ^{-1}} \\ \end{aligned}

This gives us

\begin{aligned} C &= A_δ ⋅ B_δ ⋅ δ + A_δ ⋅ B_γ ⋅ γ + B_γ^{-1} ⋅ B_δ ⋅ \frac{α⋅β}{γ}+ C_Z(τ)⋅{\footnotesize \frac{\Z(τ)}{δ}} \\[0.5em] &\phantom{=}+ B_δ ⋅\sum_{i∈[0,p)} A_i⋅{\footnotesize \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{γ}} + \sum_{i∈[p,m)} C_i⋅ {\footnotesize \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{δ} } \end{aligned}

\begin{aligned} B_δ⋅B_γ^{-1} &= B_β⋅B_γ^{-1} &\hspace{2em}&\p{α⋅β⋅δ⋅γ^{-1}} \\ \end{aligned}

So B_β = B_δ.

\begin{aligned} B_γ ⋅ \sum_{i∈[0,p)} A_i ⋅ \V_i(τ) &= \sum_{i∈[0,p)} x_i ⋅ \V_i(τ) + \sum_{i∈[p,m)} C_i ⋅ \V_i(τ) &\hspace{2em}&\p{α} \\ B_γ ⋅ \sum_{i∈[0,p)} A_i ⋅ \U_i(τ) &= \sum_{i∈[0,p)} x_i ⋅ \U_i(τ) + \sum_{i∈[p,m)} C_i ⋅ \U_i(τ) &\hspace{2em}&\p{β} \\ \end{aligned}

The obvious solution to this is A_i = B_γ^{-1} ⋅ x_i and C_i = 0.

To do. Are there non-obvious solutions?

\begin{aligned} B_γ ⋅ \sum_{i∈[0,p)} A_i ⋅ \W_i(τ) &= C_Z(τ) ⋅ \Z(τ) + \sum_{i∈[0,p)} x_i ⋅ \W_i(τ) + \sum_{i∈[p,m)} C_i ⋅ \W_i(τ) &\hspace{2em}&\p{τ} \\ \end{aligned}

from this it follows C_Z = 0. This dismisses the last term without creating a witness. Instead we found a way to generate 'proofs' for any public input x_i

$$ \begin{aligned} A &= A_δ ⋅δ + B_γ^{-1}⋅\p{\frac{α⋅β}{γ} + \sum_{i∈[0,p)} x_i⋅ \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{γ}} \ B &= B_δ ⋅ δ + B_γ ⋅ γ \ C &= A_δ ⋅ B_δ ⋅ δ + A_δ ⋅ B_γ ⋅ γ + B_γ^{-1} ⋅ B_δ \p{\frac{α⋅β}{γ}

The simplest instance of this is

\begin{aligned} A &= \frac{α⋅β}{γ} + \sum_{i∈[0,p)} x_i⋅ \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{γ} \\ B &= γ \\ C &= 0 \end{aligned}

Attempt II

What if we gave \frac{α⋅β}{δ}⋅\g_1 instead? This can be added by the prover or verifier to C. It is not possible to construct

\sum_{i∈[0,p)} x_i⋅ \frac{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)}{δ} \\

using the provided setup variables, so the previous break will not work.

Attempt III

Since adding to L or C is not an option, so if it is at all possible the constant will need to be folded into A⋅B somehow. The challenge here is that adding any term to either produces many cross-terms.

Since there is no α⋅\g_2 we can try \frac{α⋅β}{α}⋅\g_1. But this is just β⋅\g_1 which we already had. This suggests simply removing α⋅β from the verification equation:

A ⋅ B = \sum_{i∈[0,p)} x_i ⋅ \p{β ⋅ \U_i(τ) + α ⋅ \V_i(τ) + \W_i(τ)} + C⋅δ

Remco Bloemen
Math & Engineering
https://2π.com