Skip to content
← Writing

DEEP Quotients over the Base Field

Keep STARK DEEP quotients over the base field by dividing by the minimal polynomial of the out-of-domain point instead of X − z, so base-field columns never touch extension-field arithmetic.

· 5 min read · STARKs, Extension Fields

Originally described here.

TL;DR. The DEEP quotient f(X)−f(z)X−z\frac{f(X) - f(z)}{X - z} drags every base-field column into extension-field arithmetic, because the pole zz lives in K\mathbb{K}. Replacing the single pole by its full Frobenius orbit — quotienting by the minimal polynomial mz∈F[X]m_z \in \mathbb{F}[X] instead of X−zX - z, and by the remainder r=f(modmz)r = f \pmod{m_z} instead of the scalar f(z)f(z) — keeps numerator, denominator, and quotient entirely over F\mathbb{F}. Proof size is unchanged, the verifier pays a few extra base multiplications per claim, and the prover’s quotient pass drops to base-field cost. The claim proven is the same claim, written F\mathbb{F}-rationally.

Setting

F\mathbb{F} a prime field, K/F\mathbb{K}/\mathbb{F} an extension of degree dd (Goldilocks: d=3d = 3), ω∈F\omega \in \mathbb{F} a primitive nn-th root of unity, D⊂FD \subset \mathbb{F} the LDE domain.

In a STARK, the prover constructs the polynomial

F(X)=∑j=1∣S∣∑i=1Msjϵ (∑k=1j−1Msk)+i−1⋅fi(X)−fi(ωsjz)X−ωsjz,F(X) = \sum_{j=1}^{|\mathcal S|} \sum_{i=1}^{M_{s_j}} \epsilon^{\,\left(\sum_{k=1}^{j-1}M_{s_k}\right)+i-1} \cdot \frac{f_i(X)-f_i(\omega^{s_j}z)} {X-\omega^{s_j}z},

where S={s1,…,s∣S∣}\mathcal S=\{s_1,\ldots,s_{|\mathcal S|}\} is an ordered set of integer offsets, z,ϵ∈Kz,\epsilon\in\mathbb K are verifier challenges, and fif_i are the committed columns, most of which are defined entirely over F\mathbb F.

Where the cost hides. The quotients are computed pointwise over DD. For x∈D⊂Fx \in D \subset \mathbb{F} the denominator x−zx - z is a full K\mathbb{K}-element, so every per-point operation is extension arithmetic even when both fi(x)f_i(x) and fi(z)f_i(z)‘s role could be played by base-field data. For a base-field column, the only genuinely K\mathbb{K}-valued ingredient is the pole. The following trick removes it.

The Trick

A point zz of degree dd over F\mathbb{F} is F\mathbb{F}-rationally inseparable from its Frobenius orbit {z,zp,…,zpd−1}\{z, z^p, \dots, z^{p^{d-1}}\}. The monic polynomial with exactly that root set,

mz(X)  =  ∏j=0d−1(X−zpj)  ∈  F[X],m_z(X) \;=\; \prod_{j=0}^{d-1} \big(X - z^{p^j}\big) \;\in\; \mathbb{F}[X],

is the minimal polynomial of zz: it has base-field coefficients, degree dd, and — being irreducible over F\mathbb{F} — no roots in F\mathbb{F}, so mz(x)≠0m_z(x) \neq 0 for every x∈Dx \in D. Quotient by the orbit instead of the point: the pole set is now Frobenius-stable, and the denominator is a base-field value everywhere on the domain.

The New Quotient

The scalar f(z)f(z) cannot be subtracted anymore: f−f(z)f - f(z) is not divisible by mzm_z. What replaces it is the remainder

r(X)=f(X)(modmz(X)),deg⁡(r)<d,r∈F[X],r(X) = f(X) \pmod{m_z(X)}, \quad \deg(r) < d,\quad r \in \mathbb{F}[X],

and it is worth holding three equivalent descriptions of it at once:

  1. The Euclidean remainder of ff by mzm_z.
  2. The value f(z)f(z), written in the basis {1,z,…,zd−1}\{1, z, \dots, z^{d-1}\}. Generically these powers are an F\mathbb{F}-basis of K\mathbb{K}; expand f(z)=r0+r1z+⋯+rd−1zd−1f(z) = r_0 + r_1 z + \dots + r_{d-1} z^{d-1} with rj∈Fr_j \in \mathbb{F}, and those coordinates are the coefficients of rr. Indeed f−rf - r then vanishes at zz; a polynomial over F\mathbb{F} vanishing at zz vanishes at the whole orbit (apply Frobenius), hence is divisible by mzm_z; uniqueness of remainders closes the loop.
  3. The unique interpolant of degree <d< d through the orbit values (zpj,f(z)pj)j<d\big(z^{p^j}, f(z)^{p^j}\big)_{j < d}.

Description 2 is the practical one: the prover never divides by mzm_z to obtain rr. It already holds v=f(z)v = f(z) from the evaluation phase; expressing vv in the basis {1,z,…,zd−1}\{1, z, \dots, z^{d-1}\} is one d×dd \times d base-field linear solve — the matrix depends only on the pole, so it is inverted once per opening point and reused across all columns.

It also shows the data is identical: rr is dd base-field elements, and so was f(z)∈Kf(z) \in \mathbb{K}. The prover sends the same number of field elements, in different coordinates. Proof size is unchanged.

Protocol Delta

For each base-field column ff and opening point zz:

  • Before: prover sends v=f(z)∈Kv = f(z) \in \mathbb{K}; the FRI polynomial contains f(X)−vX−z\dfrac{f(X) - v}{X - z}; the consistency check consumes vv directly.
  • After: prover sends r∈F<d[X]r \in \mathbb{F}^{<d}[X]; the FRI polynomial contains f(X)−r(X)mz(X)\dfrac{f(X) - r(X)}{m_z(X)}; the consistency check for x∈Dx \in D consumes r(x)r(x), which the verifier computes itself.

At a queried position x∈Dx \in D, the verifier’s local recomputation of the term is (f(x)−r(x))⋅mz(x)−1\big(f(x) - r(x)\big)\cdot m_z(x)^{-1}, one base-field inversion shared per point. Everything left of the ϵ\epsilon-fold is base-field; the fold itself is K×F\mathbb{K}\times\mathbb{F} scalar multiplications, which is the floor either way, since F(X)F(X) is K\mathbb{K}-valued regardless.

Columns genuinely over K\mathbb{K} (the stage-2 / auxiliary columns that absorb verifier challenges) keep the old quotient: their remainder and quotient would live in K\mathbb{K} anyway, and nothing is gained. The two kinds of terms coexist in the same ϵ\epsilon-fold.

Computing mzm_z

No search is needed: mzm_z is the conjugate product, and the Frobenius z↦zpz \mapsto z^p is a fixed F\mathbb{F}-linear map on K\mathbb{K} that can be hardcoded for the tower. Concretely, elementary symmetric functions of (z,zp,…,zpd−1)\big(z, z^p, \dots, z^{p^{d-1}}\big); for d=3d = 3, three conjugates, and mz(X)=X3−e1X2+e2X−e3m_z(X) = X^3 - e_1 X^2 + e_2 X - e_3 with e1=Tre_1 = \mathrm{Tr}-type sums that are automatically in F\mathbb{F}. Two remarks that tighten the linear-system presentation:

  • The degree ℓ\ell of mzm_z is [F(z):F][\mathbb{F}(z) : \mathbb{F}], which divides dd. For prime dd (Goldilocks cubic) the only possibilities are ℓ∈{1,d}\ell \in \{1, d\}: the intermediate systems have no solutions, and searching them is wasted work. ℓ=1\ell = 1 means z∈Fz \in \mathbb{F} (probability p1−dp^{1-d}, i.e. ≈2−128\approx 2^{-128} for d=3d = 3), where mz=X−zm_z = X - z and the construction degrades gracefully to the ordinary quotient.
  • The second pole is free: since ω∈F\omega \in \mathbb{F} is Frobenius-fixed, the orbit of ωz\omega z is ω\omega times the orbit of zz, so mωz(X)  =  ω d mz(X/ω),i.e. coefficient cj↦ω d−jcj.m_{\omega z}(X) \;=\; \omega^{\,d}\, m_z(X / \omega), \qquad \text{i.e. coefficient } c_j \mapsto \omega^{\,d-j} c_j . The shift lives in the pole, and the pole-thickening respects it.

When it Pays

The saving is proportional to the fraction of committed columns over F\mathbb{F}. In STARK today that is everything except the auxiliary trace — the stage-2 columns (grand products / logup accumulators) absorb K\mathbb{K}-challenges and stay on the old quotient.

Remark (generality). Nothing is specific to zz and ωz\omega z: the construction applies at any opening point, to any Frobenius-stable batch of points, and over any tower K/F\mathbb{K}/\mathbb{F} — the pole set just has to be closed under x↦xpx \mapsto x^p and disjoint from the LDE domain, both of which the conjugate orbit of an out-of-domain zz gives for free.

Break my circuit

You are the prover. The verifier doesn't run the program; it only checks the constraints. Each circuit here is missing one, which is the most common bug in real ZK systems. Find a witness that fools it.

circuit.circom

Public (verifier sees)

Witness (you choose)

Constraints · everything mod 97