Sumcheck is interactive protocol between prover P and verifier V. The prominent feature of the sumcheck protocol is to offload hard work of computing a sum to P. As described by J. Thaler in his [book](https://people.cs.georgetown.edu/jthaler/ProofsArgsAndZK.html) called "Proofs, Arguments, and Zero-Knowledge", the sumcheck protocol can be described as follows. **Setup:** * Let $g$ be n-variate polynomial of degree 3 defined over binary hypercube {0,1}^n^. * The protocol runs in n rounds. * The complexity of algorithm is logarithmic in terms of circuit size. **Round 0** At the start of the protocol, P sends a claimed answer C. **Round 1** P sends a polynomial S~1~(X) claimed to be equal $h_1(X) = \sum_{(x_2,\ldots,x_n)} g\bigl(X, x_2, \ldots, x_n\bigr)$ V performs round 1 consistency check C = S~1~(0) + S~1~(1) S~1~(0) is a first half of the terms S~1~(1) is the second half of the terms. If P is honest, this consistency check will pass. V would like to ascertain if $h_1(X)$ = $S_1(X)$ V picks random $r_1 \in$ F and sends it to P By Schwarz-Zippel Lemma, if $h_1(r_1)$ = $S_1(r_1)$ holds, then $h_1$ and $S_1$ are the same polynomials with a high probability. *Note* V can compute $S_1(r_1)$ on its own, but he has no idea what $h_1$ is. V can not compute $h_1(r_1)$ on its own. That is what the future rounds for. $h_1(r_1) = \sum_{(x_2,\ldots,x_n)} g\bigl(r_1, x_2, \ldots, x_n\bigr)$ In the second round apply sumcheck recursively to compute (n-1)-variate polynomial $g'\bigl(x_2, \ldots, x_n\bigr)$ = $g\bigl(r_1, x_2, \ldots, x_n\bigr)$ **Round 2** P sends a univariate polynomial $S_2(X)$ claimed to be equal $h_2(X) = \sum_{(x_3,\ldots,x_n)} g\bigl(r_1, X, x_3, \ldots, x_n\bigr)$ V performs round 2 consistency check $S_1(r_1)$ = S~2~(0) + S~2~(1) This check will pass if p is honest and $h_2(X)$ = $S_2(X)$ indeed holds. V picks random $r_2 \in$ F and sends it to P V checks if $h_2(r_2)$ = $S_2(r_2)$ In the next round apply sumcheck recursively to compute (n-2)-variate polynomial $g''\bigl(x_3, \ldots, x_n\bigr)$ = $g\bigl(r_1, r_2, x_3, \ldots, x_n\bigr)$ **Round i** P sends $S_i(X)$ to V to be claimed equal to $h_i(X)$ V checks S~i-1~(r~i-1~) = S~i~(0)+ S~i~(1) V picks r~i~ and send it to P V checks S~i~(r~i~) = h~i~(r~i~) **Final round n** P sends $S_n(X)$ claimed to be equal $h_n(X)$ = g(r~1~ ... r~n-1~,X) V performs final round n consistency check S~n-1~(r~n-1~) = S~n~(0) + S~n~(1) V picks random $r_n \in$ F and sends it to P V would like to ascertain if $S_n(r_n)$ = $h_n(r_n)$ Note, $h_n(r_n)$ = $g(r_1, r_2,...r_n)$ **Security assessment** Completeness: if P is honest, all consistency checks will pass Soundness error <= n*(3/|F|)