BLS12-381 via blstrs. Single-threaded (8 threads for Golden [BCK25e]). Lower ⬇️ is better 👍.
blstrs
green = best in column, red = worst, yellow = in between.
Step 1. Sample a random polynomial of degree $t$:
Compute the $j$-th share of player $i$:
Step 2. Commit to the shares over $\Gr_2$ (Feldman-style):
Step 3. Split each share into $\term{m}$ chunks in base $\term{B} = 2^\term{\ell}$:
Step 4. Batched ElGamal encryption (share randomness across different players $i$):
If $\forall j$ we correlate $\sum_{k\in[m]} B^{k-1} r_{j,k} = 0$ , then $\sum_{k\in[m]} B^{k-1} \cdot C_{i,j,k} = \secret{s_{i,j}} \cdot G$ $\Rightarrow$ can check against $\V_{i,j} \bydef \s_{i,j}\cdot \G$ with pairings.
Step 5. Prove all chunks are $\ell$-bit via DeKART:
Step 6. Prove ElGamal plaintexts are KZG-committed in $C$ (see relation):
Return the transcript:
(1) SCRAPE low-degree test [CD17] on the $\V_{i,j}$'s $\Rightarrow$ shares lie on degree-$t$ polynomial
(2) Batch $e\left(\sum_k B^{k-1}\cdot C_{i,j,k}, \G\right) \overset{?}{=} e\left(G, \V_{i,j}\right)$ pairing checks:
(3) Verify DeKART range proof $\piRange$ and $\Sigma$-protocol proof $\piPoK$.
Round 1 (P$\to$V). Send bit oracles, each of degree $\lt n$: $$\term{f_j(X)} \bydef \sum_{i\in[n]} z_{i,j} \cdot \term{\L_i(X)} \Rightarrow f_j(\omega^i)=z_{i,j}$$
Key observation: $\mathcal{R}$ holds $\Leftrightarrow$ Two checks on $f$ and the $f_j$'s over all $X \in \{\omega^0, \ldots,\omega^{n-1}\}\bydef \term{\H}$.
Round 2 (V$\to$P). V samples $\term{\beta},\term{\beta_0},\ldots,\term{\beta_{\ell-1}}\randget\mathbb{F}$. P sends quotient oracle $\term{h(X)}$ s.t.
Query. V samples $\term{\gamma}\randget \F$, queries $f(\gamma),f_j(\gamma),h(\gamma)$, checks the batched identity above at $\gamma$.
ZK = hiding KZG with ZK openings [KT23e] + blind each $f_j$ + blind $f$; see alinush.org/dekart.
If Variant B/C renders the \htmlClass literal as text (or as plain "htmlClass…"), then MathJax 2 does not support it and we should stick with \class. If it renders the math correctly and the lines animate one by one, \htmlClass is supported.
\htmlClass
\class
Future work: