Sumcheck over Binary Fields

Journal Club - 10 Jul 2024

Binary Fields

  • Binary fields are fields of characteristic \(2\) of the form \(\textsf{GF}(2^n)\)
  • When \(n = 1\), we get: \(\textsf{GF}(2) = \{0, 1\} \equiv \mathbb{F}_2\)
    • Addition is bitwise XOR and multiplication is bitwise AND
  • When \(n = 2\), the field \(\textsf{GF}(2^2)\) is a degree-2 extension of \(\textsf{GF}(2)\)
    • Let \(m(x) = x^2 + x + 1\) be the irreducible polynomial
    • Any polynomial \(p(x)\) over \(\mathbb{F}_2\) when divided by \(m(x)\) gives the remainder
    • Resulting field is \(\textsf{GF}(2^2)\)
  • Towers of binary fields
1x + 0
0x + 0
0x + 1
1x + 1
\textsf{GF}(2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^4) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^8)

Binary Fields

\textsf{GF}(2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^4) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^8)
\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}
\textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1} \ \textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1}
\vdots
\vdots

Binary Fields

\textsf{GF}(2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^4) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^8)
\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}
\textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1} \ \textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1}
\vdots
\vdots

Binary Fields

\textsf{GF}(2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^4) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^8)
\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}
\textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1} \ \textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1}
\vdots
\vdots

Binary Fields

\textsf{GF}(2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^4) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^8)
\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}
\textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1} \ \textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1}
\vdots
\vdots

Binary Fields

\textsf{GF}(2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^2) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^4) \ \xrightarrow[\text{extension}]{\text{deg-2}} \ \textsf{GF}(2^8)
\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}
\textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{grey}{0}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{grey}{0}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{grey}{0}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{grey}{0}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y +\textcolor{lightgreen}{1}x + \textcolor{grey}{0}
\textcolor{lightgreen}{1}xy + \textcolor{lightgreen}{1}y + \textcolor{lightgreen}{1}x + \textcolor{lightgreen}{1}
\textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1} \ \textcolor{lightgreen}{1} \ \textcolor{grey}{0} \ \textcolor{lightgreen}{1}
\vdots
\vdots
  • Addition is bitwise XOR
  • Multiplication?
a \cdot b
=(a_{\textit{h}}x + a_{\textit{l}}) \cdot (b_{\textit{h}}x + b_{\textit{l}})

Why Sumcheck over Binary Fields?

p(x) := p_1(x) \cdot p_2(x) \cdots p_d(x)
  • Binius enables efficient SNARKs over binary fields
  • Fast commitment scheme + sumcheck based IOPs
  • Commitment part is so fast that sumcheck could become the bottleneck
  • We need sumcheck to prove (multilinear) polynomial relations like
  • Sumcheck round polynomial in round \(i\)
s_i(c) := \sum_{x \in \{0, 1\}^{\ell - i}} p(r_1, r_2, \dots, r_{i - 1}, c, x)
= \sum_{x \in \{0, 1\}^{\ell - i}} \prod_{j=1}^{d} p_j(r_1, r_2, \dots, r_{i - 1}, c, x)

Product of extension-field elements

Why Sumcheck over Binary Fields?

s_i(c) := \sum_{x \in \{0, 1\}^{\ell - i}} p(r_1, r_2, \dots, r_{i - 1}, c, x)
= \sum_{x \in \{0, 1\}^{\ell - i}} \prod_{j=1}^{d} p_j(r_1, r_2, \dots, r_{i - 1}, c, x)

Product of extension-field elements

Product of Linear Polynomials

  • Let \(f_1, f_2, \dots, f_d\) be linear polynomials s.t.
  • Using school-book multiplication
\implies (d - 1) \cdot 2^d \ \textsf{bb}

Efficient Product of Linear Polynomials

  • Degree of \(f\) is \(d\). To compute \(f(x)\):
    • Evaluate each \(f_j\) on \(d + 1\) points \(\{e_0, e_1, \dots, e_d\}\)
    • Compute point-wise multiplication on all \(d\) points to get \([f(e_0), \dots, f(e_d)]\)
\implies
\implies
\implies (d - 1) \cdot (d + 1) \ \textsf{bb}

Efficient Product of Linear Polynomials

Schoolbook method

Toom-Cook method

\implies (d - 1) \cdot (d + 1) \ \textsf{bb}
\implies (d - 1) \cdot 2^d \ \textsf{bb}

Efficient Product of Linear Polynomials

Schoolbook method

Toom-Cook method

Back to Sumcheck

\implies
\implies

Back to Sumcheck

\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
e_1[0]
e_1[1]
e_1[2]
e_1[3]
(d + 1)^t
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
e_1[0]
e_1[1]
e_1[2]
e_1[3]
(d + 1)^t
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
e_1[0]
e_1[1]
e_1[2]
e_1[3]
e_1[0]
e_1[1]
e_1[2]
e_1[3]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
e_1[0]
e_1[1]
e_1[2]
e_1[3]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
e_1[0]
e_1[1]
e_1[2]
e_1[3]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
\left[e_2[0] \ \dots \ e_2[2^{\frac{n}{2}}\right]
(d + 1)^{t-1}
e_1[4]
e_1[5]
e_1[6]
e_1[7]

Small-field Sumcheck - Journal Club

By Suyash Bagad

Small-field Sumcheck - Journal Club

  • 94