$\newcommand{\F}{\mathbb{F}}$ $\newcommand{\c}{\text{comm}}$ $\newcommand{\i}{\mathbf{i}}$ $\newcommand{\z}{\mathbf{z}}$ $\newcommand{\r}{\mathbf{r}}$ $\newcommand{\eq}{\widetilde{\text{eq}}}$ # Grand product arguments Let $\F$ be a finite field and consider a vector $f = (f_0,\dots,f_{n-1})\in \F^n$, where $n=2^v$. Given some kind of commitment $\c_f$ to $f$ and a value $y\in\F$, we want to convince a verifier that the product of the elements of $f$ is $y$, $\prod f_i = y$. ## Using AIR constraints This problem can be solved using univariate polynomials and AIR constraints. This is the approach taken in Plonk[^1]. Let $c_i=\prod_{j\leq i}f_j$ be the vector of cumulative products of $f$. The equality $\prod f_i = y$ is equivalent to $c_{n-1}=y$. Therefore, a protocol to prove this equality is to commit to both $f$ and $c$ and check the following AIR constraints - $c_0 = f_0$, - $c_{i+1}=c_i \cdot f_{i+1}$ for all $i<n-1$, - $c_{n-1} = y$. ## Using GKR This is the approach of [Tha13, 5.3.1][^2]. For $0\leq k \leq v$, we consider the vector $g_k$ of size $2^k$ given by $$ g_{k,i} = \prod_{i\cdot 2^{v-k}\leq j < (i+1)\cdot 2^{v-k}} f_j. $$ Note that $g_v=f$ and $g_0$ is the constant $y$. The vector $g_k$ can be seen as the $k$-th layer in the binary multiplication tree with leaves $f$. These vectors satisfy the relations $$ g_{k,i} = g_{k+1, 2i} \cdot g_{k+1, 2i+1}. $$ Seeing $g_k$ as a function $\{0,1\}^k \to \F$ instead, the relation becomes $$ g_k(\i) = g_{k+1}(\i, 0) \cdot g_{k+1}(\i,1). $$ Therefore, the MLEs $\tilde{g}_k$ satisfy $$ \tilde{g}_k(\i) = \tilde{g}_{k+1}(\i, 0) \cdot \tilde{g}_{k+1}(\i,1). $$ and thus for any $\z \in \F^k$ we have $$ \tilde{g}_k(\z) = \sum_{\i \in \{0,1\}^k} \eq(\z, \i) \cdot \tilde{g}_{k+1}(\i, 0) \cdot \tilde{g}_{k+1}(\i,1). $$ The evaluation of this sum can be proved using the sumcheck protocol. At the end of the protocol, the verifier needs to evaluate $\tilde{g}_{k+1}$ at $(\r,0)$ and $(\r, 1)$ for a random $\r \in \F^k$. The trick to do so efficiently is to consider the degree one univariate polynomial $h(t)=\tilde{g}_{k+1}(\r, t)$ for $t\in \F$. We have $$ h(0) = \tilde{g}_{k+1}(\r, 0) \ \text{ and } \ h(1) = \tilde{g}_{k+1}(\r, 1) $$ therefore to send $h$ it is sufficient to send $\tilde{g}_{k+1}(\r, 0)$ and $\tilde{g}_{k+1}(\r, 1)$ (which are anyways required by the verifier). Then the verifier sends a random $u\in \F$ and uses the sumcheck protocol to check that $$ h(u) = \tilde{g}_{k+1}(\r, u). $$ Therefore, proving an opening $\tilde{g}_k(\z)$ can be reduced to a sumcheck argument and an opening $\tilde{g}_{k+1}(\r, u)$. The strategy to prove $\prod f_i = g_0 = y$ is then clear: - Reduce the evalutation proof $g_0 = y$ to a sumcheck argument and an evaluation $\tilde{g}_1(\r_1)$. - For $k=1,\dots, v-1$, reduce the evalutation proof $\tilde{g}_k(\r_k)$ to a sumcheck argument and an evaluation $\tilde{g}_{k+1}(\r_{k+1})$. - The last evaluation $\tilde{g}_v(\r_v)=\tilde{f}(\r_v)$ is proved using the commitment to $f$. ### Costs - **Prover**: A sumcheck argument costing $O(2^k)$ for $k=0\dots v-1$ and an evaluation proof for $f$, so in total $O(n) + \text{ prover cost of evaluation proof}$. The commited polynomial is $f$ of size $n$. - **Verifier**: A sumcheck argument costing $O(k)$ for $k=0\dots v-1$ and an evaluation proof for $f$, so in total $O(v^2) + \text{ verifier cost of evaluation proof}$. - **Proof size**: A sumcheck argument of size $O(k)$ for $k=0\dots v-1$ and an evaluation proof for $f$, so in total $O(v^2) + \text{ size of evaluation proof}$. ## Quarks This is the approach of [SL20, Section 5][^3]. Instead of using $v+1$ different functions $\{g_k: \{0,1\}^k \to \F \}_{k=0}^v$, we can pack them into a single function $g: \{0,1\}^{v+1} \to \F$ given by $$ g(1^l, 0, x) = g_{v-l}(x) \text{ for } x\in \{0,1\}^{v-l}, $$ and $g(\mathbf{1})=0$. Note that $g(0, x) = g_v(x) = f(x)$ for $x\in \{0,1\}^v$ and $g(1^v, 0) = g_0 = y$. Furthermore, the relation between the adjacent functions $g_k$ and $g_{k+1}$ becomes $$ g(1, x) = g(x,0)\cdot g(x, 1) \text{ for } x\in \{0,1\}^v. $$ Let $h(x) = g(1,x)-g(x,0)\cdot g(x, 1)$ for $x\in \{0,1\}^v$, then $\tilde{h}$ is the zero polynomial, which we can check with the usual zero-check $$ 0 = h(\tau) = \sum_{x\in \{0,1\}^v} \eq(\tau, x) \left(g(1,x)-g(x,0)\cdot g(x, 1)\right), $$ where $\tau$ is a random verifier challenge, which is proved with a sumche Therefore, the product $\prod f = y$ can be proved by commiting to $\tilde{g}$ and - using the sumcheck argument to prove $h(\tau)=0$, - prove $g(0, x) = f(x)$ by checking $\tilde{g}(0,\gamma)=\tilde{f}(\gamma)$ for a random $\gamma$, - open $\tilde{g}(1^v, 0)= \prod f = y$. ### Costs - **Prover**: A sumcheck argument costing $O(n)$ and evaluation proofs for $g$ and $f$, so in total $O(n) + \text{ prover cost of evaluation proofs}$. The commited polynomials are $f$ of size $n$ and $g$ of size $2n$. - **Verifier**: A sumcheck argument costing $O(v+1)$ and evaluation proofs for $g$ and $f$, so in total $O(v) + \text{ verifier cost of evaluation proofs}$. - **Proof size**: A sumcheck argument of size $O(v)$ and evaluation proofs for $g$ and $f$, so in total $O(v) + \text{ size of evaluation proofs}$. Note that compared to GKR, the verifier cost and proof size go from quadratic in $v$ to linear in $v$, at the cost of more and larger evaluation proofs. ## Hybrid approach This is the approach of [SL20, Section 6][^3], also used in Lasso[^4]. We can get the best of both approaches by combining them. Fix a number $1\leq \ell \leq v$, we use the Quarks approach for the first $\ell+1$ layers $\{g_k\}_{k=0}^{\ell}$ and the GKR approach for the last $v-l$ layers $\{g_k\}_{k=\ell+1}^{v}$. Concretely, this means that in the Quarks protocol, we instead have $g(0,x)=g_{\ell}(x)$ for all $x\in \{0,1\}^{\ell}$, which we check by evalutating at a random value $\gamma$, $\tilde{g}(0,\gamma)=\tilde{g}_{\ell}(\gamma)$. The evaluation $\tilde{g}_{\ell}(\gamma)$ is computed using the GKR protocol, by reducing it to a sumcheck argument and an evaluation of $\tilde{g}_{\ell +1}$, and so on until an evaluation of $\tilde{g}_v = \tilde{f}$. ### Costs - **Prover**: $O(2^\ell)$ for Quarks + $O(\sum_{k=\ell+1}^v 2^k)$ for GKR, so $O(n)$ in total, plus commitments to $f$ of size $n$ and $g$ of size $2^{\ell+1}$. - **Verifier**: $O(\ell)$ for Quarks + $O(\sum_{k=\ell+1}^v k)=O((v-\ell)\cdot v)$, so $O(\ell + (v-\ell)\cdot v)$ in total, plus cost of evaluation proofs. - **Proof size**: Similarly to the verifier costs, $O(\ell + (v-\ell)\cdot v)$ in total, plus size of evaluation proofs. For example, setting $\ell = v - 3\log v$, the proof size is $O(v - 3\log v +3v \log v) = O(3v \log v)$ which is better than the proof size of $O(v^2)$ when using only GKR for large enough $v$. This comes at the cost of commiting to $g$ of size $2^{v - 3\log v + 1} = \frac{2n}{v^3}$, which is much smaller than $2n$, the corresponding size of $g$ when using only Quarks. [^1]: https://eprint.iacr.org/2019/953 [^2]: https://eprint.iacr.org/2013/351 [^3]: https://eprint.iacr.org/2020/1275 [^4]: https://eprint.iacr.org/2023/1216