原文: https://ethresear.ch/t/2d-data-availability-with-kate-commitments/8081

我们可以使用 Kate 承诺来创建一个非常干净和简单的具有协作编码的 2D 数据可用性方案。(例如 $O(N^2)$ 数据可以由一个非常松散的集合编码 $N$ 参与者,每个参与者只做 $O(N*log(N))$ 工作)。

该方案的工作原理如下。假设你有 $N$ blobs $(D_1 \ldots D_n)$ 每个包含 $M$ 个块。blob 的提议者发布了对该 blob 的 Kate 承诺。块的提议者(例如 eth2 中的信标链块)对每个承诺运行数据可用性检查,并将 Kate 承诺包含在 blob 中 $(C_1 \ldots C_n)$ 在块中。然而,他们还使用拉格朗日插值来计算凯特承诺的低度扩展;也就是说,他们对待 $[C_1 \ldots C_n]$ 作为坐标处多项式的评估 $1 \dots n$ ,并计算坐标处的评估 $n + 1 \ldots 2 n$ .

称 $C_{n+1} \ldots C_{2n}$为扩展承诺,并且称$D_{n+1} \ldots D_{2n}$通过低次扩展生成的数据块,例如 $D_{n+1}[k]$将是 $[D_1[k],D_2[k]...D_n[k]]$ 的低次扩展。

因为评估和系数之间的转换以及就地多点评估是线性操作,你可以计算 $C_{n+1} \ldots C_{2n}$ 尽管事实上 $C_i$ 是椭圆曲线点。

因为 $C_i$ 在$D_i$中是线性的, (即 $comm(D_1+D_2)=comm(D_1)+comm(D_2)$ and $comm(D∗k)=comm(D)∗k$其中右侧的+和∗是椭圆曲线的加法和乘法。)所以我们得到两个很好的属性:

回顾一下:

这为我们提供了一个非常有效的协议来计算和发布整个扩展数据所需的条件。该设计将按如下方式工作: