Skip to content

Batched Commitment

Committing to many, differently-sized polynomials

We now know how to commit to an \ell-variate multilinear polynomial t(X0,,X1)t(X_0, \ldots, X_{\ell - 1}) over the huge field Tτ\mathcal{T}_\tau. In practical applications, on the other hand, we will have many different multilinear polynomials at play. For the sake of concrete efficiency, it is crucial that we commit to these in a batched way, which allows, in particular, these polynomials' respective evaluation protocols to also be batched.

Of course, we haven't even yet seen how to evaluate a single polynomial, let alone many. For now, then, we will just record our batched commitment procedure, acknowledging all the while that it will appear unmotivated. We will refer back to this page when we discuss evaluation (see in particular this page).

Things are a bit easier when the number μ\mu of polynomials at hand is a power of 2, and all the polynomials are of the same number of variables \ell. In real life, this assumption is too simplifying. Here, we fix an arbitrary number nn of polynomials t0,,tn1t_0, \ldots , t_{n - 1}, of arbitrary different sizes 0,,n1\ell_0, \ldots, \ell_{n - 1}. We still require for now that these all be defined over the big field Tτ\mathcal{T}_\tau (we will show shortly how this restriction gets relaxed).

The Steps

The simplest description of our batched scheme proceeds as follows:

  • Up to a reindexing, we freely assume that the input polynomials t0,,tn1t_0, \ldots , t_{n - 1} are sorted in such a way that 0n1\ell_0 \geq \cdots \geq \ell_{n - 1}.
  • Collect the input polynomials' respective individual, flattened lists (t0,i)i=0201,,(tn1,i)i=02n11\left( t_{0, i} \right)_{i = 0}^{2^{\ell_0} - 1}, \ldots , \left( t_{n - 1, i} \right)_{i = 0}^{2^{\ell_{n - 1}} - 1} of Lagrange coefficient vectors. Concatenate these lists into a huge master list, say (ti)i=0n1\left( t^*_i \right)_{i = 0}^{n^* - 1}.
  • By possibly padding this list with trailing zeros, extend it until it becomes of power-of-2 size—say, (ti)i=021\left( t^*_i \right)_{i = 0}^{2^{\ell^*} - 1}.
  • Commit to this list exactly as if it were a single polynomial on its own right. That is, additive-NTT the list (ti)i=021\left( t^*_i \right)_{i = 0}^{2^{\ell^*} - 1}, and send the result—a list of length 2+R2^{\ell^* + \mathcal{R}}—to the string oracle.

A Piecewise Description

While the description above is valid and correct, it's a tiny bit unsatisfying, since it only works in the language of lists, as opposed to in the language of cubes (we have always worked across a duality between these two paradigms). As there usually tends to be, there is a geometric way of seeing what's going on. The \ell^*-variate multilinear t(X0,,X1)t^*(X_0, \ldots , X_{\ell^* - 1}) we just committed to above can be viewed as a piecewise multilinear, which takes the values that the individual polynomials t0,,tn1t_0, \ldots, t_{n - 1} respectively do on various subcubes of B\mathcal{B}_{\ell^*}. That is, on its "lexicographically smallest" 0\ell_0-dimensional subcube (or "facet"), tt^* agrees identically with t0t_0. On the next, 1\ell_1-dimensional subcube, tt^* agrees with t1t_1. And so on. If there are "missing" facets or vertices of the \ell^*-cube still not yet covered when this process ends, we fill them with 0s.